我有一个标准的html表单。然而,人们通过在文本框中键入缩短的URL来找到解决方法。我怎样才能以简单的方式验证它。感谢。
代码:
<form action="register.php" method="POST">
Firstname: <br> <input type="text" name="Firstname" value="<?php echo $Firstname; ?>"><br><br>
Surname: <br> <input type="text" name="Surname" value="<?php echo $Surname; ?>"><br><br>
Email Address: <br> <input type="text" name="Email" value="<?php echo $Email; ?>"><br><br>
Username: <br> <input type="text" name="Username" value="<?php echo $Username; ?>"><br><br>
Password: <br> <input type="password" name="Password"><br><br>
Password Again: <br> <input type="password" name="password_again"><br><br>
<input type="submit" value="Register"></form>
答案 0 :(得分:0)
如果它破坏了系统,最好的办法是在register.php中在服务器端进行验证。您可以添加JavaScript,但有人可以简单地将其关闭,或以其他方式避免,并且您遇到同样的问题。如果它对系统有影响,则必须进行服务器端验证。
答案 1 :(得分:0)
php有一个很棒的原生函数叫做filter_var http://php.net/filter_var
有很多验证过滤器http://www.php.net/manual/en/filter.filters.validate.php
我会运行FILTER_VALIDATE_URL并查看用户是否正在提交网址,如果是,则返回错误。
EDIT;请求示例代码
<?
function isUrl($var) {
return (filter_var($var, FILTER_VALIDATE_URL)) ? true : false;
}
if($_POST) {
$error = false;
$err_msg = '';
//get variables safely
$Firstname = isset($_POST['Firstname']) ? $_POST['Firstname'] : '';
$Surname = isset($_POST['Surname']) ? $_POST['Surname'] : '';
$Email = isset($_POST['Email']) ? $_POST['Email'] : '';
$Username = isset($_POST['Username']) ? $_POST['Username'] : '';
$Password = isset($_POST['Password']) ? $_POST['Password'] : '';
$Password_again = isset($_POST['Password_again']) ? $_POST['Password_again'] : '';
//null checks
if($Firstname == '' || $Surname == '' || $Email == '' || $Username == '' || $Password == '' || $Password_agin == '') {
$error = true;
$err_msg = 'Missing required values';
}
//password match
if($Password != $Password_again) {
$error = true;
$err_msg = 'Passwords do not match';
}
//email validity
if(filter_var($Email, FILTER_VALIDATE_EMAIL) == false) {
$error = true;
$err_msg = 'Invalid email';
}
//url checks
if(isUrl($Firstname) || isUrl($Surname) || isUrl($Username)) {
$error = true;
$err_msg = 'Urls are not allowed';
}
//final step
if(!$error) {
//save info to db
} else {
die($err_msg);
}
} else {
die('nothing sent');
}
?>
这假设了一些事情。你将需要处理&#34; die&#34;上下文自己。 希望有所帮助!
答案 2 :(得分:0)
最好的办法是同时进行Javascript验证和服务器端验证
Javascript验证是即时的,可以帮助验证表单,而无需重复调用您的服务器,但Matt说它可以关闭或搞砸。
服务器端验证是更安全的验证,但它在资源上更重,如果你不得不重复调用则更慢
这就是为什么两者兼顾的好处 - 验证客户端,一旦通过验证服务器端
关于简单javascript验证的示例教程:http://www.elated.com/articles/form-validation-with-javascript/