2014-07-22 2 views
0

로그인 페이지를 가지고 있습니다. 등록 페이지가 정상적으로 작동하지만 로그인 페이지에 문제가 있습니다. 내가 성공적으로 로그인하면 member.php라는 페이지로 리다이렉트되지만, 대신에 같은 페이지에 머무르며 어디로 가는지는 알 수 없습니다.login.php가 내 방향을 바꾸지 않는 이유는 무엇입니까?

<?php 
if(isset($_POST["submit"])){ 

if(!empty($_POST['user']) && !empty($_POST['pass'])) { 
    $user=$_POST['user']; 
    $pass=$_POST['pass']; 

    $con=mysql_connect('127.0.0.1:8889','root','root') or die(mysql_error()); 
    mysql_select_db('user_registration') or die("cannot select DB"); 

    $query=mysql_query("SELECT * FROM login WHERE username='".$user."' AND password='".$pass."'"); 
    $numrows=mysql_num_rows($query); 
    if($numrows!=0) 
    { 
    while($row=mysql_fetch_assoc($query)) 
    { 
    $dbusername=$row['username']; 
    $dbpassword=$row['password']; 
    } 

    if($user == $dbusername && $pass == $dbpassword) 
    { 
    session_start(); 
    $_SESSION['sess_user']=$user; 

    header("Location: member.php"); 
    } 
    } else { 
    echo "Invalid username or password!"; 
    } 

} else { 
    echo "All fields are required!"; 
} 
} 
?> 

<form action="" method="POST"> 
Username: <input type="text" name="user"><br /> 
Password: <input type="password" name="pass"><br /> 
<input type="submit" value="Login" name="submit" /> 
</form> 
+0

제출 후 URL의 주소는 무엇입니까? –

+0

아무데도 보내지 않습니다. – AlexMika

+0

mysql 함수 군은 더 이상 사용되지 않으며 지원은 사라질 것입니다. [PDO] (http://www.php.net/manual/en/book.pdo.php) 또는 [Mysqli] (http://php.net/manual/en/book.mysqli.php) . – ljacqu

답변

2

난 약간의 코드를 굴절시켰다. 당신은 당신이 할 필요가 없다는 것을 확인합니다. 먼저 로그인 정보를 기반으로 MySQL 결과를 가져온 다음 다시 비교합니다. 당신은 그렇게 할 필요가 없습니다.

이 코드는 작동합니다. 그렇지 않은 경우 잘못된 신용 정보로 로그인하거나 데이터베이스 구조에 문제가있는 것으로 확신합니다.

<?php 
if (isset($_POST['submit'])) { 
    if (!empty($_POST['user']) && !empty($_POST['pass'])) { 
     $con = mysql_connect('127.0.0.1:8889','root','root') or die(mysql_error()); 
     mysql_select_db('user_registration') or die('Could not select database'); 

     $login = 'SELECT * FROM login WHERE username = \'' . $user . '\' AND password = \'' . $pass . '\' LIMIT 1'; 
     $loginq = mysql_fetch_assoc(mysql_query($login)); 

     if (isset($loginq['username'])) { 
      session_start(); 
      $_SESSION['sess_user'] = $loginq['username']; 
      header('Location: member.php'); 
     } 
     else { 
      echo 'Invalid username or password!'; 
     } 

    } 
    else { 
     echo 'All fields are required!'; 
    } 
} 
?> 
+0

mysql_real_escape을 추가하십시오 - 이것은 결코 잊어서는 안됩니다 !!! 그리고'exit;''header()'다음에 좋은 루틴이 있습니다. 이전에 헤더가 코드 실행을 중단시키지 않는 몇 가지 이상한 경우를 보았습니다. – DarkSide

+0

@DarkSide'ext/mysql'은 일반적으로 사용되어서는 안됩니다 ... – OptimusCrime

+0

물론 이죠. – DarkSide

0

보십시오 당신이 HTML 형태로 게시하는 페이지를 추가,과 같이 : 또한

<form action="login.php" method="post"> 

저는 여기에 문제가 발생하는 할 수있다 생각 login.php 페이지 내 코드입니다 , PDO으로 조사하십시오. SQL 인젝션에 취약합니다.

+0

당신은 [ 'PHP POSTing to self']를 볼 수도 있습니다 (http://stackoverflow.com/questions/5826784/how-do-i-make-a-php-form-that-submits-to-self) – Coffeee

관련 문제