Php 将会话变量设置为数字,然后根据该变量编号检查isset
我创建了一个简单的PHP登录系统,在某些方面我对PHP相当陌生。登录系统不使用数据库作为其唯一用户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
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