Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP会话问题-检查登录_Php_Forms_Function_Session_Login - Fatal编程技术网

PHP会话问题-检查登录

PHP会话问题-检查登录,php,forms,function,session,login,Php,Forms,Function,Session,Login,我对PHP比较陌生,但我知道很多。我正在制作一个登录表单,在他们可以进入页面之前,我正在检查他们是否已登录,如果他们没有登录,那么他们将被重定向到登录页面,我正在使用会话。用户每次登录或注册时,都会使用以下方式创建会话: $_SESSION['username'] = '$username'; 在每个不允许用户访问的页面上,我都包括checklogin.php——我创建了一个文件,其中包含以下代码: <?php function checklogin() { session_start(

我对PHP比较陌生,但我知道很多。我正在制作一个登录表单,在他们可以进入页面之前,我正在检查他们是否已登录,如果他们没有登录,那么他们将被重定向到登录页面,我正在使用会话。用户每次登录或注册时,都会使用以下方式创建会话:

$_SESSION['username'] = '$username';
在每个不允许用户访问的页面上,我都包括checklogin.php——我创建了一个文件,其中包含以下代码:

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

checklogin(); //checks login

?>
这用于确定标题中显示的内容

所有这些都不起作用,那么我做错了什么?任何帮助都将不胜感激

$_SESSION['username'] = $username;

这是正确的语法使用它。

您需要将
会话_start()
放在PHP文件的顶部,在checkLogin()函数之外。会话变量需要使用相同的名称,所以在“username”和“myusername”之间进行选择。如果用户未登录,您还需要交换语句的顺序:

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

当函数提前返回时,
header
调用永远不会发生。您也不需要在变量周围加引号,例如,
$\u SESSION['username']=$username$username
,则code>是正确的。

Put
session_start()在页面顶部,而不是在功能中。请稍等,我会尝试。
$\u会话['username']!==$_会话['myusername']
…标头仍不工作,并且尚未检查您无法访问的页面。
 header('location: login.php');
 return false;