在下面的代码中,我想获得输入,创建页面,然后转到重定向页面。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字符串。 –