我想为每个用户创建一个个性化的仪表板,并创建了一个登录系统。
我正在使用此代码将不同用户重定向到不同的页面,但无论用户名或密码是什么,都会将我带入file1.php。
<?php
session_start();
if ($_SESSION['username'] == "google") {
header("location:file1.php");
}
else if ($_SESSION['username'] == "apple") {
header("location:page2.php");
}
else {
header("location:default.php");
}
?>
此处,Apple和Google是用户名。
以下是设置会话数据的代码。
$connect = @mysql_connect ($host, $username, $password) or die ('error');
$select = @mysql_select_db($db_name, $connect) or die('check');
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM $tbl_name WHERE username='$username' and password='$password' ";
$result = mysql_query($sql);
$count = mysql_num_rows($result);
if($count==1) {
session_register("username");
session_register("passsword");
header("location:dashboard.php");
} else {
echo "Username/Password does not match. Try Again.";
}
<?php
$host = "localhost";
$username = "USERNAME OF PHPMYADMIN";
$password = "PASS OF PHPMYADMIN";
$db_name = "membership";
$tbl_name = "users";
$connect = @mysql_connect ($host, $username, $password) or die ('error');
$select = @mysql_select_db($db_name, $connect) or die('check');
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM $tbl_name WHERE username='$username' and password='$password' ";
$result = mysql_query($sql);
$count = mysql_num_rows($result);
if($count==1) {
session_register("username");
session_register("passsword");
header("location:dashboard.php");
}
else
{
echo "Username/Password does not match. Try Again.";
}
?>
这是我正在使用的其他代码。
答案 0 :(得分:3)
您在查询用户名的页面上不需要session_start();
吗?
假设此代码位于单独的页面中。
<?php
session_start();
$connect = @mysql_connect ($host, $username, $password) or die ('error');
$select = @mysql_select_db($db_name, $connect) or die('check');
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM $tbl_name WHERE username='$username' and password='$password' ";
$result = mysql_query($sql);
$count = mysql_num_rows($result);
if($count==1) {
session_register("username");
session_register("passsword");
header("location:dashboard.php");
} else {
echo "Username/Password does not match. Try Again.";
}
?>
答案 1 :(得分:1)
确保你使用两个=符号。一个人将分配而不是eval。
也会切换更好
开关($ _SESSION ['username']){
案件'谷歌':
$文件= 'file1.php';
打破;
案件'谷歌':
$文件= 'file2.php';
打破;
默认:
$文件= '如default.php';
打破;
}
header(“location:$ file');
答案 2 :(得分:0)
尝试在会话变量上执行print_r,可能会出现其他会话问题。
<?= print_r($_SESSION['username']) ?>
答案 3 :(得分:0)
首先,你真的不应该以明文形式在数据库中存储密码。至少,md5()
他们或其他什么。
其次,你应该转义你放入SQL查询的值(或者更好的是,使用MySQLi的预准备语句,如果你的服务器启用了MySQLi),以避免SQL注入。
第三,调试语句确实很奇怪。您是否尝试在有条件之前立即打印出$_SESSION['username']
的值?我很难相信PHP的条件处理或相等测试会搞砸,因此由于某种原因,值必须是“google”。我认为您需要在代码中跟踪$_SESSION['username']
的分配,以尝试找出原因。
答案 4 :(得分:0)
在将用户名和密码放入会话之前,您应该调用session_start()
,并且不应该使用session_register()
(因为它已被弃用),只需使用$_SESSION
全局,如此< / p>
session_start();
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;
然后在下一页上执行start_session()
和var_dump($_SESSION);
,您可以看到会话中设置的内容