我需要PHP会话的帮助

我需要PHP会话的帮助,php,session,Php,Session,我想为每个用户创建一个个性化的仪表板,并创建了一个登录系统 我使用这段代码将不同的用户重定向到不同的页面,但无论用户名或密码是什么,它都会将我带入file1.php <?php session_start(); if ($_SESSION['username'] == "google") { header("location:file1.php"); } else if ($_SESSION['username'] == "apple") { header("locati

我想为每个用户创建一个个性化的仪表板,并创建了一个登录系统

我使用这段代码将不同的用户重定向到不同的页面,但无论用户名或密码是什么,它都会将我带入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");
}
?>


确保使用两个=符号。一个单独的赋值将与eval相反

另外,切换也会更好

开关($\会话['username']){
案例“谷歌”:
$file='file1.php';
中断;
案例“谷歌”:
$file='file2.php';
中断;
默认值:
$file='default.php';
中断;
}

标题(“位置:$file”);

确保使用两个=符号。一个单独的符号将赋值,而不是eval

另外,切换也会更好

开关($\会话['username']){
案例“谷歌”:
$file='file1.php';
中断;
案例“谷歌”:
$file='file2.php';
中断;
默认值:
$file='default.php';
中断;
}

标题(“位置:$file”)

您不需要
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.";
}
?>

您不需要
会话启动()吗

假设此代码位于单独的页面中

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

尝试打印会话变量。会话可能存在其他问题

<?= print_r($_SESSION['username']) ?>

尝试打印会话变量。会话可能存在其他问题

<?= print_r($_SESSION['username']) ?>

首先,您真的不应该在数据库中以明文形式存储密码。至少,
md5()

其次,您应该转义输入到SQL查询中的值(或者更好,如果您的服务器启用了MySQLi,则使用的预处理语句),以避免SQL注入


第三,调试语句创造了奇迹。您是否已尝试在条件设置之前立即打印出
$\u SESSION['username']
的值?我很难相信PHP的条件处理或相等测试会出错,因此出于某种原因,该值必须是“google”。我想你需要在你的代码中找到
$\u SESSION['username']
的分配,并找出原因。

首先,你真的不应该在数据库中以明文形式存储密码。至少,
md5()

其次,您应该转义输入到SQL查询中的值(或者更好,如果您的服务器启用了MySQLi,则使用的预处理语句),以避免SQL注入


第三,调试语句创造了奇迹。您是否已尝试在条件设置之前立即打印出
$\u SESSION['username']
的值?我很难相信PHP的条件处理或相等测试会出错,因此出于某种原因,该值必须是“google”。我认为您需要在代码中跟踪会话['username']
的分配,并找出原因。

在将用户名和密码放入会话之前,您应该调用会话启动()
,并且不应该使用会话注册()
(因为它已被弃用),只需像这样使用
$\u会话
全局

session_start();
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;

然后在下一页执行
start\u session()
var\u dump($\u session)
并且您可以查看会话中设置的内容

在将用户名和密码放入会话之前,您应该调用
会话_start()
,并且不应该使用
会话_register()
(因为它已被弃用),只需像这样使用
$\u会话
全局

session_start();
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;

然后在下一页执行
start\u session()
var\u dump($\u session)您可以看到会话中设置了什么

我看不出条件有任何错误。设置用户名的代码可以在不应该运行的时候运行吗?我不太清楚你的意思。下面是另一个代码-$connect=@mysql_connect($host,$username,$password)或die('error')$select=@mysql\u select\u db($db\u name,$connect)或die('check')$用户名=$_POST['username']$密码=$_POST['password']$sql=“从$tbl\U名称中选择*其中用户名='$username'和密码='$password'”$result=mysql\u查询($sql)$count=mysql\u num\u行($result);如果($count==1){session_register(“username”);session_register(“passsbrow”);header(“location:dashboard.php”)}或者{echo“username/Password”不匹配。请重试。“;}我希望它从我的数据库中检查用户名是否为apple,将其重定向到file1.php,如果google将其重定向到page2.php……您还需要验证输入,如果我输入bye怎么办;从tbl中删除用户名和密码;作为我的密码?我看不出条件有什么问题。设置用户名的代码可以在不应该运行的时候运行吗?我不太清楚你的意思。下面是另一个代码-$connect=@mysql_connect($host,$username,$password)或die('error')$select=@mysql\u select\u db($db\u name,$connect)或die('check')$用户名=$_POST['username']$密码=$_POST['password']$sql=“从$tbl\U名称中选择*其中用户名='$username'和密码='$password'”$result=mysql\u查询($sql)$count=mysql\u num\u行($result);如果($count==1){session_register(“username”);session_register(“passsbrow”);header(“location:dashboard.php”)}或者{echo“username/Password”不匹配。请重试。“;}我希望它从我的数据库中检查用户名是否为apple,将其重定向到file1.php,如果google将其重定向到page2.php……您还需要验证输入,如果我输入bye怎么办;从tbl中删除用户名和密码;作为我的密码?我插入了两个=符号。无论您的用户名是什么,您的代码都会将我带到default.php