2015-04-22 56 views
0

在下面的代碼中,我想獲得輸入,創建頁面,然後轉到重定向頁面。html然後php再html html

但是,我得到的輸入,然後去重定向頁面(它跳過創建頁面)。

我該如何實現第一個?

​​

我試着用回聲,但它是沒有用的(也許我犯了一個錯誤),當我輸入的東西(不包括重定向),我的網址更改爲example.com?abc=[input_here]。爲什麼?

+5

爲什麼嵌套形式? –

+0

你的onsubmit反正有錯別字。你永遠不會關閉你的url字符串。 –

回答

1

如果您沒有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> 
+0

我明白了,但如何在處理後重定向?我的意思是什麼是我應該使用的代碼或計時器或函數,它只會在處理後才執行?我只知道「onsubmit」(每次都在'處理'上面)。 。 。 @cj wurtz – supermean

+0

對不起,忽略了那部分。我更新了我的答案。您需要設置一個會導致重定向的標頭。我在我的答案中顛倒了代碼的順序(你最初是怎麼做的),因爲header()func需要在任何輸出(即下面的html)之前調用。 –