isset和if函数在php中带有or运算符 - php

我有一些PHP代码来检查用户登录状态,以检查是否设置了会话变量或cookie。如果任一条件为真,则获得大权限,否则将重定向到登录页面。代码如下:

if(isset($_SESSION["userid"]) || isset($_COOKIE["userid"]) && isset($_SESSION["username"]) || isset($_COOKIE["username"])  && isset($_SESSION["password"]) || isset($_COOKIE["password"])){
} else {
header("location : register.php");
}

问题是,如果会话被破坏(通过关闭浏览器或任何其他原因),则会将用户重定向到登录页面。但是它要做的是读取cookie数据并授予用户访问权限,因为cookie仍然存在(我已经检查了echo cookie数据是否仍然存在cookie)。

参考方案

您需要稍微改变一下条件,因为您在SESSIONCookie中将其混淆了。将它们与&&放在一起,并用||分开,如下所示:-

if((isset($_SESSION["userid"]) &&  isset($_SESSION["username"]) && isset($_SESSION["password"])) || (isset($_COOKIE["userid"]) && isset($_COOKIE["username"])  && isset($_COOKIE["password"]))){

    // your action that you want

} else {

   header("location : register.php");
}

注意:-请注意,所有地方(彼此的页面和条件)都将应用相同的内容,否则您将面临问题。

同样,对cookie的更多依赖性也不好,因为用户可以随时更改它。

PHP-MySQL结果转换为JSON - php

我试图了解如何将MySQL结果转换为JSON格式,以便以后可以在Javascript中使用此JSON来构建HTML表。但是我的代码只是产生大量的空值,我还不明白为什么。$result = mysqli_query($con, "SELECT * FROM Customers"); $test = json_encode($result);…

PHP Count数组元素 - php

嗨,有人可以解释为什么这会返回“数组由0个元素组成”。 :$arr = array(1,3,5); $count = count($arr); if ($count = 0) { echo "An array is empty."; } else { echo "An array has $count elements.…

PHP:从函数返回值并直接回显它? - php

这可能是一个愚蠢的问题,但是……的PHPfunction get_info() { $something = "test"; return $something; } html<div class="test"><?php echo get_info(); ?></div> 有没有办…

PHP:将数据从二维数组复制到一维数组的最快方法 - php

我有一个巨大的二维PHP数组,带有500万行。$t = [ [ "id" => 1, "name" => "foo" ], [ "id" => 2, "name" => "bar" ] ]; 现在,我必须将此数组的I…

PHP str_replace是否具有大于13个字符的限制? - php

直到击中第13个字符为止。一旦str_ireplace在cyper数组中击中“ a”,str_ireplace就停止工作。数组的大小有限制吗?请记住,如果键入“ abgf”,我会得到“ nots”,但是如果键入“ abgrf”,我应该得到“ notes”,那么我就会得到“ notrs”。机架使我的大脑无法解决。$_cypher = array("n…