each()函数已被弃用

问题描述 投票:0回答:1

我以前的联系表格在发送时显示这个错误。

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 = "[email protected]";

$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>";
    }
}
?>

我读了一些关于这个的变通方法,但都没有用。我想我在其中一行犯了一个错误......不知道是哪里......。

也许有人可以帮助我!

非常感谢!Alex

php foreach each
1个回答
1
投票

中的进一步调用时,该消息将被抑制。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";
    }
}

0
投票

该函数不再被支持。你可以在函数前面加上"@"来禁用这个警告。

更好的办法是使用一个替代函数,比如 foreach


0
投票

我用 "foreach "和 "current "代替了 "while "和 "each",但是没有用。


0
投票

我改了这一行。

while(list($Formularfeld, $Wert)=each($_POST) {

in

foreach(list($Formularfeld, $Wert)=current($_POST) {

但它不工作。

© www.soinside.com 2019 - 2024. All rights reserved.