我對PHP相當陌生,我試圖做我的學校任務,但老師只是說「谷歌它」,我認真找不到適合我的asnwer。檢查用戶是否是管理員或不在PHP中
這裏是我的login.php(請原諒在其瑞典的音符,這些都是我的老師)
<?php //Start the Session
session_start();
require('connect.php');
//3. If the form is submitted or not.
//3.1 If the form is submitted
if (isset($_POST['username']) and isset($_POST['password'])){
//Sätter form värderna i variabler
$username = $_POST['username'];
$password = $_POST['password'];
//Kollar om variblerna redan finns i databasen
$query = "SELECT * FROM `user` WHERE username='$username' and password='$password'";
$result = mysql_query($query) or die(mysql_error());
$count = mysql_num_rows($result);
//Kollar om bägge värdena är likadana i databasen och sedan skapar sessionen om de är det.
if ($count == 1){
$_SESSION['loggedin'] = 1;
$_SESSION['username'] = $username;
}else{
//3.1.3 Om värdena inte stämmer kommer ett fel medelande att skickas till användaren.
echo "Invalid Login Credentials.";
}
}
//Om han loggar in så skickas han vidare till protected.php
if ($_SESSION['loggedin'] == 1) {
header('Location: protected.php');
}else{
?>
下面是你在(受保護的頁面),登錄後,所訪問的頁面
<?php
session_start();
require('connect.php');
// startar sessionen så att man kan använda session variablerna
// Inkluderar connect.php för att ansluta till databasen
if ($_SESSION['loggedin'] != 1) {
//Om loggedin är inte lika med 1 skickas han till första login sidan
header('Location: index.php');
exit;
}
?>
<html>
<head><title>Logged in!</title></head>
<body>ASDSDFSDF<br><a href="logout.php">Log out</a><br>
<?php
$sql = "SELECT admin FROM `user` WHERE username='$_SESSION['username']'";
$result = mysql_query($sql);
$admin = mysql_fetch_array($result);
$_SESSION['admin'] = $admin['admin'];
if ($_SESSION['admin']) == 1 {
echo "You are an Admin!";
}else{
echo "You are a normal user";
}
?>
</body>
</html>
我不明白這段代碼如何工作。 :/
<?php
$sql = "SELECT admin FROM `user` WHERE username='$_SESSION['username']'";
$result = mysql_query($sql);
$admin = mysql_fetch_array($result);
$_SESSION['admin'] = $admin['admin'];
if ($_SESSION['admin']) == 1 {
echo "You are an Admin!";
}else{
echo "You are a normal user";
}
給我們的錯誤消息 – xNeyte
現在,這東西很危險有幾個原因。此外,我認爲最後一個查詢不起作用,因爲$ _SESSION ['username']沒有被正確解析。除此之外,你的代碼中沒有安全的QUERY,你正在做的每一個查詢都可以被注入,這不是一個好的實踐,我建議你在執行任何mysql查詢時遷移並開始使用mysqli_ *或PDO,使用正式文件中建議的準備好的陳述。 – briosheje
順便說一句,你應該停止使用mysql函數,因爲它已被棄用,並去PDO/mysqli。你還必須在你的數據庫+連接腳本中散列用戶密碼 – xNeyte