gpt4 book ai didi

PHP session - 登录后未存储用户

转载 作者:行者123 更新时间:2023-12-02 06:24:29 25 4
gpt4 key购买 nike

我正在我的网站上构建一个基本的密码保护区,并且我有一个登录表单。

<!-- 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");
?>

最佳答案

您错过了 dologin.php 顶部的 session_start()。在任何输出开始之前,每个页面的顶部都需要它。

如果没有 session_start();,您将无权创建或更新 session 变量(在您的情况下为 $_SESSION['user'])

session_start():http://php.net/manual/en/function.session-start.php

另外 - 另一个有用的提示:

我注意到你在 header(); 之后没有 exit(); 你需要这个,这样如果用户刷新 login.php登录后浏览器不会将发布的数据重新提交到 dologin.php

另外 - 另一个有用的提示:

你有

<?php if(!empty($_SESSION['user'])) { ?>

你可能想要

<?php if(empty($_SESSION['user'])) { ?> // No `!`

如果没有 $_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();
?>

关于PHP session - 登录后未存储用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3210631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com