【发布时间】:2012-03-13 18:21:50
【问题描述】:
我正在运行一个登录脚本,根据谁登录我重定向到两个页面之一
如果我指向位于主目录下方的目录中的页面一切正常,但是如果我指向位于 index.php 文件所在目录之上的页面,会话信息似乎会丢失并要求用户再次登录
我知道我可以简单地将第二页放在主目录下方的目录中,但我想了解在指向主目录上方的页面时是否可以维护会话信息
用户转到一个名为 login.html 的页面,当他们在那里输入信息时,他们被发送到 login.php,这是重定向发生的地方
if ($username==$dbusername&&$password==$dbpassoword)
{
if($admin == "1"){
header('location: http://www.edit.domain_name.co.uk/');
$_SESSION['username']=$username;
$_SESSION['id']=$id;
}else{
header('location: /member');
$_SESSION['username']=$username;
$_SESSION['id']=$id;
}
}
我已将session_start (); 放在用户需要登录才能访问的每个页面的开头。任何意见都会受到极大的欢迎
登录脚本的完整代码是
<?php
session_start () ;
$username = $_POST['username'] ;
$password = $_POST['password'] ;
################# ADMIN OR NOT ###################################################
include_once "mysql/global.php";
$result = mysql_query("SELECT admin FROM users WHERE username = '$username'");
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
$row = mysql_fetch_row($result);
$admin = $row[0];
################# ###############################################################
if ($username&&$password)
{
include "mysql/global.php";
$query = mysql_query("SELECT * FROM users WHERE username='$username'") ;
$numrows = mysql_num_rows($query) ;
if ($numrows!=0)
{
while ($row = mysql_fetch_assoc($query) )
{
$dbusername = $row['username'] ;
$dbpassoword = $row["password"] ;
}
// check to see if they match!
if ($username==$dbusername&&$password==$dbpassoword)
{
if($admin == "1"){
session_start();
header('location: http://www.edit.domin_name.co.uk/admin');
$_SESSION['username']=$username;
$_SESSION['id']=$id;
}else{
session_start();
header('location: /member');
$_SESSION['username']=$username;
$_SESSION['id']=$id;
}
}
else
echo "<center>incorrect password!</center>" ;
}
else
die ("<center>That user does not exist!</center>") ;
}
else
echo ("<center>Please enter a username and password</center><br/>") ;
die ("<a href=\"index.php\"><center><b>Click here to try again</b></center></font>");
?>
【问题讨论】:
-
与您的问题无关,但您有很多事情要做:
"SELECT admin FROM users WHERE username = '$username'"。您真的想使用准备好的语句或 mysql_real_escape_string。
标签: php