在php网址中,我可以使用类似名称吗?name = Item + Name?

时间:2012-05-02 18:38:22

标签: php url dynamic

我管理的网站使用php网址动态显示每个产品的detail.php(还是php的新手,请耐心等待。)

目前看起来像这样:

domain.com/detail.php?id=123

我可以使用不同的属性(不确定它是否被称为)所以我可以使用更友好的用户界面吗?

像:

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

如果是的话......怎么样?对于我的生活,我无法弄明白或搜索正确的术语(可能只是不知道他们的正确名称)。我认为它很简单,因为%20而不是空格,但正如你们大家都知道的那样,这不会做到。

我的名字设置为varchar,我不知道这是否有所作为。

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

5 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分: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>

答案 3 :(得分:0)

您可能正在寻找PHP方法urlencode()来编码字符串,以便它可以作为查询字符串变量传递。然后,您可以使用urldecode()来解码查询字符串变量。

答案 4 :(得分:0)

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

$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);

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