Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL:按行ID在永久链接中显示内容_Php_Mysql_Permalinks - Fatal编程技术网

Php MySQL:按行ID在永久链接中显示内容

Php MySQL:按行ID在永久链接中显示内容,php,mysql,permalinks,Php,Mysql,Permalinks,我正在尝试制作我自己的CMS,我对php和mysql非常陌生。让我开门见山: 到目前为止,我已经在索引页面中创建了带有“read more”永久链接的新闻(这意味着,当我按下read more时,它会将我移动到另一个页面,例如,/readmore.php?id=[news id],而在该页面中,唯一的内容是那些特定的新闻,即表中的特定行。我一直在该永久链接中获取特定的行id 让我展示一下目前适用于我的代码 包含新闻的索引文件: while($row = mysql_fetch_array($re

我正在尝试制作我自己的CMS,我对php和mysql非常陌生。让我开门见山:

到目前为止,我已经在索引页面中创建了带有“read more”永久链接的新闻(这意味着,当我按下read more时,它会将我移动到另一个页面,例如,
/readmore.php?id=[news id]
,而在该页面中,唯一的内容是那些特定的新闻,即表中的特定行。我一直在该永久链接中获取特定的行id

让我展示一下目前适用于我的代码

包含新闻的索引文件:

while($row = mysql_fetch_array($result))  
   {
/*... title, news content... */
   echo "<a href='readmore.php?id=".$row['ID']."'>".$read_more_link."</a></div>";
}
基本上,它会从地址栏中恢复最后4位数字,并用这4位数字的ID搜索新闻

这是一种非常原始的方法,但我坚持了几天,找不到出路

我以前尝试过的是在
循环中创建一个变量,其中包含session($row=mysql\u fetch\u array($result))
循环,它在索引页中按原样显示ID,但在readmore页中,只显示最后一个或第一个(取决于desc或asc),这一点是显而易见的


您能帮我吗?我将不胜感激。

要在php中提取查询字符串的参数,请使用
$\u GET
super-global,如下所示:

$_GET["id"]
还要注意,远程用户(用户、浏览器等)提供的任何数据都可能是伪造的。 因此,攻击者也可以向您发送
?id=0;删除表用户
或类似信息

阅读更多关于

验证输入总是一个好主意。 您希望id是一个整数,因此为了安全起见,可以检查
if(ctype\u digit($\u GET[“id”])…


最后,清理SQL语句中使用的任何输入也是一个好主意。使用或考虑使用

获取可以使用的特定HTTPGET变量。在您的情况下,您可以获得如下ID:


$news\u id=$\u GET[“id”]

您可以在
$\u GET
数组中按名称访问查询字符串中的值

例如,
$\u GET['id']
将是查询字符串的
id=
部分的值。它适用于查询字符串的每个字段

// url : readmore.php?id=1201
$news_id = intval($_GET['id']);
// now, $news_id contains the value 1201
$query = "SELECT * FROM naujiena WHERE ID='$news_id'";
您可以阅读官方帮助:或您可以在web上找到的各种教程之一:

更新

既然您接受了我的回答,我觉得有义务也谈谈SQL注入。您应该始终清理SQL查询中使用的任何输入。您可以在Wikipedia:或PHP文档中找到更多详细信息:


因为您的ID是数值,所以您还可以确保。为此,我更新了代码片段。

感谢您的关注,我已经在我的登录和评论表单中添加了
mysql\u rea\u escape\u string()。谢谢你的
intval
礼物!感谢你。你应该逃避一切,有很多方法可以在数据库中注入东西,你不会想冒险的!那么你是说我应该这样写:
$id=mysql\u real\u escape\u string($\u GET[“id”])
?(或/和)使用
检查是否(ctype_digit(…))…
?是,始终验证数据,并始终转义数据。如果你两者都做,你就安全了
// url : readmore.php?id=1201
$news_id = intval($_GET['id']);
// now, $news_id contains the value 1201
$query = "SELECT * FROM naujiena WHERE ID='$news_id'";