2013-12-14 4 views
0

나는 자바 스크립트를 사용하는 초보자이며 PHP 페이지에 사용자 이름과 암호를 제출 한 다음 데이터베이스에 해당 객체가 있는지 확인합니다. 다른 페이지.php & ajax가 잘못된 결과를 반환합니다.

현재 양식을 제출하면 false 값을 반환합니다. 그러나 PHP 페이지에 값을 추가하면 true를 반환합니다.

그래서 내가 아약스와 PHP 사이에 문제가 있어야한다고 생각하지만 어디서 잘못 될지 알 수 없으므로 어떤 제안도 감사 할 것입니다.

나는 크롬 개발자 도구에서 코드를 실행하면 콘솔이 경고를 표시 :

event.returnValue가되지 않습니다. 대신 event.preventDefault() 표준을 사용하십시오.

그러나 나는 그것이 무엇과 관련이 있는지 확실하지 않지만, Google 검색을 수행하면 경고 일 뿐이지 만 다른 경고는 표시되지 않습니다.

HTML 양식

<label id="errorMessage"></label> 
<form method="post" class="login"> 
    <input name="username" type="text" placeholder="Username"/> 
    <input name="password" type="password" placeholder="Password"/> 
    <input type="submit" name="login" class="login" value="Login" id="orange"/> 
</form> 

아약스

$(document).ready(function(){ 
$('form.login').submit(function() { 
var username = $(this).find('.username').attr('value'); 
var password = $(this).find('.password').attr('value'); 
// ... 
    $.ajax({ 
     type: "POST", 
     url: "login.php", 
     data: "username="+ username +"& password="+ password, 
     success: function(response){ 
     if(response == 'true') 
       { 
        window.location.href='main.html'; 
       } 
       else 
       { 
        $("#errorMessage").html(response); 
       } 
     } 
    }); 
    return false; 
     }); 
     }); 

PHP는

$username = mysql_real_escape_string($_POST['username']); 
    $password = md5(mysql_real_escape_string($_POST['password'])); 

    if(!empty($username) && !empty($password)) 
    { 
    $result = mysql_query("SELECT * FROM users WHERE username='$username' and password ='$password'"); 
    $num_rows01 = mysql_num_rows($result); 
    if($num_rows01 === 1) 
    { 
     echo 'true'; 
    } 
    else 
    { 
     echo 'false'; 
    } 
    } 
+0

문제의 범위를 좁히려 고 시도 했습니까? 별도로 각 스 니펫을 테스트하고, Chrome/Firefox 디버그 도구를 사용하고, 보고서를 표시하거나 로그를 읽는 등 어떤 스 니펫이 제대로 작동하지 않는지 확인하십시오. –

+0

감사합니다. 수동으로 양식 데이터를 추가하여 PHP 코드를 시도했는데 사실이 반환되었습니다. , 그래서 나는 당신이 말한 것을 시도하고 양식과 아약스를 점검 할 필요가 있다고 생각합니다. 건배 –

+0

입력 형식을 submit ... button ... and jquery .submit .click;)로 변경해보십시오. – Hackerman

답변

0

귀하는 그 값을 retrieveing ​​아니에요 .SO usernamepassword라는 어떤 클래스를 가지고 있겠지.

변경이 :

var username = $(this).find('.username').attr('value'); 
var password = $(this).find('.password').attr('value'); 

사람 :

var username = $("[name='username']").val(); 
var password = $("[name='password']").val(); 

참고 : 클라이언트 측에서 암호를 가져 오는 위험 귀하의 사이트는이 방법이 hacked.So을 얻기의 높은 가능성을 가지고 매우 안전하지 않으며 정상적인 양식 제출을 사용하도록 제안하십시오.

+1

완벽하게 작동 해 주셔서 감사합니다. –

관련 문제