簡體   English   中英

PHP會話丟失頁面之間的數據

[英]PHP session losing data between pages

我正在嘗試為我的網站設置一個登錄系統,該系統要求有人登錄才能發布。 我已經用會話設置了它,它在我的本地主機上很好用,但是在服務器上卻沒有。 我在某些頁面上設置了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>";
}
?>

當我提交具有良好登錄信息的表單時,彈出警報並返回打印:

數組([登錄] => 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());

它繼續進行,但是接下來的工作正常。

因此,所有這些代碼都可以在我的本地主機上正常工作,但是在服務器上卻收到此錯誤。

我唯一遇到類似問題的時間是,當我在轉到另一個頁面(從www.mydomain.commydomain.com以及其他方法)時不小心更改了域名時。

您可以使用session_set_cookie_params()在不同的子域之間保留會話:

session_name('login_session');
session_set_cookie_params(0, '/', '.mydomain.com');
session_start();

編輯:也許這可以幫助您:一篇非常有趣的文章: PHP會話調試

我發現了問題-PHP會話的保存目錄是一個Apache根目錄,而我正在運行nginx fastcgi。 我只是更改了該文件夾的root權限,並且它可以工作。 非常感謝您的所有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM