當我測試我的PHP聯繫表單時,我不斷收到「警告:爲第102行的foreach()提供的無效參數」消息。我最近重建了我的網站,但我使用的是我在舊網站上使用的完全相同的PHP聯繫人表單代碼,而舊網站的表單仍能正常工作。我已複製&一字不差,所以我不知道爲什麼我得到這個錯誤。任何幫助真的會被讚賞。PHP表單中的參數無效 - foreach()
這裏是我得到的(線102)假定錯誤的行:
foreach($errors as $value) {
這裏是整個表格的腳本(誤差線正好處於底部):
<?php
//
if(isset($_POST["submit"]))
{
//This is checking if the string length in the firstname field was greater than 1 character
if(strlen($_POST["firstname"]) > 1)
{
$firstname = $_POST["firstname"];
//echo $firstname;
}
else
{
//echo "You did not type in first name";
$errors["firstname"] = "<span class=\"error\">You did not type in a first name.</span>";
}
if(strlen($_POST["lastname"]) > 1)
{
$lastname = $_POST["lastname"];
}
else
{
$errors["lastname"] = "<span class=\"error\">You did not type in a last name.</span>";
}
if(strlen($_POST["email"]) > 1)
{
$email = $_POST["email"];
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
$email = $email;
}
else {
$errors["email"] = "<span class=\"error\">Email is invalid.</span>";
}
}
else
{
$errors["email"] = "<span class=\"error\">You did not type in an email address.</span>";
}
//This is checking if the string length in the message field was greater than 1 character
if(strlen($_POST["message"]) > 1)
{
$message = $_POST["message"];
//echo $firstname;
}
else
{
$errors["message"] = "<span class=\"error\">You did not type in a message.</span>";
}
// Code to tell form NOT to send form if there are any errors.
if($errors < 1)
{
$to = "[email protected]";
$from = $email;
// headers makes sure you have a reply-to address
$headers = "From: {$from}" . "\r\n";
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1';
$subject =
"From: ($from)" . "<br />" .
"First name: ($firstname)" . "<br />" .
"Last name: ($lastname)" . "<br />" .
"Email: ($email)" . "<br />" .
"Message: ($message)";
if(mail($to, $from, $subject, $headers))
{
$finalMsg = "<p class=\"success\">Thank you! Your email was sent.</p>";
}
else {
$finalMsg = "<p class=\"error\">Your email was NOT sent. Please try again.</p>";
}
}
?>
<?php
//each error is displayed
foreach($errors as $value) {
echo "<span>$value</span><br />";
}
}
?>
警告信息的措詞不夠清楚嗎? 「foreach」期望有一些數組,但它沒有得到一個。您可能沒有將'$ errors'初始化爲空數組,並且在沒有驗證錯誤時未定義它。 (另外,'$ errors <1'將不起作用...) – DCoder 2013-04-28 07:28:10
在頂部添加'$ errors = array();'也許?你在多個地方操作'$ errors',但不要告訴PHP它是一個數組。 – 2013-04-28 07:28:33
由於您是新手,請接受解決問題的答案(打勾)。向上(向上箭頭)提供您的信息或幫助您的答案。向下投票(向下箭頭)假的答案。 – Techie 2013-04-28 07:30:55