登入頁帳號密碼錯誤提示

<?
	session_start();
	
	//判斷$_SESSION['member']是否存在或者為空值
	if (!isset($_SESSION['member']) || ($_SESSION['member'] == ' ') ){
		
		//判斷帳號密碼是否存在
		if(isset($_POST['account']) && isset($_POST['password']) ){
			//預設帳號密碼
			$account = 'test';
			$password = '123';
			
			//判斷輸入的帳號密碼是否符合預設,符合則將account存入$_SESSION[member]中
			if( ($_POST['account'] == $account) && ($_POST['password'] == $password) ){
				$_SESSION['member'] = $account;
				//轉入管理頁
				header ('Location: admin.php');
			}
		}
	}
	
	//執行登出
	//如果$_GET['logout']存在且有值,則刪除session並轉回首頁
	if(isset($_GET['logout']) && ($_GET['logout'] == 'true') ){
		unset($_SESSION['member']);
		//轉回登入頁
		header ('Location: login.php');
	}
	
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title> login</title>
</head>
<body>
<h1>login</h1><br>
<h3>Q5:登入頁</h3>

<?
	//判斷session是否存在
	if (!isset($_SESSION['member']) || ($_SESSION['member'] == ' ') ){
?>
		<!-- 帳號密碼登入表單 Start -->
		<form id="form1" name="form1" method="POST" action="admin.php">
			<table width="300" border="0" align="center" cellpadding="5" cellspacing="0" bgcolor="#F2F2F2">
				<tr>
					<td colspan="2" align="center" bgcolor="#CCCCCC"><font color="#FFFFFF">新聞管理系統</font></td>
				</tr>
				<tr>
					<td width="80" align="center" valign="baseline">帳號</td>
					<td valign="baseline"><input type="text" name="account" id="account" ></td>
				</tr>
				<tr>
					<td width="80" align="center" valign="baseline">密碼</td>
					<td valign="baseline"><input type="password" name="password" id="password" ></td>
				</tr>
				<tr>
					<td colspan="2" align="center" bgcolor="#CCCCCC">
						<input type="submit" name="button" id="button" value="登入" >
						<input type="reset" name="button2" id="button2" value="重設" ></td>
				</tr>
			</table>
		</form>
		<!-- 帳號密碼登入表單 End -->
<?
	}else if($_POST["account"]!=$account || $_POST["password"]!=$password){
?>
		<form id="form1" name="form1" method="POST" action="admin.php">
			<table width="300" border="0" align="center" cellpadding="5" cellspacing="0" bgcolor="#F2F2F2">
				<tr>
					<td colspan="2" align="center" bgcolor="#CCCCCC"><font color="#FFFFFF">新聞管理系統</font></td>
				</tr>
				<tr>
					<td width="80" align="center" valign="baseline">帳號</td>
					<td valign="baseline"><input type="text" name="account" id="account" ></td>
				</tr>
				<tr>
					<td width="80" align="center" valign="baseline">密碼</td>
					<td valign="baseline"><input type="password" name="password" id="password" ></td>
				</tr>
				<tr>
					<td colspan="2" align="center" bgcolor="#FFCCCC">
						<font color="red">帳號或密碼錯誤,請重新輸入!</font>
					</td>
				</tr>
				<tr>
					<td colspan="2" align="center" bgcolor="#CCCCCC">
						<input type="submit" name="button" id="button" value="登入" >
						<input type="reset" name="button2" id="button2" value="重設" ></td>
				</tr>
			</table>
		</form>
<?
	}else{
		//轉入管理頁
		header ('Location: admin.php');
	}
?>


</body>
</html>

登入頁面判斷帳號密碼正確可以直接轉入admin頁面
但是帳號密碼輸入錯誤時的提示訊息試了好幾種方法都不行
包含將帳號密碼錯誤也存為session=no,if判斷session=no就顯示提示帳號密碼錯誤的登入表單頁
但是沒有反應,完全不會去呼叫帳號密碼錯誤的登入表單頁

其他阿哩阿雜的方法也試過很多,但是都一樣有各種問題
不知到這個部分到底該怎麼改呢?

評論

  • //判斷輸入的帳號密碼是否符合預設,符合則將account存入$_SESSION[member]中
    if( ($_POST['account'] == $account) && ($_POST['password'] == $password) ){
           $_SESSION['member'] = $account;
    	//轉入管理頁
    	header ('Location: admin.php');
    }
    
    當帳號密碼 (有輸入) 且 (正確) 時, 才會有$_SESSION這個參數
    當帳號密碼 (有輸入) 且 (錯誤) 時, 不會有$_SESSION這個參數
    if (!isset($_SESSION['member']) || ($_SESSION['member'] == ' ') ){
    
    }else if($_POST[\"account\"]!=$account || $_POST[\"password\"]!=$password){
    
    } 
    
    所以, 只會進入到第一個if條件式裡面, 不會跳到第二個if條件式, 這邊的條件式做修改即可
  • 謝謝大大的回覆,抱歉現在才看到^^"

    使用session是否存在來判斷該顯示哪個登入畫面的方法,其實我之前也有試過了
    但還是一樣的情況

    大大提供的方法,我剛才也試過,還是一樣....
    即使帳號或密碼錯誤,也不會出現提示帳號密碼錯誤的訊息.....
  • 邏輯問題,列出你的邏輯順序
    1. session 不存在 =>登入頁
    2. session 不存在 and 帳密不正確 => 錯誤訊息+登入頁
    3. 以上都不是登入

    看到你的問題了嗎?
Sign In or Register to comment.