0

我管理的网站使用 php url 为每个产品动态显示 detail.php(对 php 还是新手,请多多包涵)。

目前看起来像这样:

domain.com/detail.php?id=123

我可以使用不同的属性(不确定它是否是这样的),这样我就可以拥有更多用户友好的网址?

像:

domain.com/detail.php?name=Product+Name

如果是这样……怎么办?对于我的一生,我无法弄清楚或搜索正确的术语(可能只是还不知道它们的正确名称)。我认为它会很简单,因为 %20 而不是空格,但正如你们可能都知道的那样,这并没有做到。

我将名称设置为 varchar,但我不知道这是否会有所不同。

任何帮助表示赞赏,这不是一件紧急的事情。

4

5 回答 5

6

有几种不同的方法可以实现你想要的。无需直接深入 PHP 代码来更改底层逻辑,您可以查看在 Apache 实现中启用和配置 mod_rewrite。这是一个快速简单的 mod_rewrite 教程:

http://www.htmlist.com/how-to/a-simplemod_rewrite-tutorial/

于 2012-05-02T18:43:56.627 回答
1

查看在 PHP 中处理 URL 的函数:http ://www.php.net/manual/en/ref.url.php 。

于 2012-05-02T18:40:27.463 回答
1

我真的不确定你在哪里遇到麻烦。这个非常基本的例子对我来说很好用:

<?php
    if (isset($_GET["name"]))
        die("name = {$_GET["name"]}");    /* outputs "name = Product Name" */

    $row = "Product Name";
?><a href="test.php?name=<?php echo $row; ?>">Click here</a>
于 2012-05-02T18:58:31.347 回答
0

您可能正在寻找对urlencode()字符串进行编码的 PHP 方法,以便可以将其作为查询字符串变量传递。然后,您可以用户urldecode()解码查询字符串变量。

于 2012-05-02T18:42:21.577 回答
0

您可能没有正确构建查询,这意味着您很容易受到 SQL 注入攻击。从查询中检索字符串值与检索整数没有什么不同,但是稍后如何使用该字符串确实会产生巨大的差异:

$name = $_GET['name'];
$safe_name = mysql_real_escape_string($name);
$sql = "SELECT ... FROM yourtable WHERE name='$safe_name'";
$result = mysql_query($sql) or die($sql);

在查询中使用字符串时,它们必须用引号括起来。如果不是,它们将被视为字段名、表名等......

于 2012-05-02T18:42:53.703 回答