Php 将会话变量设置为数字,然后根据该变量编号检查isset

Php 将会话变量设置为数字,然后根据该变量编号检查isset,php,session,login,Php,Session,Login,我创建了一个简单的PHP登录系统,在某些方面我对PHP相当陌生。登录系统不使用数据库作为其唯一用户 <?php if(isset($_SESSION['loggedin'])) { die("You are already logged in!"); } if(isset($_POST['submit'])) { if ($_POST["Username"]=="****" && $_POST["password"]=="****") { $_SESSION['logge

我创建了一个简单的PHP登录系统,在某些方面我对PHP相当陌生。登录系统不使用数据库作为其唯一用户

<?php
if(isset($_SESSION['loggedin']))
{
 die("You are already logged in!");
}
if(isset($_POST['submit']))
{
if ($_POST["Username"]=="****" && $_POST["password"]=="****")
{
$_SESSION['loggedin'] = "1";
print $_SESSION['loggedin'];
} 
}
?>
但是,当我在本例1中尝试为loggedin分配一个数字,然后让检查器检查,如果不是数字1,则死亡,如下所示:

if(!isset($_SESSION['loggedin'] = "1"))

它不起作用。有人能告诉我我是怎么出错的吗?

试着用==代替=。使用“=”将值1分配给会话变量

if(!isset($_SESSION['loggedin'] == "1"))
然而,更好的选择是:

if($_SESSION['loggedin'] != "1")
if(!isset($_SESSION['loggedin']) || "1" != $_SESSION['loggedin'])
使用并检查是否设置了$\u会话['loggedin'],即:

if($_SESSION['loggedin'] != "1")
if(!isset($_SESSION['loggedin']) || "1" != $_SESSION['loggedin'])

尝试使用==而不是=。使用“=”将值1分配给会话变量

if(!isset($_SESSION['loggedin'] == "1"))
然而,更好的选择是:

if($_SESSION['loggedin'] != "1")
if(!isset($_SESSION['loggedin']) || "1" != $_SESSION['loggedin'])
使用并检查是否设置了$\u会话['loggedin'],即:

if($_SESSION['loggedin'] != "1")
if(!isset($_SESSION['loggedin']) || "1" != $_SESSION['loggedin'])
还要确保在第一个示例的顶部有session_start()

<?php
session_start();

if(isset($_SESSION['loggedin']))
{
    die("You are already logged in!");
}

if(isset($_POST['submit']))
{
    if ($_POST["Username"]=="****" && $_POST["password"]=="****")
    {
        $_SESSION['loggedin'] = "1";
        print $_SESSION['loggedin'];
    } 
}
?>

还要确保在第一个示例的顶部有session_start()

<?php
session_start();

if(isset($_SESSION['loggedin']))
{
    die("You are already logged in!");
}

if(isset($_POST['submit']))
{
    if ($_POST["Username"]=="****" && $_POST["password"]=="****")
    {
        $_SESSION['loggedin'] = "1";
        print $_SESSION['loggedin'];
    } 
}
?>

如果使用字符串作为值,还可以使用php函数strcmp($str1,$str2)进行二进制安全字符串比较。所以你可以做这个测试:

if(isset($_SESSION['loggedin']) && strcmp($_SESSION['loggedin'], '1') == 0)
如果strcmp上的值相等,则其计算结果为0。如果
str1
小于
str2
则返回<0,如果
str1
大于
str2
则返回>0


有关更多信息:

如果使用字符串作为值,还可以使用php函数strcmp($str1,$str2)进行二进制安全字符串比较。所以你可以做这个测试:

if(isset($_SESSION['loggedin']) && strcmp($_SESSION['loggedin'], '1') == 0)
如果strcmp上的值相等,则其计算结果为0。如果
str1
小于
str2
则返回<0,如果
str1
大于
str2
则返回>0

有关详细信息:

使用(“1”=$\u SESSION['loggedin'])而不是($\u SESSION['loggedin']==“1”)Yoda条件!:Duse(“1”=$\u会话['loggedin'])而不是($\u会话['loggedin']==“1”)Yoda条件!:D