簡體   English   中英

單擊特定產品,然后將其ID傳遞到另一頁。 有沒有比使用href和$ _GET更好的方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM