首页 > 解决方案 > 有没有办法使用存储在数据库中的信息来确定用户在登录时被发送到哪个网页?

问题描述

使用从教程站点收集的信息,我创建了一个网站让用户登录,当登录到帐户时,用户选择创建个人帐户或企业帐户。这些作为 UserType 存储在 mySQL 数据库中。

我遇到的问题是当用户登录时它根本没有读取 UserType。它一直直接进入 else 语句。

    <?php

// Initialize the session
session_start();
$username = $_SESSION['username'];
$query = "SELECT UserType FROM `users` WHERE `username' = '" . $username . "' LIMIT 1";

$result = mysql_query($query);
// Redirect to Correct Type of Account page
 if (($row = mysql_fetch_array($result))== "Personal") {
                echo "Personal";
                //echo "<script type='text/javascript'> document.location = 'personalInfo.php'; </script>";
            }
 else {
                echo "Other";
                //echo "<script type='text/javascript'> document.location = 'buisnessInfo.php'; </script>";
            }

?>

结果将是,如果用户在数据库中将“个人”作为他们的 UserType,那么他们将转到personalInfo.php 页面,如果没有,他们将被发送到另一个页面。现在他们会自动转到 buisnessInfo.php

标签: phpsession

解决方案


稍微扩展代码,以便我们可以看到发生了什么,并按照其他人的建议将 mysql 替换为 mysqli 库会产生所需的输出:

<?php

// Initialize the session
session_start();
$_SESSION['username'] = "Gregory";
echo $_SESSION['username'];
$username = $_SESSION['username'];

$mysqli = new mysqli("localhost", "my_user", "my_password", "test");

$query = "SELECT UserType FROM `users` WHERE `username` = '" . mysqli_real_escape_string($mysqli,$username) . "' LIMIT 1";

echo "<p>" . $query . "</p>";

$result = mysqli_query($mysqli, $query); 
// Redirect to Correct Type of Account page


$row = mysqli_fetch_array($result);
echo "<pre>";
print_r($row);
echo "</pre>";


if ( $row[0] === "Personal" ) {
    echo "Personal";
    //echo "<script type='text/javascript'> document.location = 'personalInfo.php'; </script>";
            }
 else {
     echo "Other";
     //echo "<script type='text/javascript'> document.location = 'buisnessInfo.php'; </script>";
 }


// or, you can swap the $row[0] with the associative array key $row['UserType']:

if ( $row['UserType'] === "Personal" ) {
    echo "Personal";
    //echo "<script type='text/javascript'> document.location = 'personalInfo.php'; </script>";
}
else {
    echo "Other";
    //echo "<script type='text/javascript'> document.location = 'buisnessInfo.php'; </script>";
}

?>

最后,我输出查询字符串,以便我可以在 PhpMyAdmin 的 SQL 对话框中测试它,看看我的 sql 是否有任何错误。


推荐阅读