我看了又看,我做不到这件事。我尝试过用.htaccess和其他尝试来实现它,但是没有什么效果。
我正在尝试从新机器/项目名称中获取新机器/项目名称。
这就是我的产品页面。
<?php
$LimitAmt = $Amt + 1;
$Limit = "LIMIT $LimitAmt";
$NextPage = $Page + 1;
$PrevPage = $Page - 1;
$SQLCat = "";
if (strlen($Cat) > 1)
{
$SQLCat = "AND (`Category` LIKE '$Cat;%' OR `Category` LIKE '%;$Cat' OR `Category` LIKE '$Cat')";
}
$SQL_GetEquipment = "SELECT * FROM `new_equip` WHERE `condition`='New' $SQLCat $Limit";
$R_GetEquipment = mysql_query($SQL_GetEquipment, $Link);
$name = mysql_result($result,$i,"name");
$model = mysql_result($result,$i,"model");
$manu = mysql_result($result,$i,"manu");
$desc = mysql_result($result,$i,"desc");
$imagename = mysql_result($result,$i,"image");*/
$eid = $row['id'];
$itemname = $row['itemname'];
$model = $row['model'];
$manufactuer = $row['manufactuer'];
$desc = $row['desc'];
$imagename = $row['image'];
if (!file_exists("UImages/" . $imagename) || strlen($imagename) < 5)
{
$imagename = "NoImage.jpg";
}
?>并展示我的产品url
<a itemprop="url" href="new-product.php?Item=<?php echo $itemname; ?>"><span itemprop="name"><?php echo $itemname; ?></span></a>就像我说的,我已经查找并尝试了我能找到的一切,但我一直得到404页。
任何帮助都将不胜感激。
发布于 2015-10-08 03:26:41
首先,您需要将链接更改为所需的格式。有点像
href="new-product/<?php echo $itemname; ?>">在你的.htaccess中,你想要类似的东西。
RewriteRule ^new-product/(.*) new-product.php?Item=$1^是URL的开始。
()捕获它内部的值。
.是一个字符,而*是任何字符的零或多次出现。因此,基本的.*等于anything。
$1是来自第一个捕获组的值。如果您有两个捕获组,它们将按外观顺序排列。
因此,这个new-product/(.*)是后端的url,RewriteRule告诉apache将请求作为new-product.php?Item=$1发送给new-product.php?Item=$1。
因此,在PHP中,您需要更改您的调用,以便它检查名称而不是ID。
$name = mysql_real_escape_string($_GET['Item']);
$SQL_GetEquipment = "SELECT * FROM `new_equip` WHERE `itemname`='$name' LIMIT 1;";
$R_GetEquipment = mysql_query($SQL_GetEquipment, $Link);
$row = mysql_fetch_assoc($R_GetEquipment);获取的数据不需要转义。转义是因为您的SQL语句不能通过插入其他字符来操作。
这方面的首选方法是使用参数化查询,不幸的是,mysql_函数不支持这一点。我建议您更新到PDO或mysqli_,以便您可以利用这些优点。
http://php.net/manual/en/security.database.sql-injection.php
How can I prevent SQL injection in PHP?
如果其他人有较旧的格式,您将需要做一个重写控制器。htaccess将需要发送到具有DB访问权限的PHP页面,这样它就可以从ID中提取名称,然后重新发送它.或者对页面执行有条件检查,如果参数是整数,则按id检查它。
https://stackoverflow.com/questions/33004051
复制相似问题