PHP

2010-02-05 4 views
1

에서 true와 false를 모두 반환하는 명령문의 경우 다음 명령문은 실행할 때 "do actions! what2"를 반환합니다. 무슨 일 이니? 그것은 진실과 거짓 모두가 반환되고있는 것처럼 보입니다!PHP

if (md5($email) == $emailHash) { 
    echo "do actions!"; 
} else { 
    echo "what2"; 
} 
+7

더 많은 코드를 게시하십시오. 실행 횟수가 두 번 이상인 것 같습니다. –

+0

예 뭔가 잘못 됐습니다. 뭔가가 '사실'과 '거짓'일 수는 없습니다. 다른 사람이 계속 진행 중입니다. –

+4

아마도 여기가 시간입니다. 우주가 무너진다! –

답변

2

기회 없음 - 코드를 두 번 호출합니다.

1

이 실제 문제는이 코드에서 발생합니까? 지금의 상황이기 때문에 일어날 수있는 방법이 없습니다. 실제 코드가 아닌 경우 조건부 이후에 첫 번째 블록 앞에 세미콜론이 있는지 확인하십시오.

4

실제 조건과 거짓 조건이 모두 표시되는 이중 함수 호출? debug_print_backtrace 함수를 사용하여 stacktrace를 생성하고 두 번 이상 호출되는지 확인할 수 있습니다.

1

코드가 for 또는 while 루프 (또는 그렇지 않으면 두 같은 함수로 호출되는) 경우가 if 처음 거짓 번째 진정한 평가되어있을 수있다. 그렇지 않으면, 나는 그것이 일어날 이유가 전혀 없다.

1

주변 코드가 잘못되었다고 생각합니다. 이 점에 아무런 문제가 없습니다. 또한 2 개가 아닌 if 조건에 세 개의 등호 ===를 넣으십시오.

0

if 조건보다 더 많은 코드가 필요하다고 생각합니다. 내 상자에 "what2"이 맞습니다.

if (md5($email) === $emailHash) 
{ 
    echo "do actions!"; 
} 
else 
{ 
    echo "what2"; 
} 
0

이 문제가 발생할 수있는 방법은 없습니다. 더 자주 우리는 언어에 버그가 있다고 생각할 때, 우리는 어떤 일도 잘못하지 않았다고 생각합니다. 그러나 코드에는 항상 바보 같은 것이 있습니다. 코드를 다시 확인해야합니다.

1

나는 바로 거기에 무슨 일인지 모르겠지만, 같은 문제에 대한이 같은 일을로 사용하고 있습니다 : 디버깅을,

$userHash = md5($email); 
if ($userHash == $emailHash) { 
    // etc... 
} 

따라서 한 번에 문마다 하나의 일을 더 쉽습니다.