2013-08-22 55 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

如果全成使用這種重定向'頭('位置:http:/ /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) 

然後你需要登錄返回true或假。然後,您的路由結構可以根據$ loggedIn做出不同的決定,並且您的頁面可以顯示不同的佈局和內容。

從編程風格來看,這不是一個很好的風格,但它可能會給你一個想法。如果你對你如何構建你的代碼添加更多的細節,你應該得到一個更好的答案

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"; 
      } 
    } 
相關問題