所以我對PHP很陌生,我仍然在學習。我剛剛瞭解了超全球化,並使用POST,GET,SESSION,COOKIES等。 爲了測試我目前的知識,我做了一個簡單的登錄代碼。如果有兩個頁面,一個用於登錄,另一個是隻能由登錄用戶訪問的目的地。這很簡單,只有一個密碼「測試通過」,並通過if語句進行檢查。用戶名可以是用戶想要的任何東西。我顯然會爲這個項目添加更多的功能,比如註冊頁面,更改帳戶信息等等。但是如果不讓我的主代碼變得堅實,我就無法做到這一點。所以我的問題是,安全方面,這個代碼好嗎?你會做什麼不同,如果有非安全問題,我也想知道。PHP:我的網站登錄代碼出了什麼問題?
登錄頁面:
<form method="post">
Username: <br>
<input type="text" name="user"> <br>
Password: <br>
<input type="password" name="pass"> <br>
<button type="submit" name="signin">Sign In</button>
</form>
<?php
session_start();
if (isset($_GET['logged']) && $_GET['logged'] == 'false'){
session_destroy();
header("Location: login.php");
}
if (isset($_POST['signin'])){ //form was submitted
//username check
if (!empty($_POST['user'])){ //username entered
$_SESSION['user'] = htmlspecialchars($_POST['user']);
} else { //no username entered
echo "You must enter your username!";
}
//password check
if (!empty($_POST['pass'])){ // a password was entered
if ($_POST['pass'] == 'testpass' && !empty($_POST['user'])){ // the password was correct and a username was entered
$_SESSION['logged'] = true; //user is logged in
header("Location: loggedin.php");
} else { // incorrect pass
echo "Incorrect Password!";
}
} else { //no pass entered
echo "You must enter a password!";
}
}
?>
在頁面登錄:
<html>
<head>
<?php session_start();
if (!$_SESSION['logged']){
header("Location: login.php");
} ?>
<title>Welcome <?php echo $_SESSION['user'] . "!";?></title>
</head>
<body>
<a href="login.php?logged=false">Sign Out</a>
</body>
</html>
旁註:[你正在輸出標題](http://php.net/manual/en/function.error-reporting.php) –
回答你的問題:不。我會做什麼不同?一切。從準備好的語句開始,直到使用'password_hash()'。 –