一次单击如何使用输入的提交值和GET(将提交值链接到另一个页面)?

时间:2018-07-15 16:03:28

标签: php get

我正在尝试input submit value,并希望通过GET将值传递给另一页,但是为此,我必须使用两次Clicks按钮。

我想要相同的in a single click。需要帮助。

代码:-

<form method="post">
<input name="inwardid" type="text" id="inwardid" />
<?php $inwardid = $_POST['inwardid']; ?>
<input type="submit" value="Next" />
</form>
<a href="addbook.php?up=<?php echo $inwardid; ?>"><button>Proceed</button>

2 个答案:

答案 0 :(得分:1)

您要将用户输入的值发送到另一页。因此,将其用于您的li

<form>

要访问addbook.php中的值,请使用<form method="POST" action="addbook.php"> <input name="up" type="text" id="up"> <input type="submit" value="Proceed"> </form>

这将使用$ _POST将用户在输入标签(类型=“文本”)中键入的值发送到addbook.php页面。不需要$ _GET,$ _ POST就可以了。

答案 1 :(得分:1)

当您故意要求使用方法 GET 时,我的解决方案显示了 GET

使用 GET 时,您必须知道没有安全问题。这取决于您想做什么。如果您想以多种方式使用动态代码,而这些动态代码取决于您不想在脚本中进行硬编码的某些变量,或者只是不想发送文件或其他大型变量,则 GET 非常有用数据。

让我们承认一家报纸上有一个名为Breaking_news.php的网站,您想访问2016年11月8日的重大新闻,您可以将其用作:

breaking_news.php?y=2018&m=11&d=08

一个人可以看到您的GET变量的事实没有任何意义。即使使用POST,也可以通过查看代码来查看变量。而且您必须采取一种或另一种方式来防止代码注入和暴力破解。
但是,如果您不希望向访问者显示此变量,则可以使用URL重写在浏览器中将上面的URL重写为

RewriteRule ^breaking/(.*)/(.*)/(.*)/news\.html$  breaking_news.php?y=$1&m=$2&d=$3 [NC,L]

因此您将您的访客发送给您以查看(重写)URL

breaking/2018/11/08/news.html

但是网络服务器向他显示的是:

breaking_news.php?y=2018&m=11&d=08

一个原因,例如,当您希望某个搜索引擎将动态网站考虑为静态网站并对其建立索引时,将使用此原因。但这又是另一个战场。

第二,您想将变量发送到“ addbook.php”,而不是发送给自身。
您的问题听起来像是要发送到“另一个页面”而不是同一页面。

第三,我可以在您的代码片段中看到要提交变量“ up”而不是“ inwardid”,就像在代码中一样。

我还可以看到您希望将“提交”按钮称为“继续”。 您的代码如下所示:

<form method="GET" enctype="application/x-www-form-urlencoded" action="addbook.php" target="_blank">
<input name="up" type="text" id="inwardid" />
<input type="submit" value="Proceed" />
</form>

正如我所说,您必须protect against injection,例如,这意味着在向其发送变量的“ addbook.php”中,您必须编写一些代码来保护您免受此问题的影响。由于您的问题不在这个方向上,因此我将不输入此主题。

为避免特殊字符出现问题,在按POST方法发送变量时,必须特别对其进行“ URL编码”。在这种情况下,如果要处理文本,则必须使用此enctype。因为此enc类型会将特殊字符转换为相应的ASCII十六进制值。

使用GET安全,因为GET无法发送其他enc类型。因此,您的变量将自动进行url编码,并且您会收到与RFC 3986兼容的字符串,类似于使用

rawurlencode($str) 

让我们承认一个聪明的人在您的输入框中填写了以下代码,以破坏您的网站。 (这并不是完全危险的代码,但看起来像是那些。)

<?php echo "\"?> sample code in c# and c++"; ?>

使用 enctype =“ application / x-www-form-urlencoded” ,这将变成这样:

%3C%3Fphp%20echo%20%22%5C%22%3F%3E%20sample%20code%20in%20c%23%20and%20c%2B%2B%22%3B%20%3F%3E

通过URL进行传输以及在使用

进行接收和清理后,可以安全地进行传输
strip_tags(rawurldecode($_GET['str']))

它将输出类似这样的内容,这是一个无害的字符串。

sample code in c# and c++