2011-10-25 5 views
0

PHP $ _POST 변수를 살펴본 후 "undefined" (jQuery가 보내는 방법 때문에)을 "" 또는 적어도 " "으로 변경하여 이메일 양식 그것이 제출되면 값이 기입되지 않은 모든 곳 (선택 필드)에 "undefined"이 표시되지 않습니다.

감사합니다.

+1

대신 jQuery에서 해결해야 할 것과 같은 소리가납니다. 변수를 사용하기 전에 변수를 정의 해보십시오. – animuson

+1

Javascript 스크립트를 수정해야한다고 말하고 싶습니다. – deceze

+0

왜 $ _POST- 변수를 변경해야합니까, "say"(출력)을 변경하십시오. REQUEST 변수를 편집하는 것은 좋지 않습니다. –

답변

3

나는 여기

더 루프 그것을 할 접근하지 않는 것입니다 .. 당신은 더 나은 정의를 해제를 처리하기 위해 자바 스크립트를 변경을 고려하는 것이 좋습니다,하지만 다음과 같이 단일 루프를 사용하는보다 일반적인 접근 방법 :

foreach($_POST as &$p) if($p=='undefined') $p = ''; 

참고 : serialize + unserialize 접근 방식은 루프를 사용하지 않는다는 점에서 멋지지만 루프 접근 방식은 아마도 특히 약간 더 빠릅니다 (특히 $_POST이 큰 경우).

+0

와우. 그것은 마음이 부는 것입니다. 나는 아직 어떻게 작동하는지 이해하지 못한다 : P 그러나 그것은 작동한다! 감사. – MadTurki

+0

@MadTurki 당신이 좋아하는 것을 기쁘게 생각합니다! .. 우리는 단 하나의 라이너를 좋아하지 않습니다. – ghbarratt

+0

하나의 라이너가 훌륭하지만, 모든 페이지 요청에서'serialize'와'unserialize'를 호출했을 때의 성능을 확인할 수 있습니다. 'foreach'를 사용하여 값을 반복하는 것이 더 빠를 수도 있지만 100 % 확신 할 수는 없습니다. –

1

PHP에서는 foreach 루프에서 & 심볼을 사용하면 값 대신 참조로 사용합니다. 참조를 변경하면 원래 값이 설정됩니다. 또한이

$_POST = unserialize(str_replace('s:9:"undefined";', 's:0:"";', serialize($_POST))); 

:

<?php 
$_POST['text1'] = 'undefined'; 
$_POST['text2'] = 'undefined'; 
foreach($_POST as &$var) 
{ 
    if($var == 'undefined') 
     $var = ''; 
} 
print_r($_POST); 
?> 
<!-- Will output --> 
array(
    text1=> 
    text2=> 
) 
0
foreach ($_POST as &$var) { 
    if ($var === 'undefined') { 
     $var = ''; 
    } 
} 
+0

이것은 복제본입니다. –

+0

@Craig White : 실례합니다. – Hammerite

1
if (isset($_POST['var'])) { 
    // it is set 
} else { 
    // it isnt set 
} 
관련 문제