2012-03-20 37 views
1

当有人在我的网站上登录时,它会输出仅供该用户使用的信息等。但是有一个问题,因为它似乎不承认不同的用户。如果我登录两个用户在网站上,第一个会成为第二个......这是我在每个页面单独会话

?php 
session_start(); 

require_once 'loginDetails.php'; 
$db_server = mysql_connect("$db_hostname", "$db_username", 
"$db_password"); 

if (!$db_server) die("Unable to connect to MySQL: " . mysql_error()); 

mysql_select_db($db_database) 
or die("Unable to select database: " . mysql_error()); 

if (isset($_SESSION['username'])) 
{ 
    $user = $_SESSION['username']; 
    $query = mysql_query("SELECT * FROM cssh_students_table WHERE StudentUserName = '$user'"); 
    $query1 = mysql_fetch_row($query); 
    $course = $query1[10]; 
    $year = $query1[6]; 
    $email = $query1[4]; 
    $loggedin = TRUE; 
} 
else 
{ 
$loggedin = FALSE; 
} 

if ($loggedin == FALSE) 
{ 
session_unset(); 
session_destroy(); 
header('Location: ../index.html'); 
} 
?> 
+0

该问题更可能是由于日志记录页面。你应该添加它。 – 2012-03-20 18:30:42

+1

希望你完全没有一个用户名是'O'Brien'的用户。 – 2012-03-20 18:32:13

+0

你是在一个浏览器中测试这个吗? PHP会话使用Cookie,因此每个浏览器只能有一个会话。 – flo 2012-03-20 18:33:50

回答

0

session_destroy()的起始码不能保证杀死你的会话cookie。您的问题可能是因为您的原始会话Cookie仍然存在。

看到这个related question.

其他(不相关)

做一个SELECT *,然后访问使用整数索引的结果是不好的做法,最终将导致你的问题有一天当数据库结构改变。 SELECT您需要的项目,或使用mysql_fetch_assoc并按名称访问值。

0

可以有很多解决方案。

对于我们来说,我们需要在开发中做这样的事情。对于我们想要打开的每个用户,我们使用匿名浏览器窗口。另一种解决方案可能是为每个想要登录的用户使用不同的域名(使用dns通配符)。