2015-01-02 3 views
-2

PHP와 JS로 로그인 스크립트를 만들고 있습니다. 내 양식에 다른 오류 메시지가 나타나고 싶지만 불행히도 모든 것이 잘 작동하지는 않습니다. 예를 들어 그러한 사용자가 있는지 확인하는 것은 잘 작동하지만 올바르게 이메일과 잘못된 비밀번호를 입력하면 profile.php로 리디렉션됩니다. u = % 3Cbr % 20/% 3E % 3Cb % 3Eotice % 3C/(..). 내가 실수 한 곳?PHP에서 JS 오류 메시지로 로그인하십시오.

login.php

if(isset($_POST["e_l"])){ 
    include_once("db/db_fns.php"); 
    $e = mysqli_real_escape_string($db_conx, $_POST['e_l']); 
    $p = $_POST['p_l']; 
    $ip = preg_replace('#[^0-9.]#', '', getenv('REMOTE_ADDR')); 
    if($e == "" || $p == ""){ 
     $message = preg_replace('/[\/_| -]+/', '', 'loginfailed'); 
     echo $message; 
     exit(); 
    } else { 
     $sql = "SELECT id, username, password, activated FROM users WHERE email='$e' LIMIT 1"; 
     $query = mysqli_query($db_conx, $sql); 
     $row = mysqli_fetch_row($query); 
     $activated = $row['activated']; 
     $number = mysqli_num_rows($query); 

     if ($number <=0){ 
      $message = preg_replace('/[\/_| -]+/', '', 'nouser'); 
      echo $message; 
      exit(); 
     } else { 
      if ($activated = '0') { 
       $message = preg_replace('/[\/_| -]+/', '', 'noactiv'); 
       echo $message; 
       exit(); 
      } else { 
       $db_id = $row[0]; 
       $db_username = $row[1]; 
       $db_pass_str = $row[2]; 

       if (password_verify ($p, $db_pass_str)) { 
        $_SESSION['userid'] = $db_id; 
        $_SESSION['username'] = $db_username; 
        $_SESSION['password'] = $db_pass_str; 
        setcookie("id", $db_id, strtotime('+30 days'), "/", "", "", TRUE); 
        setcookie("user", $db_username, strtotime('+30 days'), "/", "", "", TRUE); 
        setcookie("pass", $db_pass_str, strtotime('+30 days'), "/", "", "", TRUE); 
        $sql = "UPDATE users SET ip='$ip', lastlogin=now() WHERE username='$db_username' LIMIT 1"; 
        $query = mysqli_query($db_conx, $sql); 
        echo $db_username; 
        exit(); 
       } else{ 
        $message = preg_replace('/[\/_| -]+/', '', 'loginfailed'); 
        echo $message; 
        exit(); 
       } 
      } 
     } 
    } 
    exit(); 
} 

login.js

당신이 무슨 말을하는지으로 판단
function login(){ 
    var e_l = _("email_l").value; 
    var p_l = _("password_l").value; 

    if(e_l == "" || p_l == ""){ 
     _("status_l").innerHTML = '<div class="message_b"><img src="images/error.gif"/> Fill out all of the form data</div>'; 
    } else { 
     _("loginbtn").style.display = "none"; 
     _("status_l").innerHTML = '<img src="images/wait.gif"/>'; 
     var ajax = ajaxObj("POST", "login.php"); 
     ajax.onreadystatechange = function() { 
      if(ajaxReturn(ajax) == true) { 

       if (ajax.responseText.trim() == "nouser"){ 
        _("status_l").innerHTML = '<div class="message_b"><img src="images/error.gif"/> Wrong username</div>'; 
        _("loginbtn").style.display = "block"; 
       } else if (ajax.responseText.trim() == "noactiv"){ 
        _("status_l").innerHTML = '<div class="message_b"><img src="images/error.gif"/> Your account is no active</div>'; 
        _("loginbtn").style.display = "block"; 
       } else if (ajax.responseText.trim() == "loginfailed"){ 
        _("status_l").innerHTML = '<div class="message_b"><img src="images/error.gif"/> Login unsuccessful, please try again</div>'; 
        _("loginbtn").style.display = "block"; 
       } else { 
        window.location = "profile.php?u="+ajax.responseText; 
       } 
      } 
     } 
     ajax.send("e_l="+e_l+"&p_l="+p_l); 
    } 
} 

답변

0

및 코드, password_verify 당신을 위해 작동하지 않는 것 같습니다. 데이터베이스의 암호가 PHP의 password_hash으로 해쉬되었는지 확신합니까?

+0

예, 올바른 이메일과 비밀번호를 게시하면 로그인되어 쿠키가 설정되므로 password_hash가 정상적으로 작동합니다. 하지만 그 경우에도 내가 먼저 로 리디렉션됩니다. http : //localhost/uinspireme/profile.php? u = % 3Cbr % 20/% 3E % 3Cb % 3Eotice % 3C/b % 3E : % 20 % 20Undefined % 20index : % 20 활성화 % 20in % 20 % 3Cb % 3EC : \ xampp \ htdocs \ uinspireme \ login.php % 3C/b % 3E % 20on % 20line % 20 % 3Cb % 3E46 % 3C/b % 3E % 3Cbr % 20/% 3E ** USERNAME ** 하지만 profile.php와 같아야합니다. u = USERNAME 문제는 JS 코드에있을 수 있다고 생각합니다. – Janek

관련 문제