2014-02-15 3 views
-3

액세스 수준을 사용하여 로그인 시스템을 만들려고하는데 벨로우즈 코드가 항상 암호를 입력하십시오. 내가 잘못한 곳에서 나를 도와주세요.사용자 로그인 암호 오류

session_start(); 

if(isset($_REQUEST['submit'])) { 
    $username=$_POST['username']; 
    $mypassword=$_POST['password']; 
    if($username){ 
     if($password){ 
     require('conn/iclude.php'); 
     $password=sha1($password); 
     $query=mysql_query("SELECT * FROM admin where name='$username'"); 
     $numrow=mysql_num_rows($query); 
      if($numrow==1){ 
       $row=mysql_fetch_assoc($query); 
       $dbid=$row['id']; 
       $dbuser=$row['name']; 
       $dbpass=$row['pass']; 
       $role=$row['role']; 
       if($password==$dbpass) { 
        $_SESSION['username']=$dbuser; 
        $_SESSION['useridid']=$dbid; 
        if($role == 1){ 
        header('Location:admin.php'); 
        }elseif ($role==2) { 
        header('Location:1/neasp.php'); 
        }elseif ($role==3) { 
        header('Location:2/index.php'); 
        }elseif ($role==4) { 
        header('Location:3/index.php'); 
        }elseif ($role==5) { 
        header('Location:4/index.php'); 
        } 
       }else{} 
      }else{ 
       echo"Hello World"; 
       } 
     }else{echo "You must enter your password";} 

    }else {echo "You must enter your name";} 
} 

덕분에 아래에 시스템이 제대로 디버깅을 위해 구성된 경우 HTML 형태

답변

3
$mypassword=$_POST['password']; 
    ^^^^^^^^^^^ **MY** password 

    if($password){ 
     ^^----no **MY** 

, 예를 들면이다 display_errorserror_reporting이 켜지면 정의되지 않은 변수를 사용하는 것에 대한 경고가 표시됩니다. 개발/테스트 시스템은 * 이 아니어야합니다. 먼저에서 이러한 설정을 해제해야합니다.

당신은 또한 SQL injection attacks에 취약합니다. 서버 pwn3d를 가지고 즐기십시오.

+0

그런 7331 대답 – DarkBee

+0

고맙지 만 로그인 페이지에 누적 된 내용은 아무런 문제가 발생하지 않습니다. 내 사용자와 비밀번호도 정확합니다. – user3314254

+1

왜 작동해야합니까? 나중에 변수를 정의하지 않고'$ password = sha1 ($ password)'를 가지고 있습니다. 내가 암시 하듯이 정말로 display_errors/error_reporting을 켜야합니다. –