首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php/mysql SERF urls

php/mysql SERF urls
EN

Stack Overflow用户
提问于 2015-10-07 23:19:51
回答 1查看 144关注 0票数 1

我看了又看,我做不到这件事。我尝试过用.htaccess和其他尝试来实现它,但是没有什么效果。

我正在尝试从新机器/项目名称中获取新机器/项目名称。

这就是我的产品页面。

代码语言:javascript
复制
 <?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

代码语言:javascript
复制
<a itemprop="url" href="new-product.php?Item=<?php echo $itemname; ?>"><span itemprop="name"><?php echo $itemname; ?></span></a>

就像我说的,我已经查找并尝试了我能找到的一切,但我一直得到404页。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-08 03:26:41

首先,您需要将链接更改为所需的格式。有点像

代码语言:javascript
复制
href="new-product/<?php echo $itemname; ?>">

在你的.htaccess中,你想要类似的东西。

代码语言:javascript
复制
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。

代码语言:javascript
复制
$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_函数不支持这一点。我建议您更新到PDOmysqli_,以便您可以利用这些优点。

Queries.29

http://php.net/manual/en/security.database.sql-injection.php

How can I prevent SQL injection in PHP?

如果其他人有较旧的格式,您将需要做一个重写控制器。htaccess将需要发送到具有DB访问权限的PHP页面,这样它就可以从ID中提取名称,然后重新发送它.或者对页面执行有条件检查,如果参数是整数,则按id检查它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33004051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档