문제

내 PHP 응용 프로그램에서는 사용자 이름과 PWD를 사용하고 데이터베이스의 사용자 테이블을 확인하여 사용자의 유효성을 확인합니다.로그인이 성공한 후에는 아래와 같이 서버 세션에 자격 증명을 저장합니다.

$_SESSION['username'] = $username;
$_SESSION['pwd'] = $pwd;
.

및 나는 사용자가 이미 로그인했는지 확인하기 위해 세션을 확인했습니다. 아래 코드를 볼 수 있습니다 :

if (empty($_SESSION['userId']))
    header("Location: login.php");
.

문제는 브라우저에서 쿠키를 비활성화 한 경우 로그인이 성공적으로 로그인하더라도 다른 페이지로 이동할 수 없습니다.PHP 세션은 쿠키를 사용하여 브라우저에 몇 가지 값을 저장합니다.PHP5에서 쿠키가없는 세션을 사용하는 데 어쨌든 거기에 있습니까?

도움이 되었습니까?

해결책

예,하지만 sessid 또는 sid를 모든 링크에 추가해야합니다.

여기에 자세히 설명되어 있습니다 : http : //myles.eftos..id.au / blog / 2005 / 11 / 26 / 쿠키가없는 세션 - PHP /

php.ini와 같은 php_value session.use_trans_sid = 1를 변경해야합니다.

다른 팁

예,하지만 원하지 않습니다.실제로 쿠키 기반 세션을 사용해야합니다.이것은 PHP 5.3의 기본 구성입니다. 세션 고정 자세한 내용은

사용자가 쿠키없이 사이트를 사용할 수 있도록 요구하는 상황은 무엇입니까?

예, session.use_trans_sid를 사용하면 할 수 있습니다.그러나 그렇게하는 것에 대한 보안 문제가 있습니다.

로그인하려면 일반적으로 쿠키를 수락해야합니다.

다른 대안은 세션 대신 HTTP 권한을 사용하는 것입니다. 이는 또한 단점이 있습니다.

세션 ID 전달 .

세션 ID를 생성 하고이 링크에 추가 할 수 있습니다.

<?php
session_start();
$session_id = session_id();
header('Location: http://www.test.com/?sess_id='. $session_id);
?>
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top