2016-02-01 111 views
2

我之前提出過關於允許在以管理員身份登錄時打開admin.php網站的問題。這一切現在都有效,但是當我嘗試以其他用戶身份登錄時,它會直接跳轉到無效的用戶名和密碼頁面。這裏是我的數據庫結構:登錄後將管理員以外的用戶重定向到主頁

enter image description here

我輸入了一些樣本信息判斷登錄系統。 如果輸入用戶名:admin並輸入密碼:admin,則會轉到admin.php頁面,這非常棒。

如果我嘗試輸入用戶名:Filip和密碼:Filip,它只是出現無效的詳細信息消息。

我希望它將所有剩餘的用戶轉移到主頁login_success.php

這裏是PHP代碼

<?php 

$hostname = 'hostname'; 
$dbname = 'dbname'; 
$username = 'username'; 
$password = 'password'; 

$con=mysql_connect($hostname,$username,$password) or die("Failed to connect to MySQL: " . mysql_error()); 
$db=mysql_select_db($dbname,$con) or die("Failed to connect to MySQL: " . mysql_error()); 

$myusername = $_POST['username']; 
$mypassword = $_POST['password']; 

$myusername = stripslashes($myusername); 
$mypassword = stripslashes($mypassword); 

$query = "SELECT * FROM Client_Information WHERE username='$myusername' and password='$mypassword'"; 
$result = mysql_query($query); 

if (!$result) { 
    echo '<script language="javascript">'; 
    echo 'alert("' . $myusername . '/' . $mypassword . '")'; 
    echo '</script>'; 
} 
    else { 
     $row = mysql_fetch_row($result); 
     $idClientValue = $row[0]; 
     if ($idClientValue == '47') { 
      header("Location: admin.php"); 
     } 
    } 

if($count==1){ 
    $seconds = 5 + time(); 
    setcookie(loggedin, date("F jS - g:i a"), $seconds); 
    header("location: login_success.php"); 
} 

else{ 
    echo '<div class="incorrect">- Incorrect username or password -</div>'; 
} 

?> 
+0

其中$ count已初始化 – jitendrapurohit

回答

1

你得到,因爲你沒有將0123定義無效細節您的代碼中的變量。

變更塊:

<? 

$count = mysql_num_rows($result); 

if ($count > 0) { 
    $row = mysql_fetch_row($result); 
    $idClientValue = $row[0]; 
    // if user login is admin than redirect to admin.php 
    if ($idClientValue == '47') { 
     header("Location: admin.php"); 
    } 
    else{ 
     // if not admin redirect login_success.php  
     $seconds = 5 + time(); 
     setcookie("loggedin", date("F jS - g:i a"), $seconds); 
     header("location: login_success.php"); 
    } 
} 
else{ 
echo '<script language="javascript">'; 
     echo 'alert("' . $myusername . '/' . $mypassword . '")'; 
     echo '</script>'; 
} 


?> 

側面說明:

始終在您的代碼添加error_reporting發展和分期不用於生產。

請不要使用mysql_*擴展名,因爲它已被棄用,並且在PHP 7中不可用。您可以使用mysqli_*PDO

如果這些是您的生產憑證,請不要在任何地方共享。

+0

真棒,工作很好,謝謝你的回覆:)並考慮到側注: –

+0

其實,進一步檢查,它允許每個人都要登錄,但它應該只允許數據庫上的用戶登錄 –

+0

@filip接受答案這將有助於其他同樣面臨同樣問題的人 – devpro

1

您的查詢應該只檢查用戶名。

如果用戶名不存在,那麼顯示不正確的用戶名/密碼

如果用戶名存在,則在一側條件增加一個,如果條件檢查密碼

如果密碼匹配,那麼如果管理員添加檢查用戶角色然後重定向到ADMIN否則login_success

如果密碼不匹配,則顯示不正確的用戶名/密碼

+0

您介意爲此提供代碼嗎?它會給我一些東西,視覺研究:) –

+0

在www.naveedramzan.com發送聯繫請求 –

1

您可以添加一個字段調用user_role並將角色分配給用戶而不是使用靜態主ID。

爲前:

id username role 
1 admin  admin 
2 filip  normal 
3 xyz  normal 

因此,檢查如果登錄用戶的角色是「admin」,而不是ID admin用戶重定向到「admin.php的」等人「login_success.php」。

相關問題