[英]what's wrong in this code of privilege?
如何在“檢查” PHP代碼或頁面中檢查特權?
我使用explode和in_array
用戶登錄並進入“檢查”頁面后,代碼必須檢查用戶是否具有“ dataDisplay”特權..但是“檢查”頁面中的代碼不執行該操作
我在“檢查”頁面代碼中有什么問題
這是我的數據庫:
+--------------------+-------------------------------+
| username | user_privilege |
|--------------------|-------------------------------|
| amal |7gz,agt_courses,newbill |
| | |
+----------------------------------------------------+
| | |
| ahmed |dataDisplay,previllige,newUsers|
+----------------------------------------------------+
第一頁“登錄” php:
<?php
ob_start();
session_start();
include '../connection/connect.php';
$username = $_POST['username'];
$password = $_POST['password'];
if($username && $password ){
$finduser = mysqli_query($link,"SELECT * FROM LOGIN WHERE username = '".$username."' AND password = '".$password ."'") or die("error");
if(mysqli_num_rows($finduser) !=0){
while($row = mysqli_fetch_array($finduser)){
$uname = $row['username'];
$pass= $row['password '];
$arr=explode(",",$row['user_privilege']);
}
}
{
$_SESSION['sessionname'] =$uname;
$_SESSION['sessionpass'] =$password ;
$_SESSION['sessionpre'] =explode(",",$row['user_previllige']);
header ("location:../agtSite/agt2.php");
}
}
ob_end_flush();
?>
第二頁“檢查” php:
<?php
session_start();
$_SESSION['sessionpre']='';
$haspermission =in_array("dataDisplay",$_SESSION['sessionpre']);
if( $haspermission )
{
header("location: agt2.php");
}
else{header("location: ../display/display.php");}
?>
您忘記添加else塊,如果適當縮進代碼,可以避免此問題。 確保僅在找到用戶后才創建會話
if(mysqli_num_rows($finduser) !=0){
while($row = mysqli_fetch_array($finduser)){
$_SESSION['sessionname'] =$row['username'];
$_SESSION['sessionpass'] = $row['password '];
$_SESSION['sessionpre'] = explode(",",$row['user_previllige']);
header ("location: ../check.php");
}
}
else{
//could not find user
}
也正如其他人在注釋中指出的那樣,您可以防止SQL注入 。
else
指出的其他問題。
user_previllige
的明顯錯字也是。
在您的else
塊中,您引用$uname
和$row['user_previllige']
,但是這些東西僅在if
塊中有意義; 如果您在else
塊中,則它們是未定義的。
您確定已連接到數據庫嗎? 我看到$link
,但是您沒有在上面的代碼中包含用於啟動連接的代碼。
正如其他人指出的那樣,這非常容易受到SQL注入的攻擊 。
另外, 請勿以純文本形式存儲密碼 ! 鹽和哈希他們。 假設它們有一天會被盜,並設計您的應用程序就沒關系了,因為鹽值和哈希值將毫無用處。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.