问题是,如何防止错误的数据进入mysql表。你能给我代码。还是逻辑。在插入查询执行之前?
答案 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应用程序的上下文中)
答案 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/