Php Permalink、.htaccess漂亮的URL
如果我打扰了你们,我真的很抱歉,但这是关于.htaccess技巧的最后一个问题 我需要wordpress风格的“漂亮的永久链接” 但这对我来说太混乱了 我需要,这个urlPhp Permalink、.htaccess漂亮的URL,php,mysql,.htaccess,mod-rewrite,permalinks,Php,Mysql,.htaccess,Mod Rewrite,Permalinks,如果我打扰了你们,我真的很抱歉,但这是关于.htaccess技巧的最后一个问题 我需要wordpress风格的“漂亮的永久链接” 但这对我来说太混乱了 我需要,这个urlhttp://test.com/?page=test&ID=1将成为http://test.com/test/NAMEFROMDATABASE 怎么做?我知道如何使用$\u get['ID']获取ID=1,但如何将数据库中的值放入url并读取 怎么做?我知道如何使用$_get['ID']获取ID=1,但如何将数据库中的值放入ur
http://test.com/?page=test&ID=1
将成为http://test.com/test/NAMEFROMDATABASE
怎么做?我知道如何使用$\u get['ID']
获取ID=1
,但如何将数据库中的值放入url并读取
怎么做?我知道如何使用$_get['ID']获取ID=1,但如何将数据库中的值放入url并读取
从数据库中获取值,如下所示:
$id = mysql_real_escape_string($_GET['id']);
$sql = "SELECT folder, urlname FROM urls WHERE id = '$id' ";
// don't forget to single quote '$id' ^ ^ or you'll get errors
// and even worse mysql_real_escape_string() will not protect you.
if ($result = mysql_query($sql)) {
$row = mysql_fetch_row($result);
$pagename = $row['urlname'];
$folder = $row['folder'];
}
如果您知道id
是一个整数,您也可以使用$id=intval($\u GET['id'])代码>
我建议始终使用mysql\u real\u escape\u string()
,因为它适用于所有值,而intval
仅适用于整数。
在SQL中,引用数字从来都不是问题,所以养成总是引用所有内容的习惯。
这样你就不会犯错误
你可以永远做不到
$sql = "SELECT urlname FROM urls WHERE id = '{$_GET['id']}' ";
因为这是一个SQL注入安全漏洞
请参阅:
在htaccess中不能这样做,您需要调整脚本,以便接收id=1而不是name=xxx。然后在数据库中查找名称并计算ID
好的,那么在htaccess中,你会有这样的东西
RewriteRule ^something/(.+)\.htm$ something/file.php?djname=$1
在php脚本中,您将
$name = mysql_real_escape_string($_GET['djname']);
$sql = "SELECT * FROM djtable where name='" . $name . "' LIMIT 1";
OBS:1。使用sql的正确转义。
2.确保dj名称在数据库中是不同的。您不能通过$\u get['ID']直接从此URL获取ID值:
您可以通过以下逻辑获取ID
按类别名称创建链接。i、 e.如果你有分类笔记本电脑,那么创建链接,如
在htaccess中编写重写代码。RewriteRule^category/(.*)$categories\.php?CNAME=$2&%{QUERY\u STRING}[L]
在PHP代码中,从类别名称获取类别ID。$catName=$\u get['CNAME']
或
按类别名称和类别ID创建链接。例如,如果您有类别笔记本电脑,则创建类似
在htaccess中编写重写代码<代码>重写规则^category/(.*)-ID-([0-9]+)$categories\.php?ID=$2&%{QUERY\u STRING}[L]
为什么不这样做
http://test.com/test/1/NAMEFROMDATABASE
,所以您的url中有ID,就像它们一样。这将帮助你做两件事:1。如果需要,将缩短URL。2.将使特定记录的查找变得简单和快速。我目前正在这样做:test.com/djs?djID=1原始url是test.com?page=djs&djID=1,但它不是频繁的搜索引擎优化,它会导致同一个djs页面的多个结果,另外我希望用户键入一个dj的名称,不是一个随机数,然后是dj名。你可以很容易地将该URL更改为test.com/djs/1
。我知道,但这对我没有用,我想要test.com/djs/djname,因为它是搜索引擎优化,用户和其他人容易记住。但是从正确制作的数据库表中查找短页面名。。。用点智慧,伙计。。。然后你问。谢谢,但也许我不够清楚。我知道如何从url获取值并在数据库中查询它。我想做的是,将一个帖子ID转换成一个帖子名,例如?ID=1变成“randomname”,我只希望它是客户端,这样test/randomname将是test/ID=1谢谢,这就是我需要知道的全部。那么,您现在可以告诉我,如何将page=test&name=myname更改为test/myname。然后我将在数据库中查询它?它不是SQL!它是.htaccess,我现在将编写一些代码,但是如何重写URL,将test.com?page=x&ID=y转换为test.com/x/y@Dan关于逃跑,请听从你自己的建议。B:如果name
是唯一的,您不需要limit 1
C:select*
是一种反模式,只选择您需要的字段。@Johan您是对的,但这里不是关于编写好的代码/sql的情况,而是关于htaccess的情况。我只是让代码更具描述性,避免键入太多,因为他自己的代码/sql会有所不同。我同意,如果不添加观察结果,我可以更好地键入:)对我来说,重写规则^djs/(.*)$index\.php?page=djs&djID=$1&%{QUERY_STRING}[L]将test.com/index.php?page=djs&djID=username转换为test.com/djs/username,$\u GET['djID']返回'username',没有问题。非常感谢,只有2美元对我不起作用,把它改成1美元效果很好。