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