您好我无法让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”的子文件夹中。
非常感谢任何帮助/建议,谢谢!
答案 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);
感谢所有花时间回复的人。