在下面的代碼中,我想獲得輸入,創建頁面,然後轉到重定向頁面。html然後php再html html
但是,我得到的輸入,然後去重定向頁面(它跳過創建頁面)。
我該如何實現第一個?
我試着用回聲,但它是沒有用的(也許我犯了一個錯誤),當我輸入的東西(不包括重定向),我的網址更改爲example.com?abc=[input_here]
。爲什麼?
在下面的代碼中,我想獲得輸入,創建頁面,然後轉到重定向頁面。html然後php再html html
但是,我得到的輸入,然後去重定向頁面(它跳過創建頁面)。
我該如何實現第一個?
我試着用回聲,但它是沒有用的(也許我犯了一個錯誤),當我輸入的東西(不包括重定向),我的網址更改爲example.com?abc=[input_here]
。爲什麼?
如果您沒有onsubmit
,它會將表單提交給服務器,因爲您沒有爲action=""
集合設置的值,因此當前加載的頁面相同。所以如果所有的代碼都在index.php中,那麼表單將默認提交給index.php,因爲你沒有告訴它去任何地方。
由於您使用的是method="get"
,它會將所有表單數據作爲查詢字符串添加到action
(您沒有指定,因此會將其添加到當前網址)。所以它會將abc=(whatever input)
附加到您的網址並提交表單。
現在,當您在url中有onsubmit
事件時,不是將數據提交給服務器,而是將其重定向到該URL。所有輸入的表單數據都不會發生任何變化。它基本上被扔掉了。
你需要做的是將你的代碼提交給你的服務器,做你需要做的任何處理,然後重定向到你想要的url。
因此,像:
<?php
// check if "abc=(whatever)" is in the url, and if so do the copy to, otherwise skip it
if(isset($_GET["abc"])) {
$newfile = $_GET['abc'];
$file = 'example.com';
if (!copy($file, $newfile)) {
echo "failed to copy $file...\n";
} else {
header("Location: http://yoursite.com/" . $newfile);
exit;
}
}
?>
<form name="form" action="" method="get">
<input type="text" name="abc" placeholder="Type Here. . .">
<input type="submit" value="Go">
</form>
我明白了,但如何在處理後重定向?我的意思是什麼是我應該使用的代碼或計時器或函數,它只會在處理後才執行?我只知道「onsubmit」(每次都在'處理'上面)。 。 。 @cj wurtz – supermean
對不起,忽略了那部分。我更新了我的答案。您需要設置一個會導致重定向的標頭。我在我的答案中顛倒了代碼的順序(你最初是怎麼做的),因爲header()func需要在任何輸出(即下面的html)之前調用。 –
爲什麼嵌套形式? –
你的onsubmit反正有錯別字。你永遠不會關閉你的url字符串。 –