gpt4 book ai didi

php - 使用 PHP 从 MySQL 数据库获取数据时,上传的图像不显示

转载 作者:行者123 更新时间:2023-11-29 17:58:07 25 4
gpt4 key购买 nike

我正在创建一个网站,用户可以使用 PHP session 登录仪表板,并且可以上传图像。然后另一个用户登录仪表板并查看图像。我的图像使用 MySQL 数据库上传到名为“Upload”的文件夹中。

我的图片上传代码是:

<?php
include("config.php");

if(isset($_POST['but_upload'])){

$username = $userRow['username'];
$email = $userRow['email'];
$name = $_FILES['file']['name'];
$target_dir = "upload/";
$target_file = $target_dir . basename($_FILES["file"]["name"]);

// Select file type
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// Valid file extensions
$extensions_arr = array("jpg","jpeg","png","gif");

// Check extension
if( in_array($imageFileType,$extensions_arr) ){

// Convert to base64
$image_base64 = base64_encode(file_get_contents($_FILES['file']['tmp_name']) );
$image = 'data:image/'.$imageFileType.';base64,'.$image_base64;

// Insert record
$query = "insert into images(name,image,username,email) values('".$name."','".$image."','".$username."','".$email."')";

mysqli_query($con,$query) or die(mysqli_error($con));

// Upload file
move_uploaded_file($_FILES['file']['tmp_name'],'upload/'.$name);

}

}
?>

我的数据库表

    CREATE TABLE `images` (
`id` int(11) NOT NULL,
`name` varchar(200) NOT NULL,
`image` longtext NOT NULL,
`email` varchar(255) NOT NULL,
`username` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

图像上传部分工作正常,但是当我想向其他用户显示该图像时。现在没有显示图像。

我的图像显示代码:

 <?php
include("dbconnect.php");
$sql="SELECT*FROM images";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==0){
echo "No Image Found";
}else{
while($row=mysql_fetch_array($result)){?>
<img src="../user/upload/"<?php echo $row['name'];?>"> } ?>

最佳答案

不是真正的答案,但包括如何修复和保护它的建议。

利用 mysqli 占位符,否则你的代码很容易被破解。

使用类似 preg_replace('/[^A-Za-z0-9_-]+.[^A-Za-z0-9_]+/', '', $name); 的内容转义文件名;

正如你所说 - 上传工作正常,因此运行图像显示 php 文件,检查 html 源并查找图像名称或路径中的错误。

正如上面的评论“将 href 存储在数据库中”一样,不要遵循,您可以更改路径,或者其他一些东西,在常量/配置中放置路径的更好位置。

还有一件事,当您尝试显示图像时,用户名可能会出错:

<?php
... old code
while($row=mysql_fetch_array($result)){?>
<img src="../<?php echo $row['username'];?>/upload/"<?php echo $row['name'];?>"> } ?>

关于php - 使用 PHP 从 MySQL 数据库获取数据时,上传的图像不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48636161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com