【问题标题】:The each() function is deprecated [duplicate]不推荐使用 each() 函数[重复]
【发布时间】:2020-09-13 02:27:27
【问题描述】:

我的旧联系表在发送时显示此错误:

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /kunden/273982_79100/webseiten/kontakt/index.php on line 126

这是联系表单的 PHP 代码:

<?php
$Empfaenger = "mail@mailinfo.com";

$headers .= "Content-Type: text/plain; charset = \"UTF-8\";\n";
$headers .= "Content-Transfer-Encoding: 8bit\n";
$headers .= "\n";

if($_POST['Send']) {
    if(empty($_POST['vornameundnachnachme']) || empty($_POST['adresse']) || empty($_POST['plzort']) || empty($_POST['email']) || empty($_POST['betreff']) || empty($_POST['datenschutz'])) {
        echo"<p style='margin-top: 40px;'><div id='alert'>Ihre Online-Anfrage wurde nicht versendet.<ul style='margin-bottom: 0px;'><li>rot markierte Felder müssen ausgefüllt werden</li></ul></div></p>";
    } else {
        $Mailnachricht = "Question \n\n";
        while(list($Formularfeld, $Wert)=each($_POST) {
            if($Formularfeld!="Send") {
                $Mailnachricht .= $Formularfeld.": ".$Wert."\n";
            }
        }
        $Mailnachricht .= "\nDatum/Zeit: ";
        $Mailnachricht .= date("d.m.Y H:i:s");
        $Mailbetreff = "Anfrage";
        $Mailbetreff .= $_POST['Emailadresse'];
        mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_POST['Emailadresse']);
        echo"<p style='margin-top: 40px;'><div id='sent'><h2><i class='fal fa-thumbs-up'></i> Gesendet!</h2></div></p>";
    }
}
?>

我已经阅读了一些解决方法,但对我没有任何帮助。我想我在其中一条线中犯了一个错误……不知道在哪里……

也许有人可以帮助我!

非常感谢! 亚历克斯

【问题讨论】:

  • 您能分享您尝试过的解决方法吗?
  • 这不是一个错误,它是一个警告,在 PHP 的未来版本中您的代码可能无法工作,目前它应该可以工作。 while(list($Formularfeld, $Wert)=each($_POST) { 行是引发警告的行,因为您在那里使用了 each() 函数。查看以下Workarounds 解释您尝试过哪些变通方法以及为什么它们不起作用。

标签: php foreach each


【解决方案1】:

不再支持该功能。您可以在函数前使用“@”禁用警告。

最好使用像 foreach 这样的替代函数

【讨论】:

    【解决方案2】:

    list($Formularfeld, $Wert)=each($_POST) 是一个过时的结构,不应再使用 - 我只能假设您在某个地方找到了一个非常古老的教程。

    正确的方法是预处理 $_POST 全局并用它创建一个适当的数组,然后使用 foreach 遍历它

    foreach($_POST as $formularfeld => $wert) {
        $mailinfo[$formularfeld] = $value; //Do NOT forget validation here, huge security problem
    }
    

    这样,我们就有了一个名为$mailinfo 的漂亮数组,我们可以稍后使用,如下所示:

    foreach($mailinfo as $formularfeld => $wert) {
        if($formularfeld != "Send") {
            $Mailnachricht .= $formularfeld.": ".$wert."\n";
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-05-13
      • 2012-11-14
      • 2019-08-08
      • 2013-02-25
      • 2012-07-19
      • 2018-09-07
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      相关资源
      最近更新 更多