永久链接,.htaccess漂亮的url


Permalink, .htaccess pretty urls

很抱歉打扰了大家这是我关于。htaccess技巧的最后一个问题

我需要wordpress style, 'pretty permalinks'

但是这对我来说太混乱了。

我需要这个url http://test.com/?page=test&ID=1http://test.com/test/NAMEFROMDATABASE

如何?我知道如何通过使用$_GET['ID']获得ID=1,但是我如何将数据库中的值放在url中,并读取它?

您不能直接从此URL: http://test.com/test/NAMEFROMDATABASE获取$_GET['ID']的ID值。

您可以通过以下逻辑获得ID。

  1. 按类别名称创建链接。例如,如果你有笔记本电脑类别,那么创建一个链接,如http://test.com/category/CATNAME

  2. 在htaccess中重写代码。RewriteRule ^category/(.*)$ categories'.php?CNAME=$2&%{QUERY_STRING} [L]

  3. PHP代码中的
  4. 从类别名称中获取类别ID。$catName=$_GET['CNAME']

  1. 按类别名称和类别ID创建链接。例如,如果你有笔记本电脑类别,那么创建一个链接,如http://test.com/category/CATNAME-ID-CATID
  2. 在htaccess中重写代码。RewriteRule ^category/(.*)-ID-([0-9]+)$ categories'.php?ID=$2&%{QUERY_STRING} [L] PHP代码中的
  3. 直接获取类别ID。$catID= $_GET['ID']

如何?我知道如何通过使用$_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名称在数据库中是不同的。