繁体   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