Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据直接存储到mysql数据库,无需使用php设置任何验证_Php_Mysql_Validation - Fatal编程技术网

数据直接存储到mysql数据库,无需使用php设置任何验证

数据直接存储到mysql数据库,无需使用php设置任何验证,php,mysql,validation,Php,Mysql,Validation,我是php和mysql的新手。目前,我正在开发一个注册系统,使用php和mysql存储数据。所以我已经连接了数据库,我正在对用户填写的表单信息进行验证。我决定不使用html“必需”函数。但验证根本不起作用。尽管信息填写为空,但不会显示任何错误,但仍可以继续下一步并将信息插入数据库。任何帮助都将不胜感激,看看哪里出了问题 这是我的密码 <div id="content"> <form action="signup.php"method="POST">

我是php和mysql的新手。目前,我正在开发一个注册系统,使用php和mysql存储数据。所以我已经连接了数据库,我正在对用户填写的表单信息进行验证。我决定不使用html“必需”函数。但验证根本不起作用。尽管信息填写为空,但不会显示任何错误,但仍可以继续下一步并将信息插入数据库。任何帮助都将不胜感激,看看哪里出了问题

这是我的密码

<div id="content">
    <form action="signup.php"method="POST">
        <fieldset>
            <legend>Sign up your Watevershit account to unlock more shit!</legend>


            <p>
            <label>
                <span>Username :</span>
                <input type="text"name="username">
            </label>
            </p>

            <p><?php if(isset($errors['username1']) echo $errors['username1'])?></p>


            <p>
            <label>
              <span>Password</span>
              <input type="password"name="password">
            </label>
            </p>
            <p><?php if(isset($errors['password1']) echo $errors['password1'])?></p>

            <p>
            <label>
                <span>Confirm Password :</span><input type="password"name="password">
            </label>
            </p>

            <p>
            <label>
                <span>Email:</span>
                <input type="email"name="email">
            </label>
            </p>
            <p><?php if(isset($errors['email1']) echo $errors['email1'])?></p>

            <p>
            <label>
                <input type="submit"id="submit"value="Sign Up Now!">
            </label>
            </p>

            <p>
            <label>
                <span><a href="login.html">Already member?Log in here</a></span>
            </label>
            </p>
        </fieldset>

    </form>

</div>

注册你的Watevershit帐户以解锁更多狗屎!

用户名:

密码

确认密码:

电邮:

这是我的php脚本,我已经做了所有的验证,但它不工作,并将数据插入数据库,尽管表单没有填写任何内容。那么,这里怎么了

<?php
include ('config.php');

//declare variables
$username=$_POST['username'];
$password=$_POST['password'];
$email=$_POST['email'];

//define error variables
$usernameERR = $emailERR =$passwordERR="";
$username=$email=$password="";

    //validation

if ($_SERVER["REQUEST_METHOD"] == "POST"){
    //not empty
    //at least 3 characters long


    //start the validation

    //check the username
    if(empty($_POST['username'])){
        $errors['username1'] = "Required fields"
    }

    if (strlen($username) <3   ) {
        $errors['username2'] ="Username must at least 3 characrters long.";
        }

    //check the password
    if (empty($_POST['password'])){
        $errors['password1'] ="Required fields";
    }

    if (strlen($password) < 8) {
        $errors['password2'] = "Password must be 8 characrters long";
    }


    //check the email
    if (empty($_POST['email'])){
        $errors['email1'] = "Required fields";
    }

    if (strlen($email) < 12){
        $errors['email2'] ="Email must at least 12 characrters long";
    }

    //check the errors
    if(count($errors) == 0){
        //redirect to sucess page
        header('Location:login.html');
    }
}


// if all correct,insert data to the database

$query="INSERT INTO user(Username,Password,Email) VALUES ('".$_POST['username']."','".$_POST['password']."','".$_POST['email']."')";
mysqli_query($con,$query);


?>

试试这个..

    <?php        
    $errors=array();
    if ($_SERVER["REQUEST_METHOD"] == "POST"){
      $username=$_POST['username'];
    $password=$_POST['password'];
    $email=$_POST['email'];
        //not empty
        //at least 3 characters long


        //start the validation

        //check the username
        if(empty($_POST['username'])){
            $errors['username1'] = "Required fields";
        }

        if (strlen($username) <3   ) {
            $errors['username2'] ="Username must at least 3 characrters long.";
            }

        //check the password
        if (empty($_POST['password'])){
            $errors['password1'] ="Required fields";
        }

        if (strlen($password) < 8) {
            $errors['password2'] = "Password must be 8 characrters long";
        }


        //check the email
        if (empty($_POST['email'])){
            $errors['email1'] = "Required fields";
        }

        if (strlen($email) < 12){
            $errors['email2'] ="Email must at least 12 characrters long";
        }

        //check the errors
        if(count($errors) == 0){
            $query="INSERT INTO user(Username,Password,Email) VALUES ('".$_POST['username']."','".$_POST['password']."','".$_POST['email']."')";
mysqli_query($con,$query);

        }
    }
    ?>
    <div id="content">
        <form action="" method="POST">
            <fieldset>
                <legend>Sign up your Watevershit account to unlock more shit!</legend>


                <p>
                <label>
                    <span>Username :</span>
                    <input type="text"name="username">
                </label>
                </p>

                <p><?php if(!empty($errors['username1'])) { echo $errors['username1']; } ?></p>


                <p>
                <label>
                  <span>Password</span>
                  <input type="password" name="password">
                </label>
                </p>
                <p><?php if(!empty($errors['password1'])) { echo $errors['password1']; }?></p>

                <p>
                <label>
                    <span>Confirm Password :</span><input type="password"name="password">
                </label>
                </p>

                <p>
                <label>
                    <span>Email:</span>
                    <input type="email"name="email">
                </label>
                </p>
                <p><?php if(!empty($errors['email1'])) { echo $errors['email1']; }?></p>

                <p>
                <label>
                    <input type="submit"id="submit"value="Sign Up Now!">
                </label>
                </p>

                <p>
                <label>
                    <span><a href="login.html">Already member?Log in here</a></span>
                </label>
                </p>
            </fieldset>

        </form>

    </div>
替换此块:

//check the errors
if(count($errors) == 0){
    //redirect to sucess page
    header('Location:login.html');
}
为此:

//check the errors
if(count($errors) > 0){
    //redirect to sucess page
    header('Location:login.html');
}
并替换以下行:

if ($_SERVER["REQUEST_METHOD"] == "POST"){
与:


永远不要在数据库中存储没有散列和盐析的用户密码。你应该使用预先准备好的语句,而不是直接将值插入到查询中,如果没有,你至少应该转义这些值。好的..但是所有的验证在这里都不起作用是什么问题?我已经在这里用php脚本设置了所有的验证,但是没有一个显示出来。请帮忙@Tniese@t.niese-我同意,很好的建议。尽管如此,他还是有了一个良好的开端,并会随着时间的推移逐渐了解这些令人讨厌的安全问题。它将始终插入数据库,因为在调用
mysqli_query
header('Location:login.html')
时,您不会检查是否发生任何错误,它只会告诉浏览器进行重定向,查询仍将执行。@t.niese那么我如何检查该问题发生的任何错误??if/else语句来检查??或其他内容???我像您提供的那样更改块,它确实可以重定向到login.html..但是信息仍然无法验证,仍然可以直接存储到数据库。。
if ($_POST){