1. 程式人生 > >PHP實現最簡單的登入介面

PHP實現最簡單的登入介面

PHP學習路上的第一個完整的極小極小的專案,總算是看著了做專案的希望了,特意做個記錄

登入介面:

html程式碼(login.html):

<form action="login.php" method="post">
		<fieldset>
			<legend>使用者登入</legend>
			<ul>
				<li>
					<label>使用者名稱:</label>
					<input type="text" name="username">
				</li>
				<li>
					<label>密   碼:</label>
					<input type="password" name="password">
				</li>
				<li>
					<label> </label>
					<input type="checkbox" name="remember" value="yes">7天內自動登入
				</li>
				<li>
					<label> </label>
					<input type="submit" name="login" value="登入">
				</li>
			</ul>
		</fieldset>
	</form>

login.php:(登陸處理頁)

<?php 
	header('Content-type:text/html; charset=utf-8');
	// 開啟Session
	session_start();

	// 處理使用者登入資訊
	if (isset($_POST['login'])) {
		# 接收使用者的登入資訊
		$username = trim($_POST['username']);
		$password = trim($_POST['password']);
		// 判斷提交的登入資訊
		if (($username == '') || ($password == '')) {
			// 若為空,視為未填寫,提示錯誤,並3秒後返回登入介面
			header('refresh:3; url=login.html');
			echo "使用者名稱或密碼不能為空,系統將在3秒後跳轉到登入介面,請重新填寫登入資訊!";
			exit;
		} elseif (($username != 'username') || ($password != 'password')) {
			# 使用者名稱或密碼錯誤,同空的處理方式
			header('refresh:3; url=login.html');
			echo "使用者名稱或密碼錯誤,系統將在3秒後跳轉到登入介面,請重新填寫登入資訊!";
			exit;
		} elseif (($username = 'username') && ($password = 'password')) {
			# 使用者名稱和密碼都正確,將使用者資訊存到Session中
			$_SESSION['username'] = $username;
			$_SESSION['islogin'] = 1;
			// 若勾選7天內自動登入,則將其儲存到Cookie並設定保留7天
			if ($_POST['remember'] == "yes") {
				setcookie('username', $username, time()+7*24*60*60);
				setcookie('code', md5($username.md5($password)), time()+7*24*60*60);
			} else {
				// 沒有勾選則刪除Cookie
				setcookie('username', '', time()-999);
				setcookie('code', '', time()-999);
			}
			// 處理完附加項後跳轉到登入成功的首頁
			header('location:index.php');
		}
	}
 ?>

index.php(預設主頁):

<?php 
	header('Content-type:text/html; charset=utf-8');
	// 開啟Session
	session_start();

	// 首先判斷Cookie是否有記住了使用者資訊
	if (isset($_COOKIE['username'])) {
		# 若記住了使用者資訊,則直接傳給Session
		$_SESSION['username'] = $_COOKIE['username'];
		$_SESSION['islogin'] = 1;
	}
	if (isset($_SESSION['islogin'])) {
		// 若已經登入
		echo "你好! ".$_SESSION['username'].' ,歡迎來到個人中心!<br>';
		echo "<a href='logout.php'>登出</a>";
	} else {
		// 若沒有登入
		echo "您還沒有登入,請<a href='login.html'>登入</a>";
	}
 ?>

logout.php登出頁

<?php 
	header('Content-type:text/html; charset=utf-8');
	// 登出後的操作
	session_start();
	// 清除Session
	$username = $_SESSION['username'];  //用於後面的提示資訊
	$_SESSION = array();
	session_destroy();

	// 清除Cookie
	setcookie('username', '', time()-99);
	setcookie('code', '', time()-99);

	// 提示資訊
	echo "歡迎下次光臨, ".$username.'<br>';
	echo "<a href='login.html'>重新登入</a>";

 ?>

登入成功的狀態:


若勾選7天內自動登入,則會將登入資訊通過Cookie和Session技術儲存在本地Cookie檔案中,7天內會自動登入。

登出頁面:


登入錯誤的幾種情況都做了處理:



本人是看的傳智的教材加視訊自學PHP,剛入門,第一個小小小小專案,大佬勿打擊‘\抱拳’