使用 php 命令“imagepng”创建具有唯一名称的文件时遇到问题


Having trouble with the php command "imagepng" creating a file with unique name

您好,我无法让 imagepng 不仅在我的服务器上创建图像,而且根据另一个页面上表单的 POST 输入将其命名为特定名称。

它会在屏幕上显示完成的图像,但根据我尝试的方法(尝试了很多),它要么创建一个文件名".png",要么根本不创建一个。

以下是信息从中提取的

"表单.html":

<form action="test.php" method="post"><BR><BR>
Type Forum Name:
<input type="text" name="name" value=""/><BR><BR>
<input type="submit" name="Submit1"><BR><BR>
</form><BR> 

这是"测试.php":

<?php
$name = $_POST["name"];
$input1 = $_POST["fsbg"];
$input2 = $_POST["rank"];
header ("Content-type: image/png");
$background = imagecreatefrompng($fsbg);
$pkt = imagecreatefromgif($rank);
imagecopymerge($background,$pkt,260,136,0,0,55,55,100);
imagepng($background);
$save = strtolower($name) .".png";
imagepng($background, $save);
imagedestroy($background);
imagedestroy($pkt);
header('location:link.php');
?>

我已将文件夹/子文件夹权限设置为 777,尝试保存在与文件相同的路径中,以及保存在名为"pvt"的子文件夹中。

任何帮助/建议将不胜感激,谢谢!

表单中没有"名称"字段。您有一个值为"name"的未命名字段:

<input type="text" value="name"/><BR><BR>

需要:

<input type="text" name="name" value="name"/><BR><BR>

此外,执行此操作时,请清理输入。如果我给你发名字="怎么办。/../etc/passwd"或类似的东西?(当然,此示例不起作用。但是。

至少使用 basename 从名称中删除所有路径组件,并realpath确保在应该编写的位置进行编写。

我终于想通了。

事实证明,即使我正在更改FTP中的权限,我仍然需要添加它以使其保存文件:chmod($name,0755);

完成的代码如下所示:

$background = imagecreatefrompng($fsbg);
$pkt = imagecreatefromgif($rank);
//$pkt2 = imagecreatefromgif($rank);
imagecopymerge($background,$pkt,260,136,0,0,55,55,100);
//imagecopymerge($background,$pkt2,290,136,0,0,55,55,100);
header( "Content-type: image/png" );
imagepng($background);
$name = $filename.".png";
chmod($name,0755);
imagepng($background, $name);
imagedestroy($background);
imagedestroy($pkt);

感谢所有花时间回复的人。