2015-05-08 2 views
1

У меня есть АЯКС функция в моем индексном файле:Войти регистрация с AJAX

var xmlhttp; 
function loadocget(url, func) 
{ 
    if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp = new XMLHttpRequest(); 
    } 
    else 
    {// code for IE6, IE5 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
     xmlhttp.onreadystatechange = func; 
     xmlhttp.open("GET", url, true); 
     xmlhttp.send(); 
} 

function verifyLogin() { 
    var username = document.getElementById('username').value; 
    var password = document.getElementById('password').value; 
    var formdata = "username=" + username + "&password=" + password; 
    loadocget("verify.php?" + formdata, function() 
    { 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) 
     { 
      var result = xmlhttp.responseText; 
      if (result != "true"){ 
       document.getElementById("ack").innerHTML = "<p>Your username or password is invalid</p>"; 
      }); 
      } 
    } 
} 

И форма также в моем индексном файле:

<div id="ack"></div> 
<form action="member.php" method="post" onsubmit="return verifyLogin();" name="login-form" id="login-form"> 
    <div> 
     <div class="form-group"> 
       <label for="username">Username: </label> 
       <input name="username" id="username" class="form-control" type="text" placeholder="Username" required/> 
     </div> 
     <div class="form-group"> 
       <label for="password">Password: </label> 
       <input name="password" id="password" class="form-control" type="password" placeholder="Password" required/> 
     </div> 
    </div> 
    <div> 
     <div class="form-group"> 
       <input type="submit" class="btn btn-danger form-control" id="login-submit" name="login-submit" value="Sign In" /> 
     </div> 
     <div class="form-group"> 
       <input type="button" class="btn btn-primary form-control" id="signup-button" name="signup-button" value="Sign Up"/> 
     </div> 
     </div> 
     <div class="form-group"> 
     <div id="forgot" class="link-div"><p style="cursor: pointer;">Forgot your username or password?</p></div> 
     </div> 
</form> 

и файл verify.php для проверки имени пользователя и пароль:

<?php 
$username = $_GET['username']; 
include_once 'connectDB.php'; 
$Table = "users"; 
$temp = $_GET['password']; 
$password = md5($username . $temp); 
$SQLstring = "SELECT * FROM $Table WHERE username='$username' AND password='$password'"; 
$result = mysql_query($SQLstring, $DBConnect); 
if (mysql_num_rows($result) == 0) { 
    echo false; 
} else { 
    echo true; 
} 
?> 

Когда я отлаживать эти коды с поджигатель, я мог видеть предупреждающее сообщение появилось, но форма еще взял пользователя в Memb er.php. Пожалуйста помоги. Большое спасибо.

ответ

1

Javascript проверяет ответ на строку символов "true", но ваш PHP-код отправляет логическое значение true или false. Когда вы эхо их, true становится 1, а false - пустой строкой.

Изменить это:

if (mysql_num_rows($result) == 0) { 
    echo "false"; 
} else { 
    echo "true"; 
} 

Кроме того, необходимо изменить verifyLogin так, что она препятствует нормальной формы представления (вернув false). После того, как он получит успешный ответ, он может отправить форму для реального.

function verifyLogin() { 
    var username = document.getElementById('username').value; 
    var password = document.getElementById('password').value; 
    var formdata = "username=" + username + "&password=" + password; 
    loadocget("verify.php?" + formdata, function() 
    { 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) 
     { 
      var result = xmlhttp.responseText; 
      if (result != "true"){ 
       document.getElementById("ack").innerHTML = "<p>Your username or password is invalid</p>"; 
      } else { 
       document.getElementById("login-form").submit(); 
      } 
      } 
    } 
    return false; 
} 
+0

Привет, я просто попробовал ваше решение, но он не работал. Страница индекса по-прежнему занимала меня на странице member.php. – Luciferis

+0

Убедитесь, что ваш скрипт не печатает ничего, кроме этих двух выражений 'echo'. Избавьтесь от строки '?>' - после нее может появиться новая строка. – Barmar

+0

Большое спасибо за то, что вы придерживаетесь меня. К сожалению, я просто применил ваше предложение, и оно все еще не работает. – Luciferis

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