Heim >Backend-Entwicklung >PHP-Tutorial >从测试环境移到正式环境后session没值

从测试环境移到正式环境后session没值

WBOY
WBOYOriginal
2016-06-23 14:14:43862Durchsuche

做了一个登陆页面,根据登陆状态在页面上方显示不同的布局。
登陆前

登陆后,根据session的值显示为

这都是测试环境的效果,运行没有问题。
但是我移到正式环境后,登陆过后,还是显示为第一张图片的样子,登陆和注册。

我实现的方法是在header.html里面嵌入php,根据session['username']是否有值来判断如何输出html代码。
session是在登陆界面,也就是login.php里面取值的。

<div id="top-menu"><?php	if(isset($_SESSION['username']))    {    	echo "<div id='account'>";        echo "<ul><li><a href='account.html' class='my-account'>我的帐号</a></li>";		echo "<li><a href='tools/logout.php' class='logout'>退出</a></li></ul></div>";    	echo "<div id='loggedas'>登录为 <a href='account.html'>".$_SESSION['username']."</a></div>";    }    else    {    	echo "<div id='account'>";        echo "<ul><li><a href='login.html' class='login'>登录</a></li>";		echo "<li><a href='register.html' class='register'>注册</a></li></ul></div>";    }?>


注:测试环境是XP,正式环境是server03.


回复讨论(解决方案)

没有看到 session_start();

还需要注意 session.cookie_path, session.cookit_domain 的配置是否正确,是否能保证SESSION ID cookie被正确读取。
以及 output_buffering 被关闭可能导致的ob_start()错误

还需要注意 session.cookie_path, session.cookit_domain 的配置是否正确,是否能保证SESSION ID cookie被正确读取。
以及 output_buffering 被关闭可能导致的ob_start()错误
; The path for which the cookie is valid.
session.cookie_path = /

; The domain for which the cookie is valid.
session.cookie_domain =
这两个值我都是用默认的,没有改过,但是两个环境都是这样的啊,一个能用,一个不能用。

dump下session的值看看

session.save_path

这个呢?还要确认这个路径有写入权限

我在每个php文件前面都加了session_start()后就好了,但是还是不知道为什么本地环境就只用在赋值的时候用一个就行了。

测试环境和正式环境的php配置是不是不一样,php.ini里面:

测试环境:
session.auto_start = 1
正式环境:
session.auto_start = 0

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn