2012-10-02 2 views
0

jSON 및 Ajax를 사용하여 데이터베이스에 로그인해야 자체적으로 새로 고침해야합니다.로그인 양식 (Ajax 및 PHP 포함)

< auth.php>`

<head> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" 
    type="text/javascript"></script> 
    <link rel="stylesheet" type="text/css" href="css/style.css"> 
    <script type="text/javascript"> 
     $(document).ready(function() { 

$("#login").click(function() { 

    var action = $("#form1").attr('action'); 
    var form_data = { 
     email: $("#email2").val(), 
     password: $("#password").val(), 
    }; 
$.getJSON("login.php",form_data,function(data){ 
    switch(data.retval){ 
     case 0: $("#form").html("You have logged in successfully,"+ data.data.displayName+"!"); 
     break; 
     case 1: $("#status").html("Invalid Username/Password, please try again."); 
     break; 
     default: $("#status").html("Database error, please try again."); 
     break; 
    } 
}); 
}); 
}); 
    </script> 
</head> 

<body> 
    <div id="fullBG"> 
     <div id="formBG"> 
      <div id="form"> 
       <div id="status"> 
        <br /> 
        <br /> 
       </div> 
       <form id="form1" name="form1" action="login.php" method="post"> 
        <input type="email" placeholder="Email" name="email" id="email2" size="30"> 
        <br> 
        <input type="password" placeholder="Password" name="password" id="password" 
        size="30"> 
        <br> 
        <input type="button" value="Login" class="sub" id="login"> 
       </form> 
       <br /> 
       <br /> 
       <form method="link" action="register.php"> 
        <input type="submit" value="Register" class="register"> 
       </form> 
      </div> 
     </div> 
    </div> 
</body> 

</html>` 

< login.php>`

<?php 
ob_start(); 
session_start(); 
mysql_connect('', '', '') or 
die('Could not connect: ' . mysql_error()); 
mysql_select_db('phppro2') or 
die ('Can\'t use database: ' . mysql_error()); 

// retval: 0 - login ok, 1 - login failed, 2 - internal error 
$json = array("retval" => 2, "data" => NULL, "debug" => ""); 

$email = mysql_real_escape_string($_REQUEST['email']); 
$password = mysql_real_escape_string($_REQUEST['password']); 

$sql="SELECT * FROM users WHERE email='$email' and password='$password'"; 

$json['debug'] .= "SQL query was: ".$sql."\n"; 
$result=mysql_query($sql); 
if (!$result) { 
$json['debug'] .= "SQL query failed\n"; 
$json['debug'] .= "Other output: ". ob_get_contents(); 
ob_end_clean(); 
die(json_encode($json)); 
} 
$count=mysql_num_rows($result); 

if($count==1){ 
$json['retval'] = 0; 
$json['data'] = mysql_fetch_assoc($result); 
} else { 
$json['retval'] = 1; 
} 
$json['debug'] .= "Other output: ". ob_get_contents(); 
ob_end_clean(); 
echo json_encode($json);` 

// 오래된 문제 :

여기에 그렇게 할 수있는 고정 된 코드는 데이터베이스에서 정보를 검색하고 Ajax를 사용하여로드해야합니다. 모든 것이 제대로 작동했지만 auth.php 파일을 덮어 쓰고 잃어 버렸습니다. 나는 발걸음을 돌려 보려고했지만 길을 잃고있다. 페이지가 더 이상 자체적으로 새로 고쳐지지 않으며 데이터를 검색하지 않습니다. (데이터베이스 정보를 제거했지만 연결되었습니다.)

내 login.php 변경되지 않았으므로 정확한 것으로 간주됩니다.

+0

유일한 문제는'$ ("# login") 내에서 기본 동작을 방해하지 않는다는 것입니다. (function() {'을 클릭하면 양식 전송이 중단되고 페이지 리디렉션이 중단됩니다. 사실, 그것은 단지'$ ('# form1')이어야한다. submit (function() {return false});'모든 코드가 오면 false를 반환한다. – Ohgodwhy

+0

두 개의 버튼에 동일한 ID를 부여했습니다. – GBD

+0

switch 문이 누락되었습니다. – GBD

답변

0

1) 두 개의 버튼의 동일한 ID를 유지 안 (등록 & 로그인 버튼)

2)

$.getJSON("login.php",form_data,function(data){ 
     switch(data.retval){ 
      case 0: $("#form").html("You have logged in successfully,"+ data.data.displayName+"!"); 
      break; 
      case 1: $("#status").html("Invalid Username/Password, please try again."); 
      break; 
      default: $("#status").html("Database error, please try again."); 
      break; 
     } 
    } 

3) 또한 당신의 상태 사업부가 있어야한다 아래로 자바 스크립트 기능을 변경 http://samaradionne.com/phppro2/auth.php

에 빈

<div id="status"></div> 

4) 구문 오류 수

$(document).ready(function() { 

    $("#login").click(function() { 

     var action = $("#form1").attr('action'); 
     var form_data = { 
      email: $("#email").val(), 
      password: $("#password").val(), 
     }; 
$.getJSON("login.php",form_data,function(data){ 
     switch(data.retval){ 
      case 0: $("#form").html("You have logged in successfully,"+ data.data.displayName+"!"); 
      break; 
      case 1: $("#status").html("Invalid Username/Password, please try again."); 
      break; 
      default: $("#status").html("Database error, please try again."); 
      break; 
     } 
    }); 
    }); 
}); 
+0

두 ID는 확실히 감독 이었으므로 로그인 할 때만 썼습니다. 왜 data.data입니까? 이 코드를 변경했지만 여전히 작동하지 않습니다. "잘못된 사용자 이름/암호입니다. 다시 시도하십시오." 정보가 제출되기 전에 자동으로 나타납니다. –

+0

@erraziB ahh. 승인. 당신의주의를 끌고 싶었다 – GBD

+0

한가지 더 많은 것이 누락되었습니다. 내 대답을 편집했습니다 .. form_data를 전달해야합니다 – GBD