Php 会话不被维护
我有一个简单的身份验证:您登录login.php页面,然后重定向到home.php页面 这是login.php的代码:Php 会话不被维护,php,Php,我有一个简单的身份验证:您登录login.php页面,然后重定向到home.php页面 这是login.php的代码: if(pg_num_rows($rs) == 0){ //I search in db for a row with username and password $errMess = "error"; pg_close($conn); }else{ $row = pg_fetch_row($rs); se
if(pg_num_rows($rs) == 0){ //I search in db for a row with username and password
$errMess = "error";
pg_close($conn);
}else{
$row = pg_fetch_row($rs);
session_start();
$_SESSION['username']=$_POST["nick"];
$_SESSION['admin'] = $row[0];
pg_close($conn);
header("Location: /home.php");
}
现在在家里,我用这种方式完成了标题:
<?php require_once("scripts/functions.php");
require_once("scripts/config.php");
session_start();
?>
<div id="siteHeader" class="headersLeft"><?php echo WELCOME;?></div>
<div id="userContainer" class="headersRight">
Logged as: <?php echo getDisplayName(); ?>
<?php if(isset($_SESSION['username'])) {?>
<button class="button" onclick="location.href='/logout.php';">logout</button>
<?php }else{ ?>
<button class="button" onclick="location.href='/login.php';">login</button>
<?php }
?>
</div>
记录为:
注销
登录
它不起作用:即使数据正确,它仍然给我“guest”,会话变量在标题段中丢失了..为什么?Write session_start();最重要的是(紧接着
或者,如果仍然无法工作,则按如下方式编写代码:
<?php
ob_start();
session_start();
require_once("scripts/functions.php");
require_once("scripts/config.php");
?>
另外,不要忘记将这两行放在login.php页面的顶部。
希望有帮助:)写会话_start();最重要的是(紧接着
或者,如果仍然无法工作,则按如下方式编写代码:
<?php
ob_start();
session_start();
require_once("scripts/functions.php");
require_once("scripts/config.php");
?>
另外,不要忘记将这两行放在login.php页面的顶部。
希望它能有所帮助:)我猜在继续操纵会话的
$的if
语句之后还有一些代码。这就是$\u会话['username']
被分配'guest'
值的地方
记住,标题(“Location:/home.php”)代码>仅设置响应标题。它不会立即重定向,停止脚本执行
放置退出按钮在header()后面紧跟code>命令,以防止执行到达代码的其余部分:
header("Location: /home.php");
exit;
我猜在继续操作会话
$的if
语句之后还有一些代码。这就是$\u会话['username']
被分配'guest'
值的地方
记住,标题(“Location:/home.php”)代码>仅设置响应标题。它不会立即重定向,停止脚本执行
放置退出按钮在header()后面紧跟code>命令,以防止执行到达代码的其余部分:
header("Location: /home.php");
exit;
已解决:我在windows下,php实际保存会话文件的临时文件夹的默认路径错误:为“/tmp”,无法识别。
我将它设置为“C:\php\tmp”,它成功了:会话文件根本没有保存 已解决:我在windows下,php实际保存会话文件的临时文件夹的默认路径错误:为“/tmp”,无法识别。
我将它设置为“C:\php\tmp”,它成功了:会话文件根本没有保存 这对我很有用:
session_save_path ( "" ) ;
session_start();
这对我很有用:
session_save_path ( "" ) ;
session_start();
您在会话中存储了多少数据?如果超过了限制,那就是你的问题。在你的代码中设置断点,试着了解哪部分出错了。一个好的开始是看看什么var_dump(pg_num_rows($rs)==0)代码>输出。在session\u start()
之前是否有任何输出?身份验证很好:它会将我带到home.php页面,因此num\u rows会给出正确的输出。我认为这与会话有关。如果将session\u start()
放在每个文件的开头,会发生什么?会话中存储了多少数据?如果超过了限制,那就是你的问题。在你的代码中设置断点,试着了解哪部分出错了。一个好的开始是看看什么var_dump(pg_num_rows($rs)==0)代码>输出。在session\u start()
之前是否有任何输出?身份验证很好:它将我带到home.php页面,因此num\u rows提供正确的输出。我认为这与会话有关。如果放置session\u start(),会发生什么
在每个文件的开头?请注意:如果将文件保存为带有BOM标记的UTF-8,即使是第二个文件也会失败。如果这就是问题所在,如果显示错误,OP应该会收到“headers ready sent”(标题已发送)错误。请注意:如果将文件保存为带有BOM标记的UTF-8,即使第二个也会失败。如果这是问题所在,如果显示错误,OP应该会收到“headers ready sent”错误。如果您解释了如何更改它,那就太好了:)如果您解释了如何更改它,那就太好了:)