Liz*_*ard 2 php forms session login
我正在我的网站上建立一个基本的密码保护区域,我有一个登录表单.
<!-- login.php -->
<?php
session_start();
?>
<?php if(!empty($_SESSION['user'])) { ?>
<form>
<input type="text" name="username" />
<input type = "password" name = "password" />
<input type="submit" value = "login" />
<input type="hidden" name="token" value="KdasS2wFgw24F7hh" />
</form>
<?php } else { ?>
You are already logged in.
<? } ?>
<!-- dologin.php -->
<?php
$allowed = //sql checking db
if($allowed > 0) {
$_SESSION['user'] = $row['user_id'];
}
header("Location: login.php");
?>
Run Code Online (Sandbox Code Playgroud)
你错过了你的顶部的session_start()dologin.php.在任何输出开始之前,需要在每页的顶部.
没有session_start();你将无权创建或更新会话变量(在你的情况下$ _SESSION ['user'])
session_start():http://php.net/manual/en/function.session-start.php
另外 - 另一个有用的提示:
我注意到,你没有一个exit();你之后header();你需要这一点,以便在用户登录后刷新login.php中的浏览器不会重新提交发布数据dologin.php
另外 - 另一个有用的提示:
你有
<?php if(!empty($_SESSION['user'])) { ?>
Run Code Online (Sandbox Code Playgroud)
你可能想要
<?php if(empty($_SESSION['user'])) { ?> // No `!`
Run Code Online (Sandbox Code Playgroud)
如果没有$ _SESSION ['user'],您将需要显示登录表单
所以你的最终代码看起来像这样:
<!-- login.php -->
<?php
session_start();
?>
<?php if(empty($_SESSION['user'])) { ?>
<form>
<input type="text" name="username" />
<input type = "password" name = "password" />
<input type="submit" value = "login" />
<input type="hidden" name="token" value="KdasS2wFgw24F7hh" />
</form>
<?php } else { ?>
You are already logged in.
<? } ?>
<!-- dologin.php -->
<?php
session_start();
$allowed = //sql checking db
if($allowed > 0) {
$_SESSION['user'] = $row['user_id'];
}
header("Location: login.php");
exit();
?>
Run Code Online (Sandbox Code Playgroud)