在PHP中进行表单验证

时间:2011-01-11 05:17:29

标签: php validation

问题是,如何防止错误的数据进入mysql表。你能给我代码。还是逻辑。在插入查询执行之前?

3 个答案:

答案 0 :(得分:2)

假设您的表单中有一个名为“submit”的提交按钮和一个名为“yourname”的输入字段,您可以执行以下操作。所有这些代码都在同一个文件中。

<?php
//Form submitted
if(isset($_POST['submit'])) {
  if(!isset($_POST['yourname'])) {
    //Form field 'yourname' didn't have a value
    $error['yourname'] = "<p>Please provide your name.</p>\n";
  } else {
    //Field 'yourname' had a value, check other things
    //Your other checks here (optional)
  }

  //No errors, process form
  if(!is_array($error)) {
    //Process your form

    //Done processing
    echo "<p>Information saved.</p>";
    exit;
  }
}
?>
<form method="post" action="<?=$_SERVER['PHP_SELF']?>">
  <?=$error['yourname']?>
  <p><label for="yourname">Name:</label><input type="text" id="yourname" name="yourname" value="<?=htmlspecialchars($_POST['yourname'])?>" /></p>
  <p><input type="submit" name="submit" value="Submit" />
</form>

答案 1 :(得分:1)

我喜欢使用的方法是这个(这是在MVC应用程序的上下文中)

  1. 视图中的表单设置为POST回自己的URL。
  2. 当控制器收到POST请求时,执行验证。如果未找到错误,则会执行相关操作,然后将HTTP重定向发送回浏览器以将其发送到正确的“成功”页面。
  3. 如果验证失败,则显示原始表单,每个字段显示输入的数据。无效字段显示错误消息。

答案 2 :(得分:1)

这取决于您希望验证的紧密程度。

Sintaxis非常直白:

$var = function_that_cleans_any_input($_POST['input_name']);

通常验证函数return false是否输入错误,因此如果需要该字段,则可以使用以下条件:

if(!$var){
     die("The input is not valid");
} 

对于安全问题,在将用户插入数据库之前,您应始终使用来自用户的字符串,这可以使用mysql_real_scape_string来防止名为mysql injection的攻击非常常见并且非常危险

如果你知道你正在验证的字段有一个特定的格式我建议你验证,例如邮件或网址,有一个filter功能非常容易使用,可以帮助你。

如果输入是一个int,小块蛋糕,请使用类型转换$validated = (int)$input;并且这样做,但如果它是一个日期,那么你就是来自php的本地checkdate函数。

正如您所看到的,总有一个功能可以节省一天的时间,如果您在验证某些内容时遇到问题,请务必仔细调查,如果您没有找到,请自行设置验证功能。

这是一个可能有用的链接:http://hungred.com/useful-information/php-form-validation-snippets/