2012-02-10 2 views
0

사용자는 1과 5 사이의 숫자 만 입력 할 수 있습니다 - 0을 입력하거나 공백으로 두거나 5보다 큰 숫자를 입력하면 기본값으로 5로 재설정됩니다. 1,2,3, 4는 다르게 받아 들여집니다. 숫자가있는 PHP ElseIf 문

$max=mysql_real_escape_string($_POST["max"]); 

if ($max=="0" || $max==""){ 
    $max_r="5"; 
} elseif ($max > "5"){ 
    $max_r="5"; 
} else { 
    $max_r=$max; 
} 

그러나 항상 5

+0

왜 :

$max = (int) $_POST['max']; if (! $max || $max > 5){ $max_r = 5; } else { $max_r = $max; } 

또는, FTW 한 줄을 갈 수 있을까? 나는 GET과 POST를 위해 그것을 사용한다 - 조심할 수 없다. 누군가가 외부 서버에 양식을 만든다면 나는 생각했다. – TheBlackBenzKid

답변

4

음을 내뿜으며, 당신은 문자열이 아닌 정수를 비교하고 있습니다. $max = (int) $_POST['max']을 시도하고 값을 따옴표로 묶지 마십시오. 그런 다음 DB에 쓰기 전에 언제든지 $max을 탈출 할 수 있습니다.

$max_r = (! $max || $max > 5) ? 5 : $max; 
+0

Tenary for win! –

+0

열이 있고 치료할 수있는 유일한 방법은 ** 더 많은 삼중 수술 **입니다! – rdlowrey

+0

코드가 작동하지 않습니다. 5보다 큰 숫자를 입력하면 5가 인쇄됩니다. 적게 인쇄하는 경우 5 – TheBlackBenzKid

0
$max = intval($_POST['max']); 
if($max < 0 || $max > 5){ 
    $max = 5; 
}