验证文本框

时间:2014-03-12 15:59:25

标签: php html validation

我有一个标准的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>

3 个答案:

答案 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/