我有一个包含以下代码的登录表单

if ($does_user == 1)//Als het aantal rijen gelijk is aan 1, zorg wel met registreren dat er geen dubbele gebruikers in de database kunnen worden toegevoegd
        {
            //Extract de array naar strings
            extract($row);

            if ($acces_level == 1)
            {   
                if (isset($_POST["remember"]))
                {
                    //Cookie aanmaken met de id van de gene die inlogt
                    setcookie("user_id", $user_id, time()+60*60*24*100, "/");

                    //Naar de profiel pagina
                    header("location: profile.php?user_id=".$user_id."");
                }
                else
                {
                    //Session aanmaken met de id van de gene die inlogt
                    $_SESSION["user_id"] = $user_id;

                    //Naar de profiel pagina
                    header("location: profile.php?user_id=".$user_id."");
                }
            }
            elseif ($acces_level == 2)
            {
                if (isset($_POST["remember"]))
                {
                    //Cookie aanmaken met de id van de gene die inlogt
                    setcookie("user_id", $user_id, time()+60*60*24*100, "/");

                    //Naar de admin pagina
                    header("location: admin/index.php?user_id=".$user_id."");
                }
                else
                {
                    //Session aanmaken met de id van de gene die inlogt
                    $_SESSION["user_id"] = $user_id;

                    //Naar de admin pagina
                    header("location: admin/index.php?user_id=".$user_id."");
                }
            }
        }

当它进入profile.php页面时,它会发送一个带有url的id。 所以我建立一个函数,当用户在url中更改其ID时,你将转向404.php但是这个函数运行不正常,我不知道为什么。

function user_exists()
{
    if (isset($_SESSION["user_id"]) !== $_GET["user_id"])
    {
        header("location: 404.php");
        exit();
    }
    elseif (isset($_COOKIE["user_id"]) !== $_GET["user_id"])
    {
        header("location: 404.php");
        exit();
    }           
}

$ _GET [“user_id”]等于SESSION或COOKIE,但无论如何它都会转向404.php,有人可以向我解释原因吗?

#1楼 票数:2 已采纳

这应该按预期工作:

function user_exists()
{
    if (isset($_SESSION["user_id"]) && ($_SESSION["user_id"] !== $_GET["user_id"])
    {
        header("location: 404.php");
        exit();
    }
    elseif (isset($_COOKIE["user_id"]) && ($_COOKIE["user_id"]) !== $_GET["user_id"])
    {
        header("location: 404.php");
        exit();
    }           
}

首先检查存储的变量是否为空,并将其内容与$ _GET变量进行比较。

#2楼 票数:0

您正在使用“ 等于”和“相同类型”比较进行比较。

GET Data始终作为字符串发布(这就是它的工作原理)所以你可能正在检查字符串的int。 切换到!= over !==可能会为你做这个技巧,或者你可以做一些花哨的类型杂耍,然后再在比较中测试它以自己转换它。

#3楼 票数:0

检查是否已设置,然后比较...

if (isset($_SESSION["user_id"]) && ($_SESSION["user_id"] !== $_GET["user_id"])){... 

  ask by Julez translate from so

未解决问题?本站智能推荐:

1回复

PHP通过AJAX更新SESSION或COOKIE

我正在尝试通过AJAX调用来更新会话或cookie,但该页面仍在同一个域中,但结果一直很奇怪。 刷新页面后,当我希望旧会话继续存在时,将创建一个新会话。 从index.php调用的AJAX: cart.php中的PHP: 第一次刷新: 第二次刷新:
1回复

PHP$_SESSION和$_COOKIE奇怪的行为

我正在尝试将 COOKIES 安装到我的网站中。 我在 GitHub 上找到了一个脚本: https : //github.com/jotaroita/secure-login-php7-remember-register-resetpw 我已经实现了脚本,我可以登录了。 我可以只使用 SESSIO
1回复

php.ini中的session.cookie_secure是否自动?

要求简单的答案:如果我把 在我网站的php.ini文件中,是否会自动将所有php cookie转换为安全的和仅HTTPonly,还是我仍然需要在cookie本身的参数插槽6和7中放入true,true?
1回复

PHP-session_set_cookie_params(),生命周期无效

首先, 我知道很多问题都像我的,但是我真的不知道我在做什么错... 您可能已经猜到了,我有一个涉及会话的PHP脚本。 除了设置会话的有效期外,其他所有内容都像魅力一样。 我想让会话保持活动状态两周,但我的(Chrome)浏览器却说它在浏览会话后设置为xpire(确实如此)。 我的PH
1回复

使用php保存表单值并使用SESSION调用Cookie

我正在用html制作表格。 当某人单击“提交”时,它将检查某些字段是否正确填写,到目前为止非常简单。 但是,如果有人刷新页面,我想保存键入字段中的文本。 因此,如果刷新页面,则文本仍在字段中。 我正在尝试使用php和cookie实现此目的。 现在是表单输入字段: 我是在php
1回复

PHP似乎无法存储在移动设备上的SESSION或COOKIE中

我有一个应用程序,它接受一些用户提交的表单数据,并将该信息存储在$ _COOKIE和$ _SESSION中(如果未设置cookie的话)。 它可以完美地在笔记本电脑上工作,但不能在移动设备上工作。 我试着回声了/ var_dumping SESSION和COOKIE,并且在我的手机上,这两个
1回复

即使将session.use_trans_sid设置为1并且将session.use_only_cookies设置为PHP,我也无法创建无cookie会话

我有一个登录页面(页面A),该页面将用户登录,然后将他们重定向到另一个页面(页面B)。问题是另一个页面(页面B)看不到来自页面A的会话数据,甚至标题中提到的上述设置在apache2的php.ini文件中设置。 以下是我的php.ini文件中的相关设置。 我叫session_start();
1回复

php.ini中的session.cookie_domain-POST表单问题

我的主域名: www.domain.com有一个cookie,该cookie设置为: domain.com 。 用户单击链接访问www.domain.com/login并尝试登录(通过POST请求)后,此表单会将cookie设置为www.domain.com (添加www)。 这引起了许多