已解决:问题与 max_input_vars 有关。我使用的服务器有一个名为“Suhosin”的安全框架。有两个值的功能与设置为 1,000 的 max_input_vars 非常相似。值是“suhosin.post.max_vars”和“suhosin.request.max_vars”。我将这些设置为 5,000,现在一切正常!
---------------
我目前有一个页面,它使用 PHP 来显示一堆带有打印排序选项的图像,并且“while”循环直到显示每个图像。它工作正常,显示每个图像。用户应该选择他们想要打印的内容,然后单击“提交”。这通过页面 submit.php 发送表单。Submit.php 通过将数据存储在数组中来生成他们选择的列表。然后将该数组内爆并以文本形式通过电子邮件发送到地址。为每个图像提交四个数组条目。使用 $_POST 发送数据
现在,如果在第一页上选择的图像少于 250 个,则此功能完美。如果选择了 250 或更多,则 submit.php 页面将变为 Forbidden 错误页面并且不发送电子邮件。
我认为这是因为服务器将其视为无限循环,或者可能与它处理如此多的数组条目有关。我真的需要这个修复。有谁知道任何解决方案?
编辑 - 这是 submit.php 上的循环。我知道这可能不是最好的代码,我还在学习。
编辑 2 - 我尝试将 max_input_vars 更改为 5000,但没有成功。我将它添加到我的 PHP.ini 文件中,该行以前不存在。我无法重新启动服务器,因为它是共享主机。还有其他想法吗?
编辑 3 - 好的,已经取得了一些重大进展。我不再收到禁止页面,但是当循环高于 250 时电子邮件不会发送。它仍然在 < 250 时成功发送。
$imgcount = $_SESSION['imgcount'];
$usercode = $_SESSION['usercode'];
// echo $imgcount . "<br><br>";
$extramessage = $_POST["message"];
$currentcount = 1;
$completeorder = array();
while ($currentcount <= $imgcount) {
$x = $_POST["print_amount_" . $currentcount . ""];
// echo "<b><u>Image " . $currentcount . "</u></b><br>";
// echo $x[0] . ", " . $x[1] . ", " . $x[2] . ", " . $x[3] . ", " . "<br><br>";
$y = (string) "Image " . $currentcount . " - " . $x[0] . ", " . $x[1] . ", " . $x[2] . ", " . $x[3] . "
";
// echo $y;
$completeorder[] = $y;
// echo $completeorder . "<br><br>";
$currentcount = $currentcount + 1;
};
$completeorder = implode( "\n", $completeorder );