2014-02-28 2 views
-1

내 login.php 스크립트는 다음과 같습니다.로그인 스크립트에 어떤 문제가 있습니까?

실행하면 입력 된 내용의 배열 (오류 2)을 덤프하여 모든 것을 완전히 건너 뜁니다 (생각합니다). 나는 무엇이 잘못되었는지 전혀 모른다.

<?php 

    include('../../content/php/base.php'); 

    // Get data 
    $user = $_REQUEST['user']; 
    $pass = $_REQUEST['pass']; 

    // Encrypt password 
    include('../../content/php/salt.php'); 
    $pass = crypt($pass,$salt); 

    // Check database for user/check session 
    if(!empty($_SESSION['LoggedIn']) && !empty($_SESSION['user'])) { 
     header("Location: websiteURL"); 
    } elseif(!empty($user) && !empty($pass)) { 
     $user = mysqli_real_escape_string($con, $user); 

     if($result = mysqli_query($con, "SELECT * FROM users WHERE `user`='".$user."' AND `pass`='".$pass."'")) { 
      $row_cnt = mysqli_num_rows($result); 
      if($row_cnt == 1) { 
       $row = mysqli_fetch_array($result); 
       $email = $row['email']; 

       $_SESSION['user'] = $user; 
       $_SESSION['email'] = $email; 
       $_SESSION['LoggedIn'] = 1; 

       header("Location: websiteURL"); 
      } else { 
       echo "Error 1"; 
       die(); 
      } 
    } else { 
     echo "<pre>"; // dumps the array onto multiple lines instead of one 
     print_r($_REQUEST); 
     echo "</pre>"; 
     echo "Error 2"; 
     die(); 
    } 
} else { 
    echo "Error 3"; 
    die(); 
} 

?> 

다음은 print_r ($ _REQUEST)의 전체 출력입니다. :

Array 
(
    [user] => username 
    [pass] => password 
    [PHPSESSID] => 5958246ece69dfdff197ec46e4771aac 
) 
Error 2 
+1

추가 할 내용은 다음과 같습니다. print_r ($ _REQUEST)의 전체 출력. – Daniel

+0

'$ pass = mysqli_real_escape_string ($ con, $ pass);'를 추가 할 수도 있습니다. – CodeAngry

+2

잠깐'session_start(); '가 어딘가로드 되었습니까? 왜 내가 그 질문을 보지 못했을 때 항상 그 질문을해야만 하는가? 바보 나. –

답변

1

조회에 분명히

if($result = mysqli_query($con, "SELECT * FROM users WHERE `user`='".$user."' AND `pass`='".$pass."'") {...} 

$con 유효한 연결을 실패 시작 보장?

users 테이블 이름 주위에 백틱을 넣어보십시오.

일부 오류 검사를 수행해야합니다.

의 출력을 확인하십시오
// You can add this to the Error 2 block (for testing.. not production use) 
echo mysqli_error($con); 

이것은 잘못된 것의 "아이디어"를 줄 것이며, 다른 사람들에게 도움이 될 것입니다.

+0

그가'Error 2' 결과를 얻는다면, 쿼리는 실행되지 않습니다. '$ user'와'$ pass' 변수 중 하나는'empty()'입니다. '오류 1'은 쿼리에 문제가 있는지 보여줍니다. –

+0

@JonathanKuhn 그럴 경우, 그는 '오류 3'이 될 것이라고 생각합니다. –

+0

예, 내 잘못입니다. 탭이 엉망이 된 것을 봅니다. 'empty()'호출이'Error 2'와 ​​일치하도록 탭으로 표시됩니다. –

1

session_start()를 사용해보십시오. 포함하기 전에 이것은 서버 세션이

관련 문제