Chrome에 쿠키 문제가 있습니다. PHP에서 setcookie() 함수를 사용하여 이미 인증 프로세스 (LinkedIn API 사용)를 거친 사용자를 자동으로 다시 인증합니다.쿠키가 Chrome에서 올바른 값을 가져 오지 않습니다.
문제는 내가 설정 한 쿠키가 IE 11에서 Firefox에서 제대로 작동하지만 크롬에서 몇 초 후에 삭제되는 것 같습니다. 나는 그들을 (다른 브라우저에 대한 피드백을 기다리고있다.) 많은 사람들과 똑같은 문제로 테스트했다.
setcookie('CookieID', $var, (time()+365*24*3600), NULL, NULL, false, true);
setcookie('LinkedInAuth', $var, (time()+365*24*3600), NULL, NULL, false, true);
이 알려진 문제입니다 : 여기
는 쿠키를 설정하는 코드이다? 이 문제를 어떻게 해결할 수 있습니까?편집 5 : 나는 완전히 내 접근 방식을 재검토로
나는 항목의 제목을 변경했습니다. (이전 편집 내용은 관련성이 없어서 삭제했습니다.) 내 쿠키의 값으로 LinkedIn ID를 사용하는 대신 openssl_random_pseudo_bytes()
함수를 사용하여 고유 ID를 생성합니다. 질문으로,
$random = openssl_random_pseudo_bytes(32);
$UserKey = bin2hex($random);
$expiration= time() + 365*24*3600;
setcookie('CookieID', $UserKey, $expiration, NULL, NULL, false, false);
그래서 지금, 크롬 임의의 값으로 쿠키를 생성하고, 쿠키 만료 시간은 맞다 : 다음은 새로운 코드입니다. 여전히 정확한 값은 아닙니다! 콘솔에
$UserKey
을 표시하고 쿠키와 다른 값을 갖습니다. 그러나 FF와 IE에서는 매력처럼 작동합니다! 응답 헤더가 내 쿠키에 잘못된 값을 제공하지만 요청 헤더에 올바른 값이 있습니다.
누군가 그 경험이 있습니까? 문제가 내 코드 또는 내가 사용하는 기능에서 발생합니까?
$ expire = time() + 31536000 같은 분리 된 변수에 계산을 넣으려고 했습니까? 'setcookie ('CookieID', $ var, (time() + $ expire), NULL, NULL, false, true); –
방금 같은 문제가 발생했습니다. '$ expiration = time() + 31536000'과'$ expiration = 31536000'으로 시도했습니다. –
문제는 간단합니다. - 당신이 말하는 것에 상관없이,'$ var'는 PHP에서 ** 설정되지 않았습니다 **. 그럴 경우 값이 전송됩니다. 당신은 심지어 그것을 입증하는 시험을 생각해 냈습니다. 유일한 다른 가능성은'$ var'가 쿠키 파싱을 엉망으로 만드는 값을 포함한다는 것입니다. 그래서 여러분이 보낸 값을 인코딩해야합니다. – Mjh