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

时间:2014-12-22 19:18:02

标签: php

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

它会在屏幕上显示完成的图像,但是根据我尝试的方法(尝试过多次),它会创建一个文件名“.png”或根本不创建一个。

以下是信息来自的“form.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> 

这是“test.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”的子文件夹中。

非常感谢任何帮助/建议,谢谢!

2 个答案:

答案 0 :(得分:0)

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

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

需要:

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

此外,执行此操作时,请清理输入。如果我发给你name =“../../ etc / passwd”或类似的东西怎么办? (当然这个例子不起作用。但仍然。)。

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

答案 1 :(得分:0)

我终于想通了。

即使我在更改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);

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