인사말,PHP session_regenerate_id 및 Blackberry 브라우저
로그인 시스템에서 작업 중이며 인증하는 Blackberry 브라우저가 작동하지 않습니다. 그것은 그들이 PHP의 session_regenerate_id() 문제가있는 것, 누군가가 대안을 제안 할 수 있습니까? 다음은 인증 및 로그인 스크립트입니다.
업데이트 일반적으로 세션이 작동하지 않는 것으로 보입니다. session_regenerate_id()를 호출하여 작동하는지 확인하고 매번 $_SESSION['MD_SESS_ID']
이 비어있는 것처럼 리디렉션됩니다. 정말로 여기에 붙어서 어떤 아이디어라도 감사 할 것입니다. 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();
}
?>
공개되지 않은 사이트의 중간 수준 보안 기능에 대한 액세스를 제어하기위한 것입니다. 로그인 성공시 하나의 쿠키를 만든 다음 인증 스크립트에서 해당 쿠키를 확인할 수 있습니까? 세션을 사용하는 대신. 아마도 임의의 쿠키 이름일까요? (솔직히 말해서 나는 쿠키에 대해 많이 알지 못한다 - 일반적으로 $ _SESSION 함수를 사용한다 – NightMICU
최소한 위장 할 수없는 방식으로 쿠키를 저장해야한다. 아마도 사용자 특정 데이터, 쿠키를 확인하고 타임 스탬프가 너무 오래되었는지 확인하십시오. –
쿠키의 값을 사용자 이름의 해시 된 버전으로 만들었습니다. 성공적인 매칭시에만 생성되며 세션이 끝나면 만료됩니다. 매력처럼 작동합니다. – NightMICU