php - 有没有办法使用存储在数据库中的信息来确定用户在登录时被发送到哪个网页?
问题描述
使用从教程站点收集的信息,我创建了一个网站让用户登录,当登录到帐户时,用户选择创建个人帐户或企业帐户。这些作为 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
解决方案
稍微扩展代码,以便我们可以看到发生了什么,并按照其他人的建议将 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 是否有任何错误。
推荐阅读
- reactjs - 反应谷歌条形图最大列限制?
- javascript - 无法读取未定义的属性“就绪”;区:
; 任务:Promise.then;值:TypeError:无法读取未定义的属性“就绪” - javascript - v-on 处理程序中的错误:“TypeError:无法读取未定义的属性'emailAddress'”VUEX
- excel - 来自聚合组的 Excel vlookup
- .net - Sql Query 检测撇号并返回错误
- jquery - Bootstrap Select Dropdown on change 打开另一个 Bootstrap Select Dropdown
- docker - 如何更改已创建的 docker 容器 Wildfly Server 的时区?
- css - 使用负百分比边距不覆盖父元素
- milo - Eclipse Milo:使用延续点读取历史
- azure-cosmosdb - CosmosDb Sql 查询匹配文档之间数组中的公共值