PHP服务器端验证(调用不同的页面)


PHP Serverside validation (calling a different page)

在服务器端验证PHP表单的正确方法是什么?网络上有很多例子表单的动作是自己的,但如果表单的动作是另一个。php文件呢?

例如,我在page1.php上有一个form元素。这个表单的动作是page2.php。我知道如何在客户端验证这一点,但如何在此表单上放置服务器端验证?

始终在服务器端进行验证。客户端验证只是为了响应;服务器端实际上有助于保护您的服务器免受攻击,并有助于确保您的存储机制/脚本操作中的数据有效性。

page2.php上,设置页面首先验证(可能与function validateData()),并根据结果,显示一个错误和(可选)后退按钮到page1.php。否则(else),执行脚本应该执行的任何操作。

的例子:

<?php
function validateMyForm(&$data) {
    $errors = array();
    $data['name'] = strip_tags($data['name']);
    if (!is_string($data['name']) || strlen($data['name']) < 3 || strlen($data['name']) >20) {
        $errors[] = 'Name field must be provided (3-20 characters)';
    }
    return $errors;
}
$errors = validateMyForm($_POST);
if (count($errors)) {
    echo "
<h1>Form Errors</h1>
<ul>
<li>
";
    echo implode('</li><li>',$errors);
    echo '
</li>
</ul>
<p><a href="javascript:history.back()">Go back</a></p>
';
} else {
    // do form stuff
}
?>

如果我的表单的动作是另一个。php文件怎么办?

容易。把它做成表单本身。