- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个用 PHP 查询以搜索动物的 HTML 表单:animals.php
一切正常,但我想知道我是否也可以使用 HTML anchor 标记访问表单。所以当你点击:
<a href="">giraffe</a>
它将通过 animals.php
查询数据库中的长颈鹿.
<form method="post" action="s.php?go" id="searchform">
<input class="search" type="text" name="heyworld">
<input class="button" type="submit" name="submit" value="Search">
</form>
我的 PHP 查询是这样工作的:
if(isset($_POST['submit']) && isset($_GET['go']) && preg_match("/^[ a-zA-Z0-9#@]+/", $_POST['msg'])){
//query the db
//echo the results
最佳答案
(edit) 首先:您的 PHP 不安全:请花几分钟时间阅读有关 SQL 注入(inject)的内容:How can I prevent SQL injection in PHP?
由于您需要将数据发布到脚本,简单的 HREF 无法完成这项工作。但是,您可以:
制作另一个小的、不可见的表单包装器,带有一个默认值为“giraffe”的不可见文本字段,并以文本形式提交
<form method="post" action="s.php?go" id="searchform">
<input class="search" type="hidden" name="heyworld" value="giraffee" />
<input class="button" type="submit" name="giraffee" value="Search" />
</form>
现在,对于实际的 HREF,您有 2 个选项:CSS 按钮使其与链接相同,或者使其成为链接,这将使用 form.submit() 提交(隐藏)表单
这里有一个解释这个的链接: How to HTTP POST from a link without JS
(编辑)如果你想用 GET 来做,你只需切换你从脚本中获取数据的全局(请注意,这仍然是不安全的代码,但我已经有几年没有编写 PHP 了,所以我最好把辅导留给更有资格的人),并修改您的 HTML 表单以通过 GET 提交数据:
if(isset($_GET['submit']) && isset($_GET['go']) && preg_match("/^[ a-zA-Z0-9#@]+/", $_GET['msg']))
现在您的 HREF 可以转到 s.php?go&submit&msg=giraffee
- 请注意,对于您的脚本制作方式,您需要发送提交(空字符串可以,因为您只检查isset()
或类似的东西 :)
关于php - 使用 HTML <a href...> 访问表单输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16249543/
我是一名优秀的程序员,十分优秀!