2013-07-30 190 views
1

我正在登錄系統中,每當用戶嘗試訪問非授權頁面 時,他應該返回登錄頁面進行登錄,如何才能我執行它檢查登錄狀態並保存登錄會話(PHP)

下面是我的登錄腳本

<?php 

session_start(); 
$host="localhost"; // Host name 
$db_username="root"; // Mysql username 
$db_password=""; // Mysql password 
$db_name="designshop"; // Database name 
$tbl_name="member"; // Table name 

// Connect to server and select databse. 
mysql_connect("$host", "$db_username", "$db_password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

// username and password sent from form 
$member_username=$_POST['member_username']; 
$password=$_POST['password']; 

// To protect MySQL injection (more detail about MySQL injection) 
$member_username = stripslashes($member_username); 
$password = stripslashes($password); 
$member_username = mysql_real_escape_string($member_username); 
$password = mysql_real_escape_string($password); 
$sql="SELECT * FROM $tbl_name WHERE member_username='$member_username' and password='$password'"; 
$result=mysql_query($sql); 

// Mysql_num_row is counting table row 
$count=mysql_num_rows($result); 

// If result matched $myusername and $mypassword, table row must be 1 row 
if($count==1){ 

// Register $myusername, $mypassword and redirect to file "login_success.php" 
$_SESSION['member_username']=$_POST['member_username']; 
$_SESSION['password']=$_POST['password']; 

header("location:login_success.php"); 
} 
else { 
header("location:try_again.html"); 
} 
?> 
+0

你至少應該讀如何使用會話? –

+1

還有一件事不要將密碼保存到您的會話中,這是一個不好的做法 –

+0

您的代碼易受SQL注入攻擊。也可以使用'mysqli_ *'或'PDO'來代替'mysql_ *' – Konsole

回答

0

只是把這個在下面session_start()頂部...

if(!empty($_SESSION['member_username'])){header("location: login_success.php");} 

是這樣的...

session_start(); 

if(!empty($_SESSION['member_username'])){ 
header("location: login_success.php");} 

$host="localhost"; // Host name 
$db_username="root"; // Mysql username 
$db_password=""; // Mysql password 
//REST OF CODE 
0

所有你需要做的是檢查的$_SESSION['member_username']存在(和非空)。如果已設置,則表示您的用戶已登錄,因此無需重新登錄。

注:

  • 沒有必要保存用戶的密碼在會話:其實它最好不要。
  • 您通過MySQL進行身份驗證,這意味着您以明文存儲密碼:這是一個不好的做法。最好從數據庫中僅檢索usernamepassword,並僅在username上檢索,然後在PHP代碼中進行比較:例如,這可以讓您存儲sha1的d密碼。
0

啓動代碼session_start()和檢查會話設置,只要任何用戶試圖訪問頁面,如果會話設置,然後重定向到頁面,否則重定向到登錄頁面

,您可以檢查使用isset()函數

0

關注該代碼...

<?php session_start(); 
    include('conn.php'); 
    $Name = $_POST['login_id']; 
    $Pass = $_POST['password']; 
    $select="select * from admin_login where admin_name='$Name' AND admin_pwd='$Pass'"; 
    $query=mysql_query($select) or die($select); 
    $rows=mysql_fetch_array($query); 
    $row=mysql_num_rows($query); 


    if($row != 0) 
    { 
     $_SESSION['admin_name']=$rows['admin_name']; 
     echo "<script>window.location.href='index.php'</script>"; 

    }else 
    { 
     $message = 'Invalid Username Or Password'; 
     echo '<script type="text/javascript">alert("'.$message.'")</script>'; 
     echo "<script>window.location.href='login.php'</script>"; 

    } 
    ?> 

把這段代碼的每一頁的頂部

<?php session_start(); 
if(isset($_SESSION["admin_name"])=='') print('<script>window.location.href="login.php"</script>'); 
+0

爲什麼使用php來回顯一個