为什么数据库在注册后没有返回有关用户的数据?

时间:2016-08-01 00:24:50

标签: php mysql sql database login

我最近学会了如何使用PHP和MYSQL创建登录系统。我决定为我的网站制作一个。用户使用电子邮件,密码,名字和姓氏进行注册。我想问一个问候语"我的问候,"然后他们的名字。我可以在会话中保存名称,但我想知道为什么我的方法不能完全正常工作。注册后,每次都有效。这是完整的注册码:

$error = "";

include("loginsession.php");


    if(array_key_exists("id", $_SESSION)){

        header("Location: index.php");

    }

if(array_key_exists("submit", $_POST)){

    include("connection.php");//database connection



    $email = $_POST['email'];

    $password = $_POST['password'];

    $firstName = $_POST['firstname'];

    $lastName = $_POST['lastname'];

    $query = "SELECT * FROM users WHERE email='".mysqli_real_escape_string($link, $email)."'";

    $result = mysqli_query($link, $query);

    if(mysqli_num_rows($result) > 0){

        $error =  "<div class='alert alert-danger' role='alert'><strong>Error:<br><br></strong>This email already exists.<hr></div>";

    }else{

        $query = "INSERT INTO users(firstname, lastname, email, password) VALUES('".mysqli_real_escape_string($link, $firstName)."', '".mysqli_real_escape_string($link, $lastName)."', '".mysqli_real_escape_string($link, $email)."', '".mysqli_real_escape_string($link, $password)."')";

        mysqli_query($link, $query);

        $query = "UPDATE users SET password = '".md5(md5(mysqli_insert_id($link)).$password)."' WHERE id=".mysqli_insert_id($link)."";

        mysqli_query($link, $query);


    $_SESSION['id'] = mysqli_insert_id($link);//where the issue originates
    if(isset($_POST['check']) && $_POST['check']=='true'){

        setcookie("id", mysqli_insert_id($link), time() + 60*60*24*365);

    }
    header("Location: index.php");

    }        

}

在索引页面上,我就是这样做的:

    session_start();
    if(array_key_exists('id', $_COOKIE)){

        $_SESSION['id'] = $_COOKIE['id'];   

    }


    $greeting = "";

        if(array_key_exists('id', $_SESSION)){

            include("connection.php");//just the login to the database

            $query = "SELECT * FROM users WHERE id = ".$_SESSION['id'];

            $results = mysqli_query($link, $query);

            $row = mysqli_fetch_array($results);

        $greeting = "My greetings, ".$row['firstname']." ".$row['lastname'];//add name to greeting variable

        }

后面的代码:

<p id="greeting">
    <?php echo $greeting; ?>
</p>

正确的名称在登录后显示,但从未在注册后显示,即使我重新加载页面也是如此。什么显示而不是&#34;我的问候,名字姓氏&#34;是&#34;我的问候,&#34;。就像数据库找不到该特定id的名称一样。

如何在注册后立即获得正确的结果。如果您需要注册或登录过程中的任何其他代码,请告诉我,我会发布它。如果有人想亲自尝试,我的网站是here

1 个答案:

答案 0 :(得分:1)

我没有测试你的代码,但我认为这是因为在注册之后会话还没有开始。尝试在第一个代码的第一行添加session_start();