我有一個問題,我真的無法弄清楚如何解決。我有同一個項目的2個不同頁面。它允許用戶創建表單並將其提交到不同的網頁。還有兩個版本,一個只需要字段類型,名稱和值,另一個允許用戶手動輸入完整的表單。完全相同的html,它爲什麼表現不同?
所以,正如我的問題所述,在第一種情況下,它完美地工作,而在第二種情況下,它回到同一頁面,並且它讓我瘋狂!我將把代碼放在最後,但現在要重現錯誤的步驟。到目前爲止,它是免費託管的網頁,因爲我用它來測試目的:
- 轉到http://saveyourself.vacau.com/form/
在田地裏將這個(這其實是一個測試帳戶此頁):
- 頁:http://newfutureuniversity.org/
- 方法: 「郵報」
- 名稱1: 「用戶」
- 值1: 「用戶」
- 類型1: 「文本」
- 名稱2: 「通過」
- 值2: 「密碼」
- 類型3: 「密碼」
- 名稱3: 「登錄」
- 值3 :「1」
- 類型3:「隱藏」。
按「顯示錶」,並在窗體將顯示
- 現在看到頁面的源代碼,並從「
<form...>
」複製到「</form>
」 - 轉到http://saveyourself.vacau.com/form/manual/此頁並粘貼在那裏。
- 按下「顯示錶單」,你應該完全到達步驟3後的相同頁面(檢查html,它是100%相同,唯一的變化是地址/ manual /)。
現在,這是訣竅。儘管兩個頁面都有完全相同的HTML,但如果在步驟3之後按下「發送表單」按鈕,則會登錄新頁面,但如果在步驟6之後按下「發送表單」按鈕(在/ form/manual /),該頁面被刷新並且您粘貼的表單被刪除。這怎麼可能?據我所知,這裏沒有涉及PHP,因爲當表單顯示時,它只是簡單的html,新頁面應該處理整個PHP。所以,如果它收到相同的表格,它應該以同樣的方式回答,對嗎?在第二頁中,它沒有使用「$ _SERVER ['HTTP_REFERER'];」 (訪問者來自哪裏),也沒有任何類似的東西。此外,還有0個JavaScript。我現在發佈html以防它有用,還有一些PHP(不要放太多代碼)。
所以問題是,沒有人有任何想法,爲什麼第二種形式不起作用?
非常感謝。
HTML代碼(它在兩個頁面相同的第3步後或6):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Send form</title>
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
</head>
<body style="background: #DDFFFF; width: 80%; height:100%; margin: 0 10% 0 10%; text-align: center;">
<h1>Send form</h1>
<form action="http://newfutureuniversity.org/" method="POST">
Web page: http://newfutureuniversity.org/<br>
Method: POST<br><br>
<table style="margin-left: auto; margin-right: auto;">
<tr>
<td style="text-align: right;">
User:</td><td><input type='text' name='User' value=''></td>
</tr>
<tr>
<td style="text-align: right;">
Pass:</td><td><input type='password' name='Pass' value=''></td>
</tr>
<tr>
<td style="text-align: right;">
Login:</td><td><input type='text' name='Login' value='1'></td>
</tr>
</table><br>
<input type="submit" value="Send form">
</form>
</body>
</html>
從頁面工作簡化PHP代碼(http://saveyourself.vacau.com/form/):
//Header, body and others go before of this
<?php
if ($_POST['sent']==1&&empty($_POST['source'])) //If form is submited
{
$i = 1;
?>
<form action="<?php echo $_POST['page']; ?>" method="<?php echo $_POST['method']; ?>">
Web page: <?php echo $_POST['page']; ?><br>
Method: <?php echo $_POST['method']; ?><br><br>
<table style="margin-left: auto; margin-right: auto;">
<?php
while (!empty($_POST['nam'.$i]))
{ ?>
<tr>
<td style="text-align: right;">
<?php echo $_POST['nam'.$i].":</td><td><input type='".$_POST['typ'.$i]."' name='".$_POST['nam'.$i]."' value='".$_POST['val'.$i]; ?>'></td>
</tr>
<?php
$i++;
}
?>
</table><br>
<input type="submit" value="Send form">
</form>
<?php
}
elseif (!empty($_POST['source'])) //If user just wants to create a form and see the code
{
//I think this bit is irrelevant codereview, so I skipped it.
}
else //Body of the first page shown
{ ?>
<form method="post">
Web page: <input type="text" name="page">
Method to send: <select name="method"><option value="POST">Post</option><option value="GET">Get</option></select><br>
<table style="border: 1px solid #AAA; margin-left: auto; margin-right: auto;">
<tr>
<td>Number</td>
<td>Name</td>
<td>Value</td>
<td>Type</td>
</tr>
<?php for ($i = 1; $i <= 10; $i++)
{ ?>
<tr>
<td><?php echo $i; ?></td>
<td><input type="text" name="nam<?php echo $i; ?>"></td>
<td><input type="text" name="val<?php echo $i; ?>"></td>
<td>
<select name="typ<?php echo $i; ?>">
<option value="text">Text</option>
<option value="password">Password</option>
<option value="radio">Radio</option>
<option value="checkbox">Checkbox</option>
<option value="hidden">Hidden</option>
<option value="reset">Reset</option>
<option value="submit">Submit</option>
</select>
</td>
</tr>
<?php } ?>
</table><br>
Don't worry, a submit button is automatically added.<br>
<input type="hidden" name="sent" value="1">
<input type="submit" value="Show form">
<input type="submit" name="source" value="Form code">
</form><?php } ?>
</body>
</html>
從頁面的完整PHP代碼不起作用(http://saveyourself.vacau.com/form/manual/):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Send form</title>
<meta content="text/html; charset=utf-8" http-equiv="content-type" />
</head>
<body style="background: #DDFFFF; width: 80%; height:100%; margin: 0 10% 0 10%; text-align: center;">
<h1>Send form</h1>
<?php
if ($_POST['sentbrr']==1) //If form is submited
echo stripslashes($_POST['code']);
else //First time
{ ?>
<form method="post">
Enter the code for the form manually<br>
<textarea name="code" style="width: 100%; min-height: 450px;"></textarea><br>
<input type="hidden" name="sentbrr" value="1">
<input type="submit" value="Show form">
</form>
<?php
} ?>
</body>
</html>
您使用的是哪種鍍鉻版本? – tutuDajuju 2012-02-20 20:30:23
Google Chrome 17.0.963.46將它與Linux一起使用(deb包在Ubuntu 11下運行。10) – 2012-02-21 15:55:22