我正在尝试为我的网站设置一个登录系统,需要用户登录才能发布内容。我已经使用会话(session)进行了设置,在本地主机上运行得很好,但在服务器上却不能正常工作。我在一些页面上设置了print_r(session)来查看数据丢失的位置。在checklogin.php页面上,也就是当有人登录时运行的页面,它可以正常工作。以下是其中的一些代码:
<?php
session_name('login_session');
session_start();
mysql_connect("localhost","root","root") or die(mysql_error());
mysql_select_db("date_ideas") or die(mysql_error());
$uname=$_POST['uname'];
$uname=mysql_real_escape_string($uname);
$pass=$_POST['pass'];
$pass=mysql_real_escape_string($pass);
$pass=md5($pass);
$query="SELECT * FROM users WHERE uname='$uname' AND pass='$pass'";
$result=mysql_query($query) or die(mysql_error());
$numrows=mysql_num_rows($result);
echo $numrows;
if ($numrows==1)
{
$_SESSION['login']="1";
$_SESSION['uname']=$uname;
echo "<script type='text/javascript'>alert('match');</script>";
print_r($_SESSION);
}
else
{
$_SESSION['login']="";
echo "<script type='text/javascript'>alert('Invalid Login');</script>";
echo "<script type='text/javascript'>window.location = 'login.php?uname=$uname'</script>";
}
?>
当我提交正确的登录信息时,警告框弹出并且打印返回:
数组([login] => 1 [uname] => FrizbeeFanatic14)
所以在这个点上它是有效的。然而,当我转到主页面时,打印变成了:
数组()
因此它已经丢失了会话信息。以下是主页面的代码:
<?php
session_name('login_session');
session_start();
?>
<html>
<head>
<title>Great Date Ideas</title>
<link rel="stylesheet" type="text/css" href="mainstyle.css" />
<script type="text/javascript" src="validate.js"></script>
<script type="text/javascript" src="cookiecheck.js"></script>
</head>
<body onload="checkCookie()">
<script type="text/javascript">
if (detect=false)
{
document.write("You must enable cookies to view this page.");
window.stop();
document.execCommand('Stop');
}
</script>
<div id="home"><?php require("header.php");?></div>
<?php
print_r($_SESSION);
mysql_connect("localhost","root","root") or die(mysql_error());
mysql_select_db("date_ideas") or die(mysql_error());
$result=mysql_query("SELECT * FROM ideas ORDER BY post_date DESC") or die(mysql_error());
虽然接下来的内容比较长,但是它能够正常工作。
所以所有这些代码在我的本地主机上都可以正常运行,但是在服务器上我会遇到这个错误。
if (detect=false)
中使用两个等号而不是一个。 - emco