2013-01-05 2 views
2

쿠키를 테스트하기 위해 디버그 스크립트를 작성하려고하지만 어떤 이유로 조건을 충족시키지 않아도 항상 모든 쿠키를 삭제하는 스크립트를 실행합니다. 여기 내 코드는 - 그것의 모든 HTML과 PHP : 당신이 후 semi-colon을 추가 한"if"문이 항상 TRUE로 결정되는 이유는 무엇입니까?

<form id="cookietest" name="CookieTest" method="post"> 
    <input type="submit" name="createcookie" value="Create cookie" /> 
    <input type="submit" name="removecookie" value="Remove cookie" /> 
    <input type="submit" name="removeallcookies" value="Remove all cookies" /> 
</form> 
<?php 
    $Domain = thedomain.com 
    if($_POST['createcookie'] == TRUE) 
    { 
     $expire = 60*60*24*14 + time(); 
     setcookie('TestCookie', 'IExist', $expire, '/', $Domain); 
     echo 'TestCookie should have been created. See its value below.<br />'; 
    } 
    if($_POST['removecookie'] == TRUE) 
    { 
     $expire = time() - 60*60*24*14; 
     setcookie('TestCookie', 'IExist', $expire, '/', $Domain); 
     echo 'TestCookie should have been deleted. See its value below.<br />'; 
    } 
    if($_POST['removeallcookies'] == TRUE); 
    { 
     $expire = time() - 60*60*24*14; 
     setcookie('TestCookie', 'IExist', $expire, '/', $Domain); 
     setcookie('Cookie1', '', $expire, '/', $Domain); // destroys persistent cookie 
     setcookie('Cookie2', '', $expire, '/', $Domain); // destroys persistent cookie 
     setcookie('Cookie3', '', $expire, '/', $Domain); // destroys persistent cookie 
     echo 'All specified cookies should have been removed. <br />'; 
    } 
    if($_POST['createcookie'] == FALSE && $_POST['removecookie'] == FALSE) 
    { 
     echo 'Neither the cookie create nor cookie remove button was clicked.<br />'; 
    } 
    echo "The contents of 'TestCookie':"; 
    echo "${_COOKIE['TestCookie']}<br />"; 
    echo "The cookie array<br />"; 
    echo "<pre>"; 
     print_r($_COOKIE); 
    echo "</pre>"; 
?> 
+5

사용'(는 isset ($ _ POST [ 'fieldName에']) {...}' –

답변

5

경우 블록이

if($_POST['removeallcookies'] == TRUE); //<<< semi-colon 
+0

경우 감사! 그것은 항상 최악의 문제를 일으키는 간단한 물건입니다 ... – Adam11

+0

@ knoell8504 : 글쎄, 가끔은 일어납니다 –

+0

나는 블록이 항상 실행된다는 것을 의미한다고 생각하지 않습니다. 세미콜론은 블록이 항상 실행되게하고 방지합니다. – MrCode

3

을 실행하지 않은 경우 당신은 내가 방금 대신 는 isset를 사용한다고 생각하는 이유의 상태 ==는

if(isset($_POST['createcookie'])) 
{ 
} 
+0

그래, 많이 보았습니다. 그렇게하는 이유는 무엇입니까? – Adam11

+0

** $ POST [ 'createcookie'] **는 "쿠키 만들기"와 같을 것이고, 입력의 이름 값은 $ _POST의 키이고 값은 값입니다 (at least 나는 그렇게 생각합니다) – ZombieSpy

0

는 @Cthulhu 말했다 대신 사용하는 등 :

이 설정되어 있는지 확인하기 위해

:

이 설정되어 있지 않은지 확인하기위한
if(isset($_POST[index])){ 


// do something 

} 

:

if(!isset($_POST[index])){ 


// do something 

} 
관련 문제