2012-12-21 3 views
1

사용자가 입력 한 국가를 기억하는 방법을 고수했습니다. 마지막으로 데이터베이스에 대한 것이지만 국가가 입력되었는지 확인하고 싶습니다. 테스트를 받으면 오류 메시지가 나타납니다.국가 사용자가 입력 한 문자

<?php 
session_start(); 

function print_form(){ 
?> 

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" id="uploadform" 
style="margin-top:5% auto" enctype="multipart/form-data"> 

<p style="color:#F00;">Todos campos obligatorios</p><br /> 

<p><label for="name">Nombre</label></p> 
<p style="width:240px"><input name="name" id="name" type="text" class="field" value=" 
<?= $_SESSION['myForm']['name']; ?>" tabindex="1"/></p> 

<p> 
<label for="email">Correo Electr&oacute;nico</label></p> 
<p style="width:240px"><input name="email" id="email" type="text" class="field" 
value="<?= $_SESSION['myForm']['email']; ?>" tabindex="2"/></p> 


<label for="country_code">Pais</label></p> 
<p><select name="country" style="width: 140px; cursor:pointer;cursor:hand;" 
class="field" id="country"value="<?= $_SESSION['country'] = $country;?>" tabindex="3"/> 
<option value="Country">...</option> 
<option value="Afganistan">Afghanistan</option> 
<option value="Albania">Albania</option> 
<option value="Algeria">Algeria</option> 

</select></p>    

<p><input type="submit" name="submit" id="submit" class="submit" 
value="ENVIAR" tabindex="8"/></p> 
<p><input type="hidden" name="submitted" value="true" /></p> 
</form> 

<?php 
} 


function process_form() { 
$name = trim($_POST['name']); 
$email = trim($_POST['email']); 
$country = trim($_POST['country_code']); 




$thanksmessage='<div id="thanks">Gracias! Tu mensaje ha sido enviado 
con &eacute;xito! </div>'; 

$errors = array(); 

if (empty($_POST['name'])) { 
    $errors[]=' tu nombre'; 
    } 

if (empty($_POST['email'])) { 
    $errors[]=' tu correo electr&oacute;nico'; 
    } else { 

    if(!preg_match("/^[_\.0-9a-zA-Z-][email protected]([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z] 
{2,6}$/i", stripslashes(trim($_POST['email'])))) { 
     $errors[]='El formato del correo electr&oacute;nico no está bien'; 
    } 
} 

if (empty($_POST['country_code'])) { 
    $errors[]=' tu pa&iacutes'; 
    } 


if (empty($errors)) { 




    $message .= "$env $_SERVER[$env]\n"; 

    if(!mail($to,$subject,$message,$headers)) { 
     exit("Disculpa se ha producido un error. Int&eacute;ntalo de nuevo. 
Gracias<"); 
    } else { 
     echo '<div id="subscriptfeedback">'. $thanksmessage .'</div>'; 
     unset($_SESSION['myForm']); 
     print_form(); 

    } 

} else { 
    echo '<div id="subscriptfeedback">Olvidaste'; 
    foreach ($errors as $msg) { 
      echo " $msg,\n"; 
     } 
    echo 'por favor intenta de nuevo.</div>'; 
    print_form(); 
} 
} 
?> 
+1

막연한 이야기 ​​... 얼마나 오래 기억하고 싶습니까? 영원히? 브라우저를 닫을 때까지? 너는 무엇에 접근 할 수 있니? 데이터베이스? –

+0

@Thomas : 혹시 국가별로 인구가 많은 SELECT가 있습니까? 그 코드도 붙여주세요. –

답변

1

당신은 예를 들어 세션에 저장할 수 있습니다

$_SESSION['country'] = $country; 
0

사용 세션이 선택한 도시를 기억하는 브라우저 게시물 값 또는 설정 쿠키를 기억.

+0

이것은 불완전한 대답입니다. 몇 가지 예제 코드 추가 및/또는 관련 자료에 대한 견적/링크 제공 –

0

사용자가 양식을 제출하고 오류를 표시 한 후 적절한 국가 양식 필드에서 국가 이름을 기억하기 만하면 해당 $ _POST 배열 요소를 국가 양식 필드에 출력 할 수 있습니다. 예 : echo (empty($_POST['country'])) : "" ? $_POST['country'].

그리고 덧붙여 name 속성을 select 태그에 추가해야합니다.

관련 문제