2017-05-15 14 views
-4

ajax 함수를 사용하여 다른 종류의 로그인 값을 반환합니다. 와 나는 문제 3 종류의 피하려고 노력 해요 :응답에서 if-else를 사용하여 ajax를 반환합니다.

1 - 사용자의 로그인이 잘못되면

2 - 사용자의 SN이 잘못되면

3 - 사용자의 암호가 잘못되면

$connect = new database();  
    $info = mysql_query("SELECT * FROM myinfo WHERE myinfo.user_login = '$login_user'"); 
    if (mysql_num_rows($info) == 0) { 

     echo 'error_login'; 

    } 

    $info2 = mysql_query("SELECT * FROM myinfo WHERE myinfo.user_sn = '$sn_user'"); 

    if (mysql_num_rows($info2) == 0) { 

     echo 'error_sn'; 
    } 

    $info3 = mysql_query("SELECT * FROM myinfo WHERE myinfo.user_pw = '$user_pw'"); 

    if (mysql_num_rows($info3) == 0) { 

     echo 'error_pw'; 
    } 

내 아약스가 나타날 수 있습니다 내 PHP 파일에서 나는 데이터가 존재하는 경우,하지 않을 경우, 내가 발견되지 않은 하나에 오류의 유형을 보내드립니다 검색 세 가지 응답 : Cpt.Kangar00 말했듯이

 $.ajax({ 
       url: "includes/enter.php", 
       data: { 
        login_user: $("#login").val(), 
        sn_user: $("#sn").val(), 
        user_pw: $("#pw").val() 
        }, 

        success:function(response) 
        { 
         if(response == "error_login") 
         { 
          alert("Invalid login!"); 
         } 
         else if(response == "error_sn") 
         { 
          alert("Invalid SN!"); 
         } 
         else if(response == "error_pw") 
         { 
          alert("Invalid password!"); 
         } 
         else 
         { 
          alert("Success!"); 
         } 

        } 
      }); 

, 나는 "=="사용 (이미 편집). 내 주요 문제는 echo json_encode("error") 대신 echo을 사용하는 것이 었습니다.

+6

'='은 할당 연산자입니다. '=='는 비교 연산자입니다. if 조건부 확인 – abhishekkannojia

+1

내 사용자 이름과 암호를 보내면 코드에 a) 내 사용자 이름이있는 일부 사용자와 b) 내 암호가있는 일부 사용자 (다른 사용자)가 있는지 확인합니다. "내 사용자 이름이있는 사용자도 내가 보낸 암호 ". – James

+0

아마도 문제는 아니지만 데이터를 별도의 테이블에 저장해야하는 이유는 무엇입니까? – chris85

답변

1

당신은 POST 중 하나를 사용하거나 데이터를 전송하는 GET, 예를 들어 필요 데이터베이스 쿼리를 훨씬 더 안전하고 효율적으로 실행할 수 있습니다. 이것은 예제 스크립트이며 정리가 필요 하겠지만 좋은 출발점이되어야합니다. PDO 및 준비된 진술에 대한 자세한 내용은 여기 http://php.net/manual/en/pdo.prepare.php을 참조하십시오.

+0

예, 연결하기 전에 연결을 사용하고 있습니다. – MattDAVM

+0

@MattDAVM 제 대답을 편집했으며 현재 작동하는 예제입니다. –

0

"=="을 사용해야하는 곳에 "="를 사용합니다. 과 같이 PHP의 데이터에 액세스 한 후

$(document).ready(function() { 
    $.ajax({ 
     type: 'POST', 
     url: "data.php", 
     data: { 
      user_login: $("#user_login").val(), 
      user_sn: $("#user_sn").val(), 
      user_pw: $("#user_pw").val(), 
     }, 
     success:function(response) 
     { 
      if(response == "error_login") 
      { 
       alert("Invalid login!"); 
      } 
      else if(response == "error_sn") 
      { 
       alert("Invalid SN!"); 
      } 
      else if(response == "error_pw") 
      { 
       alert("Invalid password!"); 
      } 
      else 
      { 
       alert("Success!"); 
      } 
     } 
    }); 
}); 

을 그리고 :

$user_login = $_POST['user_login']; 
$user_sn = $_POST['user_sn']; 
$user_pw = $_POST['user_pw']; 

$dbh = new PDO('mysql:host=localhost;dbname=stackoverflow', 'root', ''); 

$query = $dbh->prepare("SELECT * FROM myinfo WHERE user_login = :user_login"); 
$query->bindParam(':user_login', $user_login); 
$query->execute(); 
$result = $query->fetchAll(PDO::FETCH_ASSOC); 

if(!$result) { 
    echo json_encode('error_login'); 
    return; 
} 

$query = $dbh->prepare("SELECT * FROM myinfo WHERE user_sn = :user_sn"); 
$query->bindParam(':user_sn', $user_sn); 
$query->execute(); 
$result = $query->fetchAll(PDO::FETCH_ASSOC); 

if(!$result) { 
    echo json_encode('error_sn'); 
    return; 
} 

$query = $dbh->prepare("SELECT * FROM myinfo WHERE user_pw = :user_pw"); 
$query->bindParam(':user_pw', $user_pw); 
$query->execute(); 
$result = $query->fetchAll(PDO::FETCH_ASSOC); 

if(!$result) { 
    echo json_encode('error_sn'); 
    return; 
} 

준비된 문은

 $.ajax({ 
      url: "includes/enter.php", 
      data: { 
       login_user: $("#login").val(), 
       sn_user: $("#sn").val(), 
       user_pw: $("#pw").val() 
       }, 

       success:function(response) 
       { 
        if(response == "error_login") 
        { 
         alert("Invalid login!"); 
        } 
        else if(response == "error_sn") 
        { 
         alert("Invalid SN!"); 
        } 
        else if(response == "error_pw") 
        { 
         alert("Invalid password!"); 
        } 
        else 
        { 
         alert("Success!"); 
        } 

       } 
     }); 
+0

"=="을 사용했지만 여전히 작동하지 않습니다. – MattDAVM

+0

AJAX 기본값을 사용하는지 여부가 어떻게 반환되는지는 잘 모르겠지만 기본 값일 경우 json_encodes를 제거하십시오. PHP, 그래서 : echo json_encode ('error_login'); echo 'error_login'이 될 것입니다; –

+0

이제는 두 번 제거하고 아직 이해하지 못했기 때문에 여전히 효과가있었습니다. 글쎄, 나는 json_encode()없이 유지할 것이다. – MattDAVM