2015-04-22 55 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)之前调用。 –