很抱歉打扰了大家这是我关于。htaccess技巧的最后一个问题
我需要wordpress style, 'pretty permalinks'
但是这对我来说太混乱了。
我需要这个url http://test.com/?page=test&ID=1
是http://test.com/test/NAMEFROMDATABASE
如何?我知道如何通过使用$_GET['ID']
获得ID=1
,但是我如何将数据库中的值放在url中,并读取它?
您不能直接从此URL: http://test.com/test/NAMEFROMDATABASE获取$_GET['ID']的ID值。
您可以通过以下逻辑获得ID。
-
按类别名称创建链接。例如,如果你有笔记本电脑类别,那么创建一个链接,如http://test.com/category/CATNAME
-
在htaccess中重写代码。
RewriteRule ^category/(.*)$ categories'.php?CNAME=$2&%{QUERY_STRING} [L]
PHP代码中的 - 从类别名称中获取类别ID。
$catName=$_GET['CNAME']
或
- 按类别名称和类别ID创建链接。例如,如果你有笔记本电脑类别,那么创建一个链接,如http://test.com/category/CATNAME-ID-CATID 在htaccess中重写代码。
- 直接获取类别ID。
$catID= $_GET['ID']
RewriteRule ^category/(.*)-ID-([0-9]+)$ categories'.php?ID=$2&%{QUERY_STRING} [L]
PHP代码中的如何?我知道如何通过使用$_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($_GET['id']);
我建议始终使用mysql_real_escape_string()
,因为它适用于所有值,intval
只适用于整数。
在SQL中,引用数字从来都不是问题,所以要养成总是引用所有内容的习惯。
这样你就不会犯错误。
never do
$sql = "SELECT urlname FROM urls WHERE id = '{$_GET['id']}' ";
因为这是一个sql注入安全漏洞。
:
如何从"Bobby tables"中注入SQL ?XKCD漫画作品?
http://php.net/manual/en/function.mysql-query.php
http://php.net/manual/en/function.mysql-fetch-row.php
http://php.net/manual/en/function.mysql-connect.php
http://php.net/manual/en/function.mysql-close.php
你不能在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";
奥林匹克广播服务公司:1。使用正确的sql转义。2. 确保dj名称在数据库中是不同的。