2013-11-27 4 views
-1

PHP를 사용하여 양식의 유효성을 검사하려고합니다. 유효성을 검사하면 환영 메시지가 표시됩니다. 그렇지 않으면 인덱스 페이지로 리디렉션됩니다. 변수를 저장하기 위해 세션을 사용했습니다. 하지만 문제는 양식을 제출할 때 아무런 문제가되지 않습니다. 내 스크립트는 다음과 같습니다.PHP 세션을 사용하여 양식 유효성 검사

<?php session_start(); 
    $_SESSION['reg'] = array(); 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $passwd = $_POST['passwd']; 
    $repasswd = $_POST['repasswd']; 

if(empty($_POST)){ 
    header("location:register.php"); 
} 
else 
{ 
    if(empty($name)){ 
     $_SESSION['reg']['name'] = "Please enter name"; 
    } 
    if(empty($email)){ 
     $_SESSION['reg']['email'] = "Please enter email"; 
    } 
    if (empty($passwd)) { 
     $_SESSION['reg']['passwd'] = "please enter a password"; 
    } 
    elseif (strlen(passwd)>16) { 
     $_SESSION['reg']['passwd'] = "At most 16 chars"; 
    # code... 
    } 
    if ($passwd != $repasswd) { 
     $_SESSION['reg']['repasswd'] = "Passwords don't match"; 
    } 
    if (empty($_SESSION['reg'])) { 
     header("location:welcome.php"); 
    } 
    else 
    { 
     $_SESSION['data'] = array(); 
     foreach($_POST as $id=>$val) 
     { 
      $_SESSION['data'][$id] = $val; 

     } 
     header("location:register.php"); 
    } 

?>  

양식을 제출하면 빈 페이지가 표시됩니다.

+2

페이지 상단에있는'ini_set ('display_errors', 'on')'설정 방법은 무엇입니까? –

+0

아무것도하지 않습니다. (..? php? –

+1

아니요. '

답변

1

문제는 그들이 비어 있지 않으면 당신은 내가보기 엔 이전 세션에 포스트 변수를 넣어 일부 SQL 주입 방지하고 제안 이전

if (empty($_SESSION['reg'])) { 

확인에 세션으로 게시물 변수를 저장하지 않는 것입니다 범위.

UPDATE : 대신 if(empty($name)){을 확인하고 세션에서 오류 메시지를 설정, 세션 범위 변수를 원한다면, 내가 이런 짓을 했을까 그래서 :

if(!empty($name)){ 
    $_SESSION['reg']['name'] = $name; 
} else { 
    // error handling 
} 

이것을하면 세션 변수를 설정합니다 게시 된 값은 비어 있지 않습니다. 이제 나중에 세션 변수를 확인할 때 이름 변수 값이 포함되어 비어 있지 않습니다.

+0

나는 나중에 SQL 주입 방지를 할 것이지만, 내가 무엇을 말하고 있는지 이해하지 못한다. .. –

+0

'(empty ($ _ SESSION [ 'reg'])) {'이 참이면, post 변수를 저장하면 안됩니다. 그냥 환영 페이지로 가야합니다. –

+0

예를 들어 답을 업데이트했습니다. 세션 설정 방법 변수. – Revent