gpt4 book ai didi

PHP session_regenerate_id 和黑莓浏览器

转载 作者:可可西里 更新时间:2023-10-31 23:34:43 27 4
gpt4 key购买 nike

问候,

我正在开发一个登录系统,但遇到了黑莓浏览器身份验证问题。 PHP 的 session_regenerate_id() 似乎有问题,有人可以建议替代方案吗?以下是身份验证和登录脚本:

更新看起来一般的 session 都不起作用。取出 session_regenerate_id() 只是为了看看它是否会起作用,它每次都会重定向我,就好像 $_SESSION['MD_SESS_ID'] 是空白的一样。真的卡在这里,任何想法将不胜感激。设备上的 Cookie 已启用,使用的是 Blackberry Bold 9650。它适用于我的 iPod Touch 和我 PC 上的所有浏览器。

登录

<?php
session_start();
include $_SERVER['DOCUMENT_ROOT'] . '/includes/pdo_conn.inc.php';
//Function to sanitize values received from the form. Prevents SQL injection
function clean($str) {
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
return $str;
}
$username = clean($_POST['username']);
$password = clean($_POST['password']);

if ($username != "" && $password != "") {
$getUser = $db->prepare("SELECT id, username, password, salt FROM uc_dev WHERE username = ? LIMIT 1");
$getUser->execute(array($username));
$userDetails = $getUser->fetch();
$dbPW = $userDetails['password'];
$dbSalt = $userDetails['salt'];
$hashedPassword = hash('sha512', $dbSalt . $password);
if ($hashedPassword == $dbPW) {
//Login Successful
session_regenerate_id();
$_SESSION['MD_SESS_ID'] = $userDetails['id'];
header('Location: http://somewhere.com');
session_write_close();
} else {
header('Location: http://www.somewhere.com');
exit();
}
} else {
header('Location: http://somewhere.com');
exit();
}
?>

授权

<?php
//Start the session
session_start();
//Verify that MEMBER ID session is present
if(!isset($_SESSION['MD_SESS_ID']) || (trim($_SESSION['MD_SESS_ID']) == '')) {
$_SESSION = array();
// Note: This will destroy the session, and not just the session data!
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
// Finally, destroy the session.
session_destroy();
header("Location: http://somewhere.com");
exit();
}
?>

最佳答案

前一段时间,我在做一些黑莓开发,发现浏览器无法处理同名的多个cookie。不确定他们是否已经解决了这个问题。

因此,如果您不止一次发送 Set-Cookie header (使用 setcookiesession_startsession_regenerate_id ),每次都使用相同的名称,这可能会导致您的问题。

您可能希望在对象或数组中跟踪需要输出的 cookie,并且仅在请求结束时才将它们发送到浏览器。这样,如果您需要在请求中间更改它们的值,您只需覆盖数组的值,而不是发送另一个 cookie header 。

This page也可能有帮助——从 PHP 的 session_regenerate_id 页面链接到它的人。

关于PHP session_regenerate_id 和黑莓浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4598690/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com