如何登记表数据输出到当前页面和其它页面?(How to output registration fo

2019-10-20 19:05发布

正如丝毫不差说,我怎么输出登记表格数据到当前页面(form.php的)和另一页(profile.php)如果提交的表单数据已成功与验证? 我一直在试图寻找如何做到这一点,但找不到任何有用的东西。 我试图改变到profile.php,我要显示用户的数据的动作,但是当我这样做,我不能在我的表单页面显示错误。

基本上,我想如果用户的输入不正确,将显示在表格中的错误,一旦他正确地填写了一切,并提交表单,我想数据显示给他的个人资料(profile.php)。 就像如果我做<?php echo $_POST['username']?>在profile.php,我想显示在profile.php他的用户名。 有没有办法做到这一点? 我仍然是一种新的这个...

有什么我应该添加或改变? 我不知道我怎样才能将数据输出到profile.php

这里是我的代码:

<?php
    error_reporting(E_ERROR | E_WARNING | E_PARSE);
    require 'core.inc.php';
    require 'connect.inc.php';

    if(count($_POST) > 0){
        $username = $_POST['username'];
        $email = $_POST['email'];
        $password = $_POST['password'];
        $password_hash = md5($password);
        $age = $_POST['age'];
        $gender = $_POST['gender'];

        $validated = true;

        if(!preg_match("/^[a-zA-Z ]*$/",$username)){
            $usernameErr = " Only letters and white space allowed";
            $validated = false;
        } else if(empty($username)){
            $usernameErr = ' Enter your username';
            $validated = false;
        }

        if(strlen($username)>30){
            $error = 'Please ahear to maxlength of fields.';
        }

        if(empty($password)){
            $passErr = ' Enter your password';
            $validated = false;
        }

        if (!empty($email) && !filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $emailErr = " Invalid email";
            $validated = false;
        } else if(empty($email)){
            $emailErr = ' Enter your email';
            $validated = false;
        }

        if(empty($gender)){
            $genderErr = ' Select your gender';
            $validated = false;
        }

        if(empty($age)){
            $ageErr = ' Select your age';
            $validated = false;
        }

        if($validated === true){
            $query = "SELECT `username` FROM `users` WHERE `username`='$username'";
                $query_run = mysql_query($query);

                if(mysql_num_rows($query_run)==1){
                    $error = 'The username already exists.';
                } else {
                    $query = "INSERT INTO `users` VALUES ('','".mysql_real_escape_string($username)."','".mysql_real_escape_string($password_hash)."','".mysql_real_escape_string($email)."')";
                    if ($query_run = mysql_query($query)){
                        header('Location: register_success.php');
                    } else {
                        $error = 'Sorry, we couldn\'t register you at this time. Try again later.';
                    }
                }   
        }
    }
?>
<!doctype html>
<html>
<head>
<style>
form{
    margin: 0px auto;
    width: 470px;
    margin-top:150px;
}
label{
     width: 75px;
    display: inline-block;
}
.error{
    color: red;
}
</style>
</head>
<body>
    <span class="error"><?php echo $error?></span>
    <br><br>
    <form action="register.php" method="POST" autocomplete="off">
        <h2>Register</h2>
        <label for="username">Username</label>
            <input type="text" id="username" name="username" maxlength="50" value="<?php if(isset($username)){echo $username;}?>">
            <span class="error"><?php echo $usernameErr?></span>
            <br><br>
        <label for="password">Password</label>
            <input type="password" id="password" name="password">
            <span class="error"><?php echo $passErr?></span>
            <br><br>
        <label for="email">Email</label>
            <input type="email" id="email" name="email" maxlength="30" value="<?php if(isset($email)){echo $email;}?>">
            <span class="error"><?php echo $emailErr?></span>
            <br><br>
        <label>Gender</label>
            <input type="radio" name="gender" id="male" value="male">Male
            <input type="radio" name="gender" id="female" value="female">Female
            <span class="error"><?php echo $genderErr?></span>
            <br><br>
        <label>Age</label>
            <select name="age" class="age">
                <option value> </option>
                <option value="18">18</option>
                <option value="19">19</option>
                <option value="20">20</option>
                <option value="21">21</option>
                <option value="22">22</option>
                <option value="23">23</option>
                <option value="24">24</option>
                <option value="25">25</option>
                <option value="26">26</option>
                <option value="27">27</option>
                <option value="28">28</option>
                <option value="29">29</option>
                <option value="30">30</option>
            </select>
            <span class="error"><?php echo $ageErr?></span>
            <br><br>
        <input type="submit" value="Register">
    </form>
</body>
</html>

Answer 1:

也许我不理解的问题。 你有一个脚本,register_success.php。 如果你想显示注册成功后profile.php的信息,只是改变了位置profile.php而不是register_success.php。 然后,如果有错误,它会继续加载form.php的,如果没有,它会去profile.php。 没有?



Answer 2:

数据持久

HTTP是一个无状态的协议,所以它不会记得在不同请求的信息。 为了显示的登录信息,您将需要保留此信息。 你有INSERT INTO说法确实已经使所有你需要你的个人资料页上做的是检索数据库中的信息,并使用SELECT SQL语句显示。

认证

你还需要知道从你的数据库以检索该用户记录。 这通常是通过问你的凭据,用户(例如他的电子邮件地址和他的口令)来完成。 在此基础上,可以验证是否有这些证书的用户,然后获取相应的数据。 你可能想尝试一个PHP登录系统教程比如这个: http://www.phpeasystep.com/phptu/6.html 。

编辑 :您还应该确保你保持你的形式同步与您的SQL INSERT语句。 你的用户名,电子邮件,密码,性别和年龄的形式,但只有用户名,电子邮件地址和密码在你的INSERT语句,性别和年龄将不会被添加到您的数据库和数据不会被记住。



文章来源: How to output registration form data to the current page and another page?