PHP简单表单验证
好的,我想实现的是一个非常简单的表单验证,如下所示PHP简单表单验证,php,validation,Php,Validation,好的,我想实现的是一个非常简单的表单验证,如下所示 名称:[必需,最小长度:2,最大长度:255] 电子邮件:[必填,最小长度:3,最大长度:255,有效电子邮件格式] 出生日期:[可选,格式:dd/mm/yyyy] 但是,一旦我单击submit(如果字段为空或已填充),我会在空白页面上显示所有回显错误 “名称必须至少为2个字符需要名称电子邮件必须至少为3个字符有效电子邮件不能为空” 到目前为止,我的代码是: index.php 姓名: 电邮: 出生日期: 及 confirm.php 非
姓名:
电邮:
出生日期:
及
confirm.php
非常感谢您的帮助。在检查第一个和第二个错误后,您没有写任何东西使其停止 另外,
continue
在if
语句中没有意义(请参阅)
最后,页面是“空白”的,因为没有HTML输出,只有文本。您可能希望返回带有错误消息的表单页面
$name = $_POST['$name'];
$email = $_POST['$email'];
$dob = $_POST['$dob'];
那是错误的,你必须使用
$name = $_POST['name'];
$email = $_POST['email'];
$dob = $_POST['dob'];
另外,您可能需要更改线路
$namelen = strlen($email);
到
您的代码中包含以下内容:
$name = $_POST['$name'];
$email = $_POST['$email'];
$dob = $_POST['$dob'];
您基本上是在尝试访问未定义的索引。从密钥名称中删除额外的$
:
$name = $_POST['name'];
$email = $_POST['email'];
$dob = $_POST['dob'];
然后,在下面,您有一些类似的条件:
if(condition == true) {
continue;
} else {
// do something
}
实际上不需要,您可以将其更改为:
if(!condition) {
// do something
}
此外,最好将错误消息推送到一个数组($errors
)中,然后在其中循环并显示错误消息。这可能有助于更好地组织代码
下面是修改后的代码的外观:
if(!empty($_POST)) {
$name = $_POST['name'];
$email = $_POST['email'];
$dob = $_POST['dob'];
$namelen = strlen($name);
$emaillen = strlen($email);
$max = 255;
$minname = 2;
$minemail = 3;
if($namelen < $minname){
$errors[] = "name must be at least 2 characters";
} elseif($namelen > $max){
$errors[] = "name must be less than 255 characters";
}
if($emaillen < $minemail){
$errors[] = "email must be at least 3 characters";
} elseif($emaillen > $max){
$errors[] = "email must be less than 255 characters";
}
if(empty($name)){
$errors[] = "name is required";
}
if(empty($email)){
$errors[] = "email cannot be left empty";
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
$errors[] = "invalid email";
}
echo "<ul>";
foreach ($errors as $error) {
echo "<li>$error</li>";
}
echo "</ul>";
}
if(!empty($\u POST)){
$name=$_POST['name'];
$email=$_POST['email'];
$dob=$_POST['dob'];
$namelen=strlen($name);
$emaillen=strlen($email);
$max=255;
$minname=2;
$minemail=3;
如果($namelen<$minname){
$errors[]=“名称必须至少包含2个字符”;
}elseif($namelen>$max){
$errors[]=“名称必须少于255个字符”;
}
如果($emaillen<$minemail){
$errors[]=“电子邮件必须至少包含3个字符”;
}elseif($emaillen>最大值$max){
$errors[]=“电子邮件必须少于255个字符”;
}
if(空($name)){
$errors[]=“名称是必需的”;
}
如果(空($email)){
$errors[]=“电子邮件不能为空”;
}
如果(!filter_var($email,filter_VALIDATE_email)){
$errors[]=“无效电子邮件”;
}
回声“”;
foreach($errors作为$error){
回显“- $error
”;
}
回声“
”;
}
它仍然可以改进,但是,这应该让您开始 检查是否(!empty($\u POST[fieldname]))
然后重定向它,在javascript中显示一个警告,指出字段为空在检查第一个和第二个错误后,您没有编写任何东西使其停止。您试图用这些
继续代码>语句?重新提交问题。如果字段为空,则回显“某物”,否则继续。在检查第一个和第二个错误后,如何使其停止?非常感谢。你有鹰眼,我看了好几遍,没有发现$namelen
if(condition == true) {
continue;
} else {
// do something
}
if(!condition) {
// do something
}
if(!empty($_POST)) {
$name = $_POST['name'];
$email = $_POST['email'];
$dob = $_POST['dob'];
$namelen = strlen($name);
$emaillen = strlen($email);
$max = 255;
$minname = 2;
$minemail = 3;
if($namelen < $minname){
$errors[] = "name must be at least 2 characters";
} elseif($namelen > $max){
$errors[] = "name must be less than 255 characters";
}
if($emaillen < $minemail){
$errors[] = "email must be at least 3 characters";
} elseif($emaillen > $max){
$errors[] = "email must be less than 255 characters";
}
if(empty($name)){
$errors[] = "name is required";
}
if(empty($email)){
$errors[] = "email cannot be left empty";
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
$errors[] = "invalid email";
}
echo "<ul>";
foreach ($errors as $error) {
echo "<li>$error</li>";
}
echo "</ul>";
}