2013-03-20 4 views
0

Я делаю простую программу для имитации аутентификации с использованием AJAX и PHP. Ниже приведен мой код. Он будет перенаправлен на «/?» но ничего не произошло. Я пытался использовать checkLogin(); return false; в onclick, но это не сработало.Аутентификация с использованием AJAX и PHP

index.php

<script type="text/javascript" src="validation.js"></script> 
<form> 
    <p> 
     <label>Username <abbr title="Required">*</abbr></label> 
     <input id="usernamelogin" type="text" value="" /> 
    </p> 
    <p> 
     <label>Password <abbr title="Required">*</abbr></label> 
     <input id="passwordlogin" type="text" value="" /> 
    </p>     
    <p> 
     <input id="login" type="submit" value="Login" onclick="checkLogin()" /> 
    </p> 
</form> 

validation.js

function checkLogin(){ 
    var u = document.getElementById("usernamelogin").value; 
    var p = document.getElementById("passwordlogin").value; 

    if(window.XMLHttpRequest){ 
     xmlhttp = new XMLHttpRequest(); 
    } 
    else{ 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.onReadystatechange = function(){ 
     if(xmlhttp.readyState == 4 && xmlhttp.status == 200){ 
      if(xmlhttp.responseText == u){ 
       alert(':)'); 
      } 
      else{ 
       alert(':('); 
      } 
     } 
    } 

    xmlhttp.open("GET", "login.php?u=" + u + "&p=" + p, true); 
    xmlhttp.send(); 
} 

login.php

<?php 
    $u = $_GET['u']; 
    $p = $_GET['p']; 

    $host = 'localhost'; 
    $user = 'root'; 
    $pass = ''; 
    $db = 'db'; 

    $con = mysql_connect($host, $user, $pass); 
    if(!$con) die("Could not connect: " . mysql_error()); 

    mysql_select_db($db, $con); 
    $query = "select username from login where username = '" . $u . "' and password = '" . $p . "'"; 
    $result = mysql_query($query); 
    $row = mysql_fetch_array($result); 
    echo $row['username']; 
    mysql_close($con); 
?> 
+0

Почему бы не использовать '/ login.php', чтобы убедиться, что он выполнит запрос к тому же URL-адресу, независимо от текущего URL-адреса. Также вы можете проверить, выполняются ли какие-либо запросы XHR с помощью инструментов разработчика Chrome или Firebug для Firefox? –

+0

если хотите, у меня есть предложения 1) mysql_ * лишены 2) этот метод аутентификации очень слаб! –

+0

Не ответ на ваш вопрос, но вы не дезактивировали свои входы db, что очень опасно. Конечно, не безопасно для производства. – Christopher

ответ

2

изменить следующий код

xmlhttp.onReadystatechange 

в

xmlhttp.onreadystatechange 

и он работает. А также используйте onclick="checkLogin(); return false;" на входе type="submit".

0

Что вы можете сделать, это удалить тыс е OnClick событие от типа входного = «отправить» и добавить его в виде:

<form onsubmit="return checkLogin()"> 

Для того, чтобы эту работу, вы должны добавить

return false 

к вашей яваскрипта функции, прямо перед тем, как закрыть функция

+0

Спасибо за ваш ответ, но это не сработало. Результат, который я получаю, такой же, как когда я положил 'onclick = 'checkLogin()'; return false; 'input type =" submit ". – shankshera

Смежные вопросы