![](/img/trans.png)
[英]How to get id of anchor tag on its click and pass it on to a servlet page?
[英]Click on a specific product and pass its ID to another page. Is there a better way to do it than using href and $_GET
例如,在index.php上有一個摩托車列表。 有沒有比使用href和$ _GET更好的方法來將某人單擊特定摩托車時將其ID傳遞給venture.php? 隱藏字段並通過JavaScript提交表單? 最好的方法是什么? 我希望自己的網址對SEO友好。 謝謝。
我了解您問題的第一部分,因此我將盡力在這里回答。
您的可點擊鏈接可能是這樣的。
<a href ="inventory.php?motorcycle_id=100">Click me</a>
請注意,這里是100,這是您要傳遞到stocking.php的摩托車ID
然后在inventory.php
文件中
<?php
$motorcycle_id =$_GET['motorcycle_id'];
?>
由於您提到的SEO,我絕對會堅持這種方法。
我們心愛的SEO網址將是http://yoursite.com/inventory/100
您需要為此添加一個htaccess代碼
Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteRule ^([0-9]*)/(.*)/?$ /inventory.php?motorcycle_id=$1 [L,QSA]
您也可以使用$ _POST,每個提交按鈕(看起來像摩托車照片或您喜歡的任何東西)都將與一個表單相關聯,並且每個表單將包含一個具有所需ID值的不可見表單元素(盡您所能)。 這樣,摩托車ID對用戶將是不可見的(只要他們不檢查代碼即可)。
<form method="post">
<input type="text" name="id" value="your_desired_id">
<input type="submit" name="submitted" value="Button">
</form>
並添加一些CSS以隱藏表單元素並偽裝為img的提交按鈕。 我在HTML上經常使用此方法,但不幸的是我不是CSS向導。
使用$_GET[id"]
不一定是安全問題,一旦發現問題,您將如何處理。
如果您真的希望自己的URL是SEO友好的,那么Samuel James關於SEO友好URL的答案是一個不錯的選擇。
但是要真正成為SEO友好者,您必須認真考慮進一步發展。
您的ID僅對您有意義,機車/ 7865對用戶或搜索引擎毫無意義。
如果您將編號為7865的摩托車標為Yamaha SCR 950,則您的網址應為motorcyles / Yamaha-SCR-950
這有助於搜索引擎,進而幫助用戶,也就是說,基本上就是語義URL背后的思想。
在將收到$_GET[id"]
參數的php文件中,您將必須獲得類似$_SERVER['QUERY_STRING']
,該信息將為您提供motorcyles / Yamaha-SCR-950部分,並在您的數據庫中搜索Yamaha SCR 950代替了傳統的ID搜索方式。
您需要像這樣向.htaccess
文件中添加一些內容(只是將其從我周圍的位置拉出,但應該具有多種用途)
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?$1 [L,QSA]
您將需要類似semantize / unsemantize函數的功能,該功能可以刪除空格,非url字符等。
一個非常簡單的示例(幾乎是偽代碼,請勿原樣使用):
function semanticUrls($string,$do=true){
if($do) {
return strtr($string, " ", "-");
} else {
return strtr($string, "-", " ");
}
}
然后,您可以使用類似的內容進行搜索(很明顯不要按原樣使用,應該將PDO與預處理語句一起使用;如果僅出於安全原因)
$sql = "SELECT * FROM motorcycles WHERE name LIKE '". semanticUrls($querystring,0)."'";
您可能未在使用諸如Model View Presenter / Controller之類的東西,否則您將已經在使用語義URL。 您應該真正檢查此方法。 可以采用您認為可能更簡單的方法,即使您不想使用OOP,也可以從MVP之類的內容中受益。 而且,如果您不使用PDO提供的預備語句,則需要仔細檢查$_GET[id"]
然后再將其傳遞給db
。
這是其中解釋最好的課程之一: https : //www.udemy.com/php-mvc-from-scratch/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.