2013-04-27 137 views
3

I have an HTML form that is queried with PHP to search for animals: animals.php與HTML <a href...>

Everything works great however I was wondering if I can also access the form with an HTML anchor tag. So when you click:

<a href="">giraffe</a>

it will query the DB for a giraffe through 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> 

My PHP query works like this:

if(isset($_POST['submit']) && isset($_GET['go']) && preg_match("/^[ a-zA-Z0-9#@]+/", $_POST['msg'])){ 
//query the db 
//echo the results 
+0

你可以訪問它有一個href =「animals.php?go = giraffe」>長頸鹿? – uneducatedguy 2013-04-27 07:43:46

+0

不,不幸的是,我相信它在這種情況下不起作用 – user1775570 2013-04-27 07:44:35

+0

它會工作,如果你讓PHP腳本通過GET而不是POST接受所有數據(這會使它比我在下面發佈的答案更簡單) – 2013-04-27 07:49:46

回答

3

(edit) FIRST OF ALL: Your PHP is unsafe: please take a couple minutes and read about SQL injection: How can I prevent SQL injection in PHP?

,因爲你需要你的POST數據到腳本訪問表單輸入,一個簡單的HREF不會做的工作。但是,您可以:

請與「長頸鹿」爲默認值,一個無形的文本字段另一個小,無形的形式包裝,並提交文本現在

<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

(EDI t)如果你想用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 - 注意,你的腳本由NOE的方式,您需要發送提交(空字符串是好的,因爲你只檢查isset()或類似的東西:)

+0

so how我會讓它與GET一起工作嗎? – user1775570 2013-04-27 07:53:39

+0

編輯答案,這是太重要了,留在評論:) – 2013-04-27 08:05:33

+0

(不要警惕德拉戈斯我確實消毒輸入和輸出的PHP,只是沉悶的問題,使其更有趣:D-謝謝幫助!) – user1775570 2013-04-27 08:06:53