2013-08-22 5 views
1

MySQL 데이터베이스에 사용자를 등록/로그인 할 수있는 기본 로그인 시스템을 만들고 있습니다. 나는 사람들이 등록 할 수 있도록 DB에 해시 된 암호와 사용자 이름을 저장합니다. 누군가 로그인 할 때 사용자 이름과 암호가 일치하는지 여부에 따라 성공 메시지 또는 오류 메시지를 표시합니다.사용자 이름 및 암호가 올바른 경우 세션 시작

내 문제는 로그인 기능에 있습니다. 사용자 세션을 만들고 현재 로그인되어있는 성공 메시지를 표시하는 대신 사이트의 로그인 된 유일한 섹션으로 리디렉션해야합니다. 나는 그 작업을 수행하는 방법의 확실 해요 ... 여기

내 코드입니다 :

로그인/그것은 매우 당신의 나머지 부분을 구조화하는 방법에 따라 기능을

function login($username, $password) { 
    $userpass = sha1($password); 
    $result = mysqli_query($con, "SELECT * FROM members WHERE username='$username' AND password='$userpass'"); 
    while($row = mysqli_fetch_array($result)) { 
     $success = true; 
    } 
    if($success == true) { 
     echo 'Success!'; 
    } else { 
     echo '<div class="alert alert-danger">Oops! It looks like your username and/or password are incorrect. Please try again.</div>'; 
    } 
} // END LOGIN FUNCTION 

function register($username, $password) { 
    $userpass = sha1($password); 

    // Check if Username Exists 
    $result = mysqli_query($con,"SELECT * FROM members WHERE username='$username'"); 
    while($row = mysqli_fetch_array($result)) { 
     $userexist = 1; 
    } 
    if($userexist > 0) { 
     echo '<div class="alert alert-danger">Sorry, it looks like that username is already taken.</div>'; 
    } else { 
     $newmember = "INSERT INTO members SET username='$username', password='$userpass'"; 
     if(mysqli_query($con,$newmember)) { 
      echo '<div class="alert alert-success">Congrats! You can now log in using your username and password</div>'; 
     } 
    } 
} 
+1

처럼 생각 더 나은 답변을 얻을해야 /domain.com/pagetoredirectto ');' – Novocaine

+0

매우 조잡한 방법은 HTML에 ['meta refresh'] (http://en.wikipedia.org/wiki/Meta_refresh)를 삽입하는 것입니다. –

+0

의견을 보내 주셔서 감사합니다. 나는 더 구체적 이어야만한다. 사용자 이름과 패스워드가 일치하면 사용자 세션을 생성하는 것이 너무 걱정 스럽다. –

답변

3

function login($username, $password) { 
    $userpass = sha1($password); 
    $result = mysqli_query($con, "SELECT * FROM members WHERE username='$username' AND password='$userpass'"); 
    while($row = mysqli_fetch_array($result)) { 
     $success = true; 
    } 
    if($success == true) { 
     $_SESSION['username']= $username; 
     //redirect to home page 
    } else { 
     echo '<div class="alert alert-danger">Oops! It looks like your username and/or password are incorrect. Please try again.</div>'; 
    } 
} // END LOGIN FUNCTION 
+0

감사합니다. –

0

를 등록하여 암호. 당신은 단지 HTML 페이지를 형성 곳으로와 PHP 함수에 추가하는 경우, 당신은 당신의 코드에서 다양한 장소에서이 같은 간단한을 사용할 수 있습니다

$loggedIn = login($username, $password) 

는 그런 다음 로그인 반환 진정한해야하거나 그릇된. 그런 다음 라우팅 구조가 $ loggedIn을 기반으로 다른 결정을 내릴 수 있으며 페이지에 다른 레이아웃과 내용이 표시 될 수 있습니다.

이것은 프로그래밍 스타일 측면에서 채택하기에 좋은 스타일은 아니지만 아이디어를 줄 수 있습니다. HTTP :/당신은 당신의 코드를 구조화하는 방법에 대한 자세한 내용을 추가하는 경우이 성공적인 사용은`헤더를 리디렉션하는 경우, 당신은 위치 '(

0
session_start(); 

    if($_SERVER["REQUEST_METHOD"] == "POST") { 

$myusername=addslashes($_POST['username']); 
$mypassword=addslashes($_POST['password']); 

    $sql="SELECT id FROM admin WHERE username='$myusername' and passcode='$mypassword'"; 
$result=mysql_query($sql); 
    $row=mysql_fetch_array($result); 


$active=$row['active']; 
    $count=mysql_num_rows($result); 
     if($count==1) { 
       session_register("myusername"); 
        $_SESSION['login_user']=$myusername; 

       header("location: welcome.php"); 
     } 
     else { 
       $error="Your Login Name or 
      Password is invalid"; 
      } 
    }