我問了一個非常類似的問題,我批准了一個答案,因爲我認爲它已經完成了這項工作,但它沒有!對於我的生活,我不明白爲什麼這不會工作!當用戶登錄時,我希望HTML中的表單消失!我的代碼到目前爲止! (我不會顯示所有代碼的HTML是過長...但我認爲這是培訓相關,請記住我在PHP的早期初級階段):PHP和HTML - 當用戶登錄時隱藏<form>
我有這個在我的頁面的頂部:
<?php
if (isset($_GET['showerror']))
$errorcode = $_GET['showerror'];
else
$errorcode = 0;
?>
然後代碼試圖隱藏表單,如果用戶名/密碼不正確,顯示錯誤:
<?php
if ($errorcode == 1)
{
echo "<h3>Your login has failed. Try again</h3>";
}
?>
<?php
session_start();
if (!isset($_SESSION['is_logged_in'])) {
?>
<form id="login" name="login" action="logincheck.php" method="post">
User Name:
<input type="text" name="username"></input>
Password:
<input type="password" name="password"></input>
<input type="submit" name="submit" value="login"></input>
<a href="javascript: void(0)" onclick="popup('register.html')" > (Register)</a>
<br /><br /><br />
</form>
<?
}
?>
下面的代碼是我寫的檢查,如果登錄憑據是正確的,爲了讓我們回到index.html頁面,我給errorcode指定了一個值,這樣我就可以顯示出來了錯誤消息,如果憑據是錯誤的,我將值分配給is_logged_in以隱藏表單,如果它們是正確的。在這兩種情況下,我們轉去index.html的,但希望或者與上顯示的形式和eroor消息,或沒有形式和無信息:(dbconn.php是我連接到MySQL數據庫)
<?php
session_start();
require "dbconn.php";
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM person WHERE name ='".$username."' AND password='".$password."'";
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_array($result);
if ($row != null)
{
$_SESSION['username'] = $row['name'];
header("Location: index.html?is_logged_in=1?");
exit();
}
else
{
header("Location: index.html?showerror=1");
exit();
}
?>
但問題是,兩種結果都沒有,我沒有得到任何錯誤信息,也沒有隱藏的表單,因爲沒有發生任何事情,所以我很難判斷我哪裏出錯了!
謝謝sooooo提供任何幫助......我花了很多時間設置好xampp並準備好學習很多東西,但我一直在這裏待了好幾個小時!
編輯:仍然在與此代碼編輯握手!沒有顯示一些代碼,但我認爲它現在完成了!
無論如何,你應該使用mysql_real_escape_string()作爲$ username和$ password! – Dion 2012-02-21 00:33:32
我會查找它,我是絕對的初學者,所以沒有硬加密或任何東西....只是試圖掌握基本功能! – Phil 2012-02-21 00:34:54
我看到兩件看起來很腥的東西,但我不確定他們想要發佈一個答案......反正:1)不會session_start()總是必須在每個php的最頂端它用於?嘗試將它移動到所用的所有頁面的頂部,並且2)'header(「Location:index.html?is_logged_in = 1?」)的第二個問號;'看起來也是錯誤的。如果你改變這兩件事會發生什麼? – davogotland 2012-02-21 00:35:30