我有一个简单的身份验证:您登录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);
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>
它不起作用:即使数据是正确的,它仍然给我“访客”,会话变量在标题段落中丢失。如何来?
答案 0 :(得分:1)
解决:我在Windows下,临时文件夹的默认路径,其中php实际上保存了会话文件,是错误的:是“/ tmp”并且无法识别。 我将它设置为“C:\ php \ tmp”并且它有效:会话文件根本没有保存!
答案 1 :(得分:0)
写session_start();在一切之上(紧随其后)
<?php
session_start();
require_once("scripts/functions.php");
require_once("scripts/config.php");
?>
或者如果仍然不起作用,那么编写如下代码:
<?php
ob_start();
session_start();
require_once("scripts/functions.php");
require_once("scripts/config.php");
?>
另外,不要忘记将这两行放在login.php页面的顶部。 希望它有所帮助:)
答案 2 :(得分:0)
我猜在继续操纵if
的{{1}}语句后面还有更多代码。这就是为$_SESSION
分配$_SESSION['username']
值的地方。
请记住,'guest'
仅设置响应标头。 它不会立即重定向,停止脚本执行。
在header("Location: /home.php");
之后放置一个exit;
命令,以防止执行到达其余代码:
header()
答案 3 :(得分:0)
这对我有用:
session_save_path ( "" ) ;
session_start();