-3
我正在做一个家庭作业任务,其中涉及使用PHP验证表单。作业要求我通过switch语句来做到这一点,但我遇到了问题。我不知道我要去哪里错了,所以我要包括所有的PHP代码:PHP中的表单验证 - switch语句
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
$firstname = $_POST["firstname"];
$lastname = $_POST["lastname"];
$street = $_POST["street"];
$city = $_POST["city"];
$state = $_POST["state"];
$zip = $_POST["zip"];
$email = $_POST["email"];
$payment = $_POST["payment"];
$storeNV = array("firstname" => "", "lastname" => "", "street" => "", "city" => "", "state" => "", "zip" => "",
"email" => "", "payment" => "");
$inputNames = array_keys($storeNV);
foreach ($inputNames as $name) {
$storeNV[$name] = "$_POST[$name]";
}
foreach ($storeNV as $name => $value) {
if (isset($value) == false OR $value == "") {
$blankError = "Something was left blank!";
print "<h1>$blankError</h1>";
break; #just one error message
}
}
switch ($name) {
case 'firstname' :
if (empty($storeNV[firstname)) {
$fnameError = "Required field";
break;
}
case 'lastname' :
if (empty($storeNV[lastname])) {
$lnameError = "Required field";
break;
}
case 'street' :
if (empty($storeNV[street])) {
$streetError = "Required field";
break;
}
case 'city' :
if (empty($storeNV[city])) {
$cityError = "Required field";
break;
}
case 'state' :
if (!preg_match("/^[A-ZA-Z]*$/", trim($value))) {
$stateError = "Standard state abbrieviations only";
break;
}
case 'zip' :
if (!preg_match("/^[0-9]{5}*$/", trim($value))) {
$zipError = "Standard 5-digit zip codes only";
break;
}
case 'email' :
if (!filter_var($storeV[email], FILTER_VALIDATE_EMAIL)) {
$emailError = "Invalid email";
break;
}
case 'payment' :
if (empty($storeNV[payment])) {
$paymentError = "Please select one";
break;
}
}
?>
的错误消息,然后用更多的PHP插入HTML这样的:
<span class="error"><?php echo $fnameError;?></span>
的问题是,当我尝试运行表单验证,我得到这些一堆:
Notice: Undefined variable: fnameError
我想我的地方去错在switch语句中,可能的情况下,语法,但我我一直在盯着你这足以让我觉得自己无法想象。
以及之前存在,你得到的错误告诉你,你在验证firstName时没有错误(因为你没有设置它)。但总体来说你的问题是什么? – Jeff
如果你有错误,你可能应该先检查,如果你有任何错误,只尝试显示它们。我将它们推入一个数组'valErrors'并检查该数组的长度。 – Jeff
以及为什么你检查两次,如果这些值是空的? – Jeff