douwei3172 2014-02-24 19:32
浏览 47
已采纳

PHP会话问题 - 检查登录

I'm relatively new to PHP, but I know quite a bit. I am making a login form and I am checking whether they are logged in before they can enter pages and if they are not, then they are redirected to the login page, I am using sessions. Every time that a user logs in or registers it creates a session using:

$_SESSION['username'] = '$username';

On every page that the user is not allowed to access, I include, checklogin.php - a file I made, with this code:

<?php
function checklogin() {
session_start();
if(!isset($_SESSION['myusername'])){
    return false;
    header('location: login.php');
} else {
    return true;
}
}

checklogin(); //checks login

?>

However it doesn't seem to be working as you can access pages when not logged in. Also, there is an if statement:

if(!isset($_SESSION['myusername'])){

This is used to determine what is shown in the header.

None of this is working, so what am I doing wrong? Any help would be greatly appreciated.

  • 写回答

2条回答 默认 最新

  • doucaishou0074 2014-02-24 19:35
    关注

    You need to put session_start() at the top-side of your PHP file, outside of the checkLogin() function. Session variables need to use the same name, so pick between "username" and "myusername". You also need to swap the order of your statements if the user isn't logged in:

     header('location: login.php');
     return false;
    

    The header call is never happening as the function returns before hand. You also do not need quotes around your variables, e.g. $_SESSION['username'] = $username; is correct, assuming $username is defined.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号