Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.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
Php 有没有办法使用数据库中存储的信息来确定用户登录时发送到的网页?_Php_Session - Fatal编程技术网

Php 有没有办法使用数据库中存储的信息来确定用户登录时发送到的网页?

Php 有没有办法使用数据库中存储的信息来确定用户登录时发送到的网页?,php,session,Php,Session,使用从a教程网站收集的信息,我创建了一个网站,让用户登录,当用户登录帐户时,选择创建个人帐户或商业帐户。它们作为UserType存储在mySQL数据库中 我遇到的问题是,当用户登录时,它根本没有读取用户类型。它一直直接进入else语句 <?php // Initialize the session session_start(); $username = $_SESSION['username']; $query = "SELECT UserType FROM `users` W

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

我遇到的问题是,当用户登录时,它根本没有读取用户类型。它一直直接进入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>";
            }

?>

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

<?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>";
}

?>

仔细阅读评论后,我找到了自己的答案


Typo:Double
=
危险:您正在使用的已从所有受支持的PHP版本中完全删除。您应该使用并升级到接收安全修复的PHP版本。
mysql\u fetch\u array
的结果始终是一个数组,因此它永远不会等于字符串。您的if语句逻辑不正确。请不要使用mysql_uu函数。它们已从PHP中删除。Mysqli非常相似。更改代码并更新答案。即使您指向的站点也使用mysqli。
<?php

// Initialize the session
session_start();

//echo $_SESSION['username'];
$username = $_SESSION['username'];

//echo $_SESSION['UserType'];
$UserType = $_SESSION['UserType'];


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

?>