好的,所以我制作了一个php文件来输出图像,这是输出页面的示例代码:
mysql_connect(“”,“”,“”)或死(mysql_error()); mysql_select_db(“”)或die(mysql_error());
$query = mysql_query("SELECT * FROM store");
$number=mysql_num_rows($query);
$result = mysql_query ("SELECT * FROM store ORDER BY RAND() LIMIT $number");
while ($row = mysql_fetch_assoc($result))
{
echo '<img src=get.php?id=$row["id"]>';
}
img标记引用的get.php具有以下代码:
mysql_connect(“”,“”,“”)或死(mysql_error()); mysql_select_db(“”)或die(mysql_error());
$id = addslashes ($_REQUEST['id']);
$query = mysql_query("SELECT * FROM store WHERE id= $id ");
$row = mysql_fetch_array($query);
$content = $row['image'];
header('Content-type: image/jpg');
echo $content;
我所得到的只是输出页面上的一系列撕裂页面图标。我本可以犯一个非常简单的错误,因为我仍在学习php。提前谢谢。
答案 0 :(得分:1)
清理:
$result = mysql_query("SELECT * FROM store ORDER BY RAND()");
while($row = mysql_fetch_assoc($result)){
echo '<img src="get.php?id='.$row[id].'" />';
}
您也可以echo mysql_error();
查看您的mysql语句中是否有任何错误。
您还应该使用mysql_real_escape_string()而不是addslashes()
或者考虑PDO以获得更安全的解决方案。
要调试,请转到get.php?id = 1。如果您看到图像get.php正在运行且主文件不正常。
您是否确定get.php连接到数据库以及主文件?
答案 1 :(得分:0)
这个剧本中有一些不合逻辑的东西。
您可以从商店中选择一切(*等于所有字段)。这非常非常昂贵。如果你想使用它,你应该使用SELECT COUNT(id)FROM store。
您使用计数来限制。但限制将始终与行数相同。哪个使LIMIT无关紧要?
您不应使用addslashes来转义您的值。请改用mysql_real_escape_string。 Check it out here
我不确定您的数据库中有哪些值,也许您可以发布一些值?也许您需要执行条带斜线,因为您可能在数据库中使用斜杠保存值?
答案 2 :(得分:0)
我所得到的只是输出页面上的一系列撕裂页面图标。
事实上,你为你的网站创建了一种“拒绝服务”攻击,让它运行几十个PHP脚本,每个页面请求打开几十个SQL连接。难怪你的服务器被这样的洪水超载并且没有显示图片。
另请注意您的代码遭受SQL注入
将addslashes更改为intval()
或在查询中添加$ id周围的引号(否则转义将毫无意义)