douba3378 2010-07-09 07:29
浏览 47
已采纳

PHP会话 - 用户登录后未存储

I am building a basic password protected area on my website and I have a login form.

<!-- 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");
?>
  • 写回答

2条回答 默认 最新

  • dongyuanguang3893 2010-07-09 07:30
    关注

    You have missed the session_start() at the top of your dologin.php. It is required at the top of each page before any output has started.

    Without session_start(); you won't have access to create or update a session variable (In your case $_SESSION['user'])

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

    Also - Another Helpful Tip:

    I noticed that you haven't got an exit(); after your header(); You will need this so that if the user refreshes the login.php after login the browser won't resubmit the posted data to dologin.php

    Also - Another Helpful Tip:

    You have

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

    You probably want

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

    You will want to show login form if there is no $_SESSION['user']

    So your final code would look like this:

    <!-- 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();
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路