2012-03-14 3 views
0

Эй, я пытаюсь написать код для системы входа, это мой первый раз, и я использовал учебник онлайн. Исходный Javascript отлично работает, и ошибки появляются, когда входы остаются пустыми. Однако, когда я ввожу текст на входах и щелкаю знак, ничего не происходит. Мне кажется, что он не вызывает PHP-файл, но я не вижу никакой причины, почему он не будет правильно ссылаться? Любая помощь была бы очень признательна!Мой логин jquery неправильно вызывает php-файл

<?php 
    include ("Includes/dbConnect.php"); 
    $u=$_POST['u']; 
    $p=$_POST['p']; 

    //Strip slashes 
    $u = stripslashes($u); 
    $p = stripslashes($p); 

    //Strip tags 
    $u = strip_tags($u); 
    $p = strip_tags($p); 


    $check = mysqli_query("SELECT * FROM Login WHERE login_user ='$u' AND login_pass='$p'")  or die(mysqli_error()); 
    $check = mysqli_num_rows($check); 
    if($check !=="0"){ 
    $results = mysqli_query("SELECT * FROM Login WHERE login_user = '$u'") or die(mysqli_error()); 
     while ($row = mysqli_fetch_assoc($results)) { 
      $login_user=$row['login_user']; 
      session_register('login_user'); 
      $_SESSION['login_user'] = $Login_user; 
      echo "1"; 
    } 
    } 
?> 

и вот код JavaScript

<script type="text/javascript"> 
    $(document).ready(function() { 
     $(".sign_b_btn").live("click", function() { 
      var u = $("#u").val(); 
      var p = $("#p").val(); 

      if (u == "") { 
       $("#u").css("border-color", "red"); 
       $("#un").css("color", "red"); 
       $(".error").show().html("Please enter your username!"); 
       $("#p").css("border-color", "#606060"); 
       $("#up").css("color", "#333333"); 
      } else if (p == "") { 
       $("#u").css("border-color", "#606060"); 
       $("#un").css("color", "#606060"); 
       $(".error").show().html("Please enter your Password!"); 
       $("#p").css("border-color", "red"); 
       $("#up").css("color", "red"); 
      } else { 

       dataString = 'u=' + u + '&p=' + p; 
       $.ajax({ 
        type: "POST", 
        url: "Ajax/login_php.php", 
        data: dataString, 
        cache: false, 
        success: function (html) { 
         if (html == "") { 
          $(".error").show().html("The username or password you entered is incorrect!"); 
          $("#p,#u").css("border-color", "red"); 
          $("#up,#un").css("color", "red"); 
         } else if (html == "1") { 
          $(".error").fadeOut(1000); 
          $("#u").css("border-color", "#606060"); 
          $("#un").css("color", "#333333"); 
          $("#p").css("border-color", "#606060"); 
          $("#up").css("color", "#333333"); 
          $(".center").animate({ 
           opacity: 0.25, 
           left: '+=900', 
           height: 'toggle' 
          }, 5000, function() { 
           $(".done").slideDown(200).html("Welcome " + u); 
           setTimeout(function() { 
            var u = $("#u").val(""); 
            var p = $("#p").val(""); 
            window.location = "index.php"; 
           }, 5000); 
          }); 
         } 
        } 
       }); 
      } 
     }); 
    }); 
</script> 
+0

Вы посмотрели на консоль, чтобы узнать, есть ли какие-либо ошибки? Или проверили сетевую активность в своих инструментах браузера, чтобы узнать, выполняется ли запрос HTTP и что он возвращает? У вас нет обратного вызова ошибки, поэтому, если есть ошибка, ничего не произойдет. –

+0

Я не вижу здесь никаких очевидных проблем, но было бы полезно узнать, что происходит на сайте. Получаете ли вы ответ 404 или 500 с сервера, когда происходит вызов Ajax? Любые ошибки JS? (Вы можете увидеть их через вкладки «Сеть и Консоль» Chrome.) Если это работает, что возвращает сервер? ** Редактировать **: Извините, Джейсон - слишком медленно пишет ... – meloncholy

+0

Перейдите по адресу http://www.php-login-script.com и загрузите скрипт (бесплатно). Он также использует js для проверки. Вы можете ** проверить ** это. –

ответ

0

ответ на вашу проблему сессии:

редактировать код PHP, так что ваш сценарий начинается с вызова session_start();

например:

<?php session_start(); 
//rest of your php code 

заменить строки:

session_register('login_user'); 
$_SESSION['login_user'] = $Login_user; 

с:

$_SESSION['login_user'] = $Login_user; 

Вы получали ошибку, что вы упомянули, так как функция session_register(); устарел в PHP версии 5.3.0 и УДАЛЕН с PHP версии 5.4.0. $ _SESSION - это глобальный массив, доступный для вас после session_start(); вызов.

Удачного программирования :)

0

спасибо за помощь, ребята, на самом деле помогли мне понять это. Готовый код, если он вас интересует:

<?php 

include ("../Includes/dbConnect.php"); 
$u=$_POST['u']; 
$p=$_POST['p']; 

//Strip slashes 
$u = stripslashes($u); 
$p = stripslashes($p); 

//Strip tags 
$u = strip_tags($u); 
$p = strip_tags($p); 



$query = "SELECT * FROM Login WHERE login_user ='$u' AND login_pass='$p'"; 
$check = mysqli_query($cxn,$query) or die("Couldn't execute query!"); 
$check = mysqli_num_rows($check); 
if($check !=="0"){ 
$results = mysqli_query($cxn,"SELECT * FROM Login WHERE login_user = '$u' AND login_pass='$p'") or die("Couldn't execute query2!"); 
    while ($row = mysqli_fetch_assoc($results)) { 
     $username= $u; 
     session_register('Login'); 
     $_SESSION['user'] = $username; 
     echo "1"; 
} 
} 


?> 
+0

Перед тем, как вставлять их в свой запрос, вы должны избежать вашей переменной '$ u' и' $ p'. Причина в том, что кто-то может получить доступ к любой учетной записи с помощью SQL-инъекции. Скажем, я отправляю пользователю 'admin' и пароль' 'или' '=' ', ваш SQL-запрос станет' SELECT * FROM Login WHERE login_user = 'admin' AND login_pass = '' или '' = '' '. Предполагая, что у вас есть пользователь с именем 'admin', я бы получил доступ к этой учетной записи, даже не зная пароля. – Maxime

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