2017-09-28 15 views
0

솔루션과 함께 쿠키를 얻을 : $ _COOKIE는 밑줄 기간을 교체했다

.

str_replace('.','-',$cookie_name); 

문제

것은이 같은 쿠키를 설정하고있다.

$cookie_name = '_visited-'.$user_ip.'-'.$visted_link; 
setcookie($cookie_name,'visited',time() + (86400 * 30), "/"); 
header('Location: '.$_SERVER['REQUEST_URI']); 
exit; 

그런 다음 쿠키가 설정되어 있는지 확인하고 링크 배열에서이 링크를 해제하려고합니다.

foreach($links['unique'] as $link){ 
    $cookie_name = '_visited-'.$user_ip.'-'.$link; 
    if(isset($_COOKIE[$cookie_name])){ 
     if(($key = array_search($l, $links['unique'])) !== false) { 
      unset($links['unique'][$key]); 
     } 
    } 
} 

이상한 일이 쿠키가 명확하게는 isset을 사용하여 foreach 문에 설정된 경우에도 내가 쿠키가 그렇게 존재 내가 방문한 링크를 제거 할 수없는임을 감지 할 수없는 생각이다.

답변

0

오케이 문제가 발견되었습니다. 쿠키 이름의 일부로 사용자 IP를 넣었습니다. . _에 의해 대체되고 있었기 때문에 그냥 앞으로 나아가고 모두를 대체했습니다. with - 쿠키를 설정할 때. 지금 의도했던대로 완벽하게 작동합니다.

0

쿠키가 설정된 동일한 페이지에서 쿠키에 액세스 할 수 없습니다. 당신이 manual에서 볼 수 있듯이

그것은 명확하게 상태 : 쿠키가 설정되고 나면

, 그들은은 $ _COOKIE 배열로 다음 페이지로드에 액세스 할 수 있습니다.

+0

별도로 요청합니다. 쿠키가 설정된 후 같은 페이지에 페이지가 다시로드되지 않습니다. – AvalonRychmon

0

$ 링크를 한 페이지에서 다른 페이지로 어떻게 이전합니까? PHP의 각 호출은 독립적입니다. 그래서 쿠키를 데이터베이스의 세션 테이블에 저장합니다. 각 페이지의 첫 번째 단계는 데이터베이스에서 세션을로드하는 것입니다.

각 실행마다 $ 링크가 시작 되었기 때문에 귀하의 쿠키가 발견 된 적이 없다고 생각합니다. 페이지 상단에 print_r ($ links)을 추가하여 질문을보고 편집하십시오.

+0

$ links [ 'unique']은 내 데이터베이스 http://prntscr.com/gqvgh5에 저장된 링크 목록에서 생성됩니다 – AvalonRychmon