我管理的网站使用php网址动态显示每个产品的detail.php(还是php的新手,请耐心等待。)
目前看起来像这样:
domain.com/detail.php?id=123
我可以使用不同的属性(不确定它是否被称为)所以我可以使用更友好的用户界面吗?
像:
domain.com/detail.php?name=Product+Name
如果是的话......怎么样?对于我的生活,我无法弄明白或搜索正确的术语(可能只是不知道他们的正确名称)。我认为它很简单,因为%20而不是空格,但正如你们大家都知道的那样,这不会做到。
我的名字设置为varchar,我不知道这是否有所作为。
任何帮助表示赞赏,这不是一件紧急事情。
答案 0 :(得分:6)
有几种不同的方法可以完成你想要的东西。如果不直接深入PHP代码来更改底层逻辑,您可以查看在Apache实现中启用和配置mod_rewrite。这是一个快速简单的mod_rewrite教程:
答案 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);
在查询中使用字符串时,必须用引号括起来。如果它们不是,它们将被视为字段名称,表名等......