未保存PHP会话
我的会话不起作用。每次我重新加载页面时,它都会生成一个新的会话id并删除 所有会话变量。。我不确定我的代码或配置中是否有错误。 我使用Mac上的MAMP作为PHP5.2.17的本地服务器软件 每个php文件首先都包含layout_top.php。 layout_top每次都会启动会话:未保存PHP会话,php,session,mamp,Php,Session,Mamp,我的会话不起作用。每次我重新加载页面时,它都会生成一个新的会话id并删除 所有会话变量。。我不确定我的代码或配置中是否有错误。 我使用Mac上的MAMP作为PHP5.2.17的本地服务器软件 每个php文件首先都包含layout_top.php。 layout_top每次都会启动会话: <?php session_start(); ?> 编辑2: Strict Standards: session_start() [function.session-st
<?php
session_start();
?>
编辑2:
Strict Standards: session_start() [function.session-start]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CET/1.0/no DST' instead in /Applications/MAMP/htdocs/network/layout_top.php on line 6
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /Applications/MAMP/htdocs/network/layout_top.php:1) in /Applications/MAMP/htdocs/network/layout_top.php on line 6
Strict Standards: session_start() [function.session-start]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CET/1.0/no DST' instead in /Applications/MAMP/htdocs/network/layout_top.php on line 6
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /Applications/MAMP/htdocs/network/layout_top.php:1) in /Applications/MAMP/htdocs/network/layout_top.php on line 6
为什么你要回答这么多问题。。。试试这个
$query = mysql_query("SELECT * FROM user WHERE username = '$username'") or die(mysql_error());
while($row = mysql_fetch_array($first_name_query))
{
if (!isset($_SESSION['username'])) {
$_SESSION['username'] = $row['username'];
}
if (!isset($_SESSION['first_name'])) {
$_SESSION['first_name'] = $row['first_name'];
}
if (!isset($_SESSION['second_name'])) {
$_SESSION['second_name'] = $row['second_name'];
}
if (!isset($_SESSION['id'])) {
$_SESSION['id'] = $row['id'];
}
if (!isset($_SESSION['gender'])) {
$_SESSION['gender'] = $row['gender'];
}
}
我将不建议您在会话中保存多个数据。。只需在会话变量中保存userid
,因为会话变量保存在服务器上,所以它会在服务器上加载
如果您的会话目录(最像您所说的/tmp)不可写,那么它将无法保存,并且每次都必须重新生成一个新目录。以下是您可以验证它的方法:
如果(!可写(会话保存路径()){
回显“会话保存路径”。会话保存路径()不可写;
}
如果不可写,请更改目录权限
对于时区错误。。
请看这个链接。。您需要设置默认时区
对于已发送的标题错误,请检查
那么你就完了……)
如果您需要进一步的指导,请告诉我。您确定“layout_top.php”确实包含在内吗?可能是路径问题,如果您使用include
而不是require
,并且禁用了error\u reporting
,则可能会发生此问题,因为包含失败将导致警告,而不是错误,并且不会显示警告消息
请在
session\u start
之后的版面中添加一行内容,如下echo“hello!session start!”
查看会话是否已启动,或者只是使用require
而不是include
,因此如果找不到文件,您的脚本将因致命错误而死亡。这是一种模糊的回答,但有时可能会有所帮助
不要通过包含layout_top.php在每个文件上使用
sesison\u start()
。尝试在第一次加载时启动会话,然后避免再次调用session\u start()
。好的,这很有意义!但这并不能解决我的问题。如果我重新加载页面,会话将消失,我不知道原因。我从不在所有包含的文件中使用destroy_session和unset。。只是在一个log-out.php上,但这应该不是问题,因为这是一个不同的文件。。我认为问题在于MAMP的配置,但我找不到任何东西db_connect.php中没有任何内容,并且它是可写的,因此这不可能是问题putini_set('display_errors','on');错误报告(-1)
在代码顶部。。。请将以下代码放入layout_top.php中:在浏览器中仅访问layout_top.php,并检查每次mysql_*()
API被弃用时,您是否获得相同的会话id。请改用MySQLi或PDO_MySQL扩展。我知道。。我刚开始学习php,所以我将在不久的将来学习它!但感谢您告诉我:)您的时区严格标准警告将文本输出到屏幕,这将导致会话开始失败,因为…无法发送会话cookie-已由发送的标头(输出开始于…
Strict Standards: session_start() [function.session-start]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CET/1.0/no DST' instead in /Applications/MAMP/htdocs/network/layout_top.php on line 6
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /Applications/MAMP/htdocs/network/layout_top.php:1) in /Applications/MAMP/htdocs/network/layout_top.php on line 6
Strict Standards: session_start() [function.session-start]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CET/1.0/no DST' instead in /Applications/MAMP/htdocs/network/layout_top.php on line 6
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /Applications/MAMP/htdocs/network/layout_top.php:1) in /Applications/MAMP/htdocs/network/layout_top.php on line 6
$query = mysql_query("SELECT * FROM user WHERE username = '$username'") or die(mysql_error());
while($row = mysql_fetch_array($first_name_query))
{
if (!isset($_SESSION['username'])) {
$_SESSION['username'] = $row['username'];
}
if (!isset($_SESSION['first_name'])) {
$_SESSION['first_name'] = $row['first_name'];
}
if (!isset($_SESSION['second_name'])) {
$_SESSION['second_name'] = $row['second_name'];
}
if (!isset($_SESSION['id'])) {
$_SESSION['id'] = $row['id'];
}
if (!isset($_SESSION['gender'])) {
$_SESSION['gender'] = $row['gender'];
}
}