我是一个PHP新手,需要帮助搞清楚如何在触发错误后才能显示我的表单错误。例如:表单在到达页面时看起来很正常。用户填写信息但忘记添加电子邮件并点击提交。我想要显示电子邮件错误。以下是我正在使用的代码。
附注:我设置了字段以在按下提交按钮时保留输入的信息。
<?php
$email = $_POST['email'];
$name = $_POST['name'];
$message = $_POST['message'];
$size = $_FILES['file']['size'];
$max_size = 34000000;
$file = $_FILES['file']['tmp_name'];
$filename = $_FILES['file']['name'];
$filetype = $_FILES['file']['type'];
$errors = array();
if (empty($email))
$errors[] = "Please provide an email.";
if (empty($name))
$errors[] = "Please provide your name.";
if (empty($filename))
$errors[] = "Please provide a file.";
if ($size > $max_size)
$errors[] = "Please choose a file under 30mb.";
if (sizeof($errors) > 0) {
foreach($errors as $error)
{
printf("<li>%s</li>", $error);
}
}
else {
mkdir('../uploads/' . $email . '|' . $name, 0777, true) . '/';
move_uploaded_file($file, '../uploads/' . '/'. $email . '|' . $name . '/' . $filename);
header ('Location: ../');
exit;
}
?>
我意识到这些错误现在正在检查简单的事情。我将来会让它们变得更加复杂;恩。在电子邮件地址中寻找“@”。
感谢您的帮助!
答案 0 :(得分:0)
PHP是一种服务器端脚本语言,因此在将表单提交给服务器之前,您无法检查表单是否存在错误。
但是,您还有其他选项来检查表单。
许多人在将表单提交给服务器进行进一步的PHP检查之前使用Javascript对表单进行预检查,您也可以使用AJAX(更多javascript)异步执行。
此处引用javascript表单验证:http://www.w3schools.com/js/js_form_validation.asp
<强>的Javascript 强>
function validateForm(){
var x=document.forms["myForm"]["email"].value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length){
alert("Not a valid e-mail address");
return false;
}
}
<强> HTML 强>
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm();" method="post">
Email: <input type="text" name="email">
<input type="submit" value="Submit">
</form>
注意&#34; onsubmit&#34;在表单字段中。当按下表单上的提交按钮时,调用函数validateForm(),如果表单没有错误,则它正常提交给PHP后端,如果它有错误,则用户被警告并且表单未提交。