我是个新手,想要完成一项工作,所以让我在这里解释一下:
我有一个反馈网站,数据库上有零售商,我的链接是:
a href="/view_retailer.php?rid=<?php echo $tops_row['retailer_id']; ?>"显示内容的php页面有:
if (isset($_GET['rid']) && is_numeric($_GET['rid']))
{
$retailer_id = (int)$_GET['rid'];
}
else
{
header ("Location: index.php");
exit();
}显示在我的网址上: /view_retailer?rid=8
我想将它更改为/view_零售商?rid=零售商标题
我不明白为什么它不起作用,我的DB上有retailer_id和title列。
然后,我需要通过mod_rewrite将/view_零售商?rid=零售商标题更改为/loja/零售商标题。
我怎样才能到达那里?谢谢你帮我!
发布于 2013-10-09 22:04:33
我可以回答第一点
a href="/view_retailer.php?rid=<?php echo $tops_row['retailer_id']; ?>"需要:
<a href="/view_retailer.php?rtitle=<?php echo $tops_row['retailer_title']; ?>"和
if (isset($_GET['rtitle']) && is_string($_GET['rtitle']))
{
$retailer_title = (string)$_GET['rtitle'];
}
else
{
header ("Location: index.php");
exit();
}您还应该清理GET/POST中的任何内容,以确保如果您打算使用GET/POST查询数据库,那么它是安全的。
至于mod_rewrite。这样我就帮不上忙了。
发布于 2013-10-09 22:11:51
在“零售商”表中添加名为“段塞”的列或类似的内容。然后,您必须修改您的查询,因此您不是在寻找id,而是寻找特定的字符串(段塞)。确保你的子弹只包含适合于网址的符号:没有空格,没有拉丁字母等。
当涉及到代码时,它看起来可能是这样的:
if (!empty($_GET['title']))
{
$title = someSanitizeFunc($_GET['title']);
$retailer = db()->queryOne("SELECT id FROM retailers where slug = '".$title."');
}这只是一个例子,你必须调整它,以适应您的cms或任何您使用的。
发布于 2013-10-09 22:14:11
在数据库中使用3个表如何?
retailer_id retailer_name和retailer_url_name
数值(例如)
43 The Awesome Supermarket和awesome-supermarket
使用regex模式检查$_GET['rid']以检查字母和-字符,并与DB中的retailer_url_name匹配?
// check for letters and -
if (preg_match('/^[a-z\-]+$/', $_GET['rid']) {
// do stuff here
} else {
// invalid ID
}https://stackoverflow.com/questions/19283577
复制相似问题