PHP表单错误仅在触发时显示

时间:2014-01-15 00:03:53

标签: php forms

我是一个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;
}
            ?>

我意识到这些错误现在正在检查简单的事情。我将来会让它们变得更加复杂;恩。在电子邮件地址中寻找“@”。

感谢您的帮助!

1 个答案:

答案 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后端,如果它有错误,则用户被警告并且表单未提交。