Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.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 在使用$\u会话之前擦除它好吗?_Php_Session - Fatal编程技术网

Php 在使用$\u会话之前擦除它好吗?

Php 在使用$\u会话之前擦除它好吗?,php,session,Php,Session,我在课程中还是新手 在使用会话之前擦拭会话是否良好 例如: $_SESSION = array(); $_SESSION['id'] = 1; $_SESSION['name'] = 'Someone'; 我在征求你们的意见。 因为我在课程方面没有太多经验 在我笨拙的逻辑中, 也许我会忘记从管理会话注销 和登录到会员会话 因此,来自admin的一些$\u SESSION值可能仍在$\u SESSION数组中 附加: 1.我是管理员用户,还没有从管理员页面注销 2.现在我从

我在
课程中还是新手

在使用会话之前擦拭会话是否良好

例如:

$_SESSION         = array();
$_SESSION['id']   = 1;
$_SESSION['name'] = 'Someone';
我在征求你们的意见。
因为我在
课程
方面没有太多经验

在我笨拙的逻辑中,
也许我会忘记从
管理会话
注销

登录到
会员会话

因此,来自admin的一些
$\u SESSION
值可能仍在
$\u SESSION数组中


附加:
1.我是
管理员用户
,还没有从
管理员页面
注销
2.现在我从
管理页面
转到
会员登录页面

我应该在这里做什么?

管理员
踢到
管理员页面
,因为他不是会员?

没有。事实上,这真的很糟糕,您的示例代码将使您的会话变得无用

调用
session\u start()
时,系统将为您提供一个空的
$\u会话
,或者您将在上一次页面加载时获得保存到
$\u session
的数据。有关会话的更多信息,请查看PHP文档:


关于登录和注销:您的注销过程必须销毁识别用户的任何会话数据(可能是他们的ID)。通常这是通过使用
unset
,即
unset($\u会话['user\u id'))

我无法想象有任何其他方式可以注销用户,如果你提供更多信息,我可能会给你一个更好的答案


关于您的添加,您的身份验证系统似乎需要一些工作。当您已经登录时,您不应该能够访问登录页面(即使是管理员,因为它只是另一个具有更高权限的用户,对吗?)。如果您在登录后手动键入登录url,则它会将您重定向到主页

这是一篇关于这个话题的精彩文章,我应该做些研究!谢谢@HamZa

下面是我的超级基本伪代码身份验证过程:

Does current page require authentication
    Yes:
        Is the user logged in?
            Yes:
                Does the user have the correct privilages to view the page?
                    Yes:
                        AUTHENTICATED! Show page
                    No:
                        Print a message that says something like, "You're in the wrong place amigo"
            No:
                Redirect to login
    No:
        Show the page

没有。事实上,这真的很糟糕,您的示例代码将使您的会话变得无用

调用
session\u start()
时,系统将为您提供一个空的
$\u会话
,或者您将在上一次页面加载时获得保存到
$\u session
的数据。有关会话的更多信息,请查看PHP文档:


关于登录和注销:您的注销过程必须销毁识别用户的任何会话数据(可能是他们的ID)。通常这是通过使用
unset
,即
unset($\u会话['user\u id'))

我无法想象有任何其他方式可以注销用户,如果你提供更多信息,我可能会给你一个更好的答案


关于您的添加,您的身份验证系统似乎需要一些工作。当您已经登录时,您不应该能够访问登录页面(即使是管理员,因为它只是另一个具有更高权限的用户,对吗?)。如果您在登录后手动键入登录url,则它会将您重定向到主页

这是一篇关于这个话题的精彩文章,我应该做些研究!谢谢@HamZa

下面是我的超级基本伪代码身份验证过程:

Does current page require authentication
    Yes:
        Is the user logged in?
            Yes:
                Does the user have the correct privilages to view the page?
                    Yes:
                        AUTHENTICATED! Show page
                    No:
                        Print a message that says something like, "You're in the wrong place amigo"
            No:
                Redirect to login
    No:
        Show the page

顺便说一句,我的示例代码有什么问题?为什么可以使我的会话无效?好的,我将尝试编辑我的问题。通过在使用会话之前擦除会话,您将丢失保存的所有信息。会话变量的用途是跨页面加载保存数据准备更新我的问题。我删除了它,这样当有其他用户登录时,会话数组中以前的数据将被系统擦除。@Scramble你搞错了。“另一个用户”==“另一个浏览器”==“另一个会话cookie”==“另一个会话”。你明白了吗?@TheManiac我猜这两条线是一些宝石。我建议两本都读。和。在第二个线程中,有一些非常好的答案,包括一些代码和数学!顺便说一句,我的示例代码有什么问题?为什么可以使我的会话无效?好的,我将尝试编辑我的问题。通过在使用会话之前擦除会话,您将丢失保存的所有信息。会话变量的用途是跨页面加载保存数据准备更新我的问题。我删除了它,这样当有其他用户登录时,会话数组中以前的数据将被系统擦除。@Scramble你搞错了。“另一个用户”==“另一个浏览器”==“另一个会话cookie”==“另一个会话”。你明白了吗?@TheManiac我猜这两条线是一些宝石。我建议两本都读。和。在第二个线程中,有一些非常好的答案,包括一些代码和数学!