Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.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安全会话';它不工作了_Php_Html_Session - Fatal编程技术网

PHP安全会话';它不工作了

PHP安全会话';它不工作了,php,html,session,Php,Html,Session,我正在试图找出如何使会话安全。我做了很多研究,找到了我想要的,但是安全会话工作不正常,网站也没有说明如何修复它 当你浏览代码时 测试1将失败 但在运行它时,它需要通过 另外,当您拉取$\u会话变量时,Test1中没有任何内容 我注意到的是,如果我在加密后放入$\u会话,它就会接受它 该功能来自以下站点: $\u会话['user\u id']='test'; $\会话['username']='john'; $_会话['login_string']='1234'; 回显“会话集”; sec_ses

我正在试图找出如何使会话安全。我做了很多研究,找到了我想要的,但是安全会话工作不正常,网站也没有说明如何修复它

当你浏览代码时

测试1将失败

但在运行它时,它需要通过

另外,当您拉取$\u会话变量时,Test1中没有任何内容

我注意到的是,如果我在加密后放入$\u会话,它就会接受它

该功能来自以下站点:

$\u会话['user\u id']='test';
$\会话['username']='john';
$_会话['login_string']='1234';
回显“会话集
”; sec_session_start(); //测试$session是否通过。 回声“test1
”; 如果(isset($\u会话['user\u id']), $\u会话['username'], $\会话['login\u string'])){ 回波“测试:通过”; }否则{ echo“测试:失败”; } 回声“
”; 回声“test2
”; $\会话['user\u id']='test'; $\会话['username']='john'; $_会话['login_string']='1234'; 回显“会话集
”; 如果(isset($\u会话['user\u id']), $\u会话['username'], $\会话['login\u string'])){ 回波“测试:通过”; }否则{ echo“测试:失败”; } //来自以下站点的功能:http://www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQL 函数sec_session_start(){ $session\u name='sec\u session\u id';//设置自定义会话名称 /*设置会话名称。 *由于PHP中存在未记录的错误/功能,这必须在会话\u设置\u cookie \u参数之前进行。 */ 会话名称($session\u name); $secure=true; //这将阻止JavaScript访问会话id。 $httponly=true; //强制会话仅使用cookie。 if(ini_set('session.use_only_cookies',1)==FALSE){ 标题(“位置:../error.php?err=无法启动安全会话(ini_set)”; 退出(); } //获取当前cookies参数。 $cookieParams=会话获取cookie参数(); 会话设置cookie参数($cookieParams[“lifetime”], $cookieParams[“路径”], $cookieParams[“域”], 美元安全, $httponly); session_start();//启动PHP会话 session_regenate_id(true);//重新生成会话,删除旧会话。 } //删除所有会话变量 session_unset(); //销毁会话 会话_destroy(); ?>
站点:

若你们看这个顺序,我已经把我获取代码的网页上发生的事情分解了

当它到达protected_page.php时,它没有任何要测试的$会话信息

最后一条IF语句未检测到$\u会话变量

 index.php
    db_connect.php > Include_Once
        psl-config.php
    functions.php - sec_session_start()
        session_start();
    process_login.php 

    process_login.php > POST from INDEX.PHP
        db_connect.php > Include_Once
            psl-config.php
        functions.php - sec_session_start()
            session_start(); 
        functions.php - login()
            functions.php - checkbrute()
            $_SESSION['user_id'] = $user_id;
            $_SESSION['username'] = $username;
            $_SESSION['login_string'] = hash('sha512', $db_password . $user_browser);
    protected_page.php

    protected_page.php > Sending $_SESSION, but $_SESSION does not come through.
            db_connect.php > Include_Once
                psl-config.php
            functions.php - sec_session_start()
                session_start();
            functions.php - login_check()
                 if (isset($_SESSION['user_id'], $_SESSION['username'], $_SESSION['login_string'])) { 
                    } else { 
                    Failed
                    }

在使用
SESSION\u start()
@Ibu初始化变量之前,您正在尝试使用
$\u SESSION
变量。虽然在不初始化会话的情况下“使用它”没有任何问题,但它确实会擦除$\u SESSION的现有内容。使用$\u SESSION在网页之间切换,在调用函数sec_SESSION_start()之前,最好先拉出$_SESSION变量?
 index.php
    db_connect.php > Include_Once
        psl-config.php
    functions.php - sec_session_start()
        session_start();
    process_login.php 

    process_login.php > POST from INDEX.PHP
        db_connect.php > Include_Once
            psl-config.php
        functions.php - sec_session_start()
            session_start(); 
        functions.php - login()
            functions.php - checkbrute()
            $_SESSION['user_id'] = $user_id;
            $_SESSION['username'] = $username;
            $_SESSION['login_string'] = hash('sha512', $db_password . $user_browser);
    protected_page.php

    protected_page.php > Sending $_SESSION, but $_SESSION does not come through.
            db_connect.php > Include_Once
                psl-config.php
            functions.php - sec_session_start()
                session_start();
            functions.php - login_check()
                 if (isset($_SESSION['user_id'], $_SESSION['username'], $_SESSION['login_string'])) { 
                    } else { 
                    Failed
                    }