2013-12-16 2 views
-2

strlen 명령에 2 개의 숫자를 추가하고 싶습니다. 여기 내 PHP 코드는 다음과 같습니다if 문에 여러 조건 추가

$name = mysql_real_escape_string($_POST['dgt']); 
if(strlen($name) != "32") { 
print "This is not a name."; 
} else { 

길이가 나는 길이 내가 그렇게 할 수있는 방법을 32 또는 40 인 경우 검사 할 32 인 경우는 확인?

+0

같은 것을 사용할 수 있습니다 (이 양식은 높은 우선 순위를 가지고)()'즉시 쿼리에 사용하지 않는. –

+0

왜 32 주위에 따옴표를 사용합니까 ?? ... 따옴표를 제거하십시오 –

+3

Btw, 길이가 32 또는 40 인 이름은 무엇이 특별한가요? –

답변

0

PHP: Logical Operators - Manual에서, 당신은 원하는 어느 쪽이든 사용

  1. ||
$a or $b Or TRUE if either $a or $b is TRUE. 
$a || $b Or TRUE if either $a or $b is TRUE. 

그래서, 당신은 당신은`mysql_real_escape_string를 적용하지 않아야이

$len = strlen($name);   // just get the length once and then 
           // use it to compare however many times.... 
if (!($len == 32 or $len == 40)) 
1

아래 코드와 같이 and 연산자 "& &"을 조건부로 사용하십시오.

if(strlen($name) != 32 && strlen($name) != 40)

당신이 name 길이 32 또는 40 다음 or 연산자를 사용하는 경우 확인을하고 싶은 경우 "||" 아래 코드와 같습니다.

user2910265

if(strlen($name) == 32 || strlen($name) == 40)

은 하나의 호출과 같이, 제작되도록 변수에 strlen()의 반환 값을 할당, 좋은 점을 가지고있다.

$length = strlen($name); 
if(!($length == 32 || $length == 40)) 
    print "this is not a name."; 
} else { 
+0

strlen을 변수 이름에 넣어 두 번이 아니라 한 번만 호출되도록합니다. 통역사는 당신을 위해 이것을 할만큼 똑똑하지 않을 것입니다. – user2910265

+0

오, 나는 또는을 사용하는 두 번째 조건절에 대해 이야기하고 있다고 생각했습니다. OP의 질문은 혼란 스럽습니다. 왜냐하면 코드가 실제로 길이가 32가 아닌지 검사 할 때 문자열이 32인지 검사하기 때문에 응답이 혼란 스럽습니다. –

4

우선 mysql_real_escape_string(); 이전 mysql_ API는 사용되지 않으므로 대신 PDO 또는 mysqli으로 전환하는 것이 좋습니다.

둘째, 입력 필터링 사용을 고려해야합니다. $_POST['dgt']은 전혀 존재하지 않을 수 있으므로 filter_input()을 사용하십시오.

세 번째로 숫자 값을 사용하여 strlen()의 출력과 비교해야합니다. PHP는 "32"을 숫자로 취급하지만 명시 적으로하는 것이 좋습니다. 이름이 하나가 32 또는 40 긴, 당신은 단순히 조건을 추가 할 수 있습니다이어야합니다

마지막 : 또는

$name = filter_input(INPUT_POST, 'dgt', FILTER_UNSAFE_RAW); 
if (empty($name) || (strlen($name) != 32 && strlen($name) != 40)) { 
    print "This is not a name."; 
} 

in_array() 사용

if (empty($name) || !in_array(strlen($name), array(32, 40))) { 
    print "This is not a name."; 
}