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

使用php命令“imagepng”创建具有唯一名称的文件时遇到问题,php,Php,您好,我很难让imagepng不仅在我的服务器上创建一个图像,而且根据另一个页面上表单的POST输入将其命名为特定名称 它将在屏幕上显示完成的图像,但取决于我尝试了多少种方法,它要么创建一个文件名.png,要么根本不创建 以下是获取信息的form.html: <form action="test.php" method="post"><BR><BR> Type Forum Name: <input type="text" name="name" valu

您好,我很难让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的子文件夹中


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

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

<input type="text" value="name"/><BR><BR>
需要:

<input type="text" name="name" value="name"/><BR><BR>
此外,执行此操作时,请清理输入。如果我给你发了name=../../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);

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

$save=../pvt/。strtolower$name..png;可能是您的问题,有时使用相对路径与。。这是不允许的。您是否收到任何错误?是否完成了任何基本调试,如var_dump$\u POST,以查看提交到服务器的内容?var_dump$save查看您正在生成的文件名/路径?imagepng不在乎您提供的文件名是什么——不管怎样,它只会在内部传递给fopen。Philtune的简短示例代码。致:dan08~不,先生,我不是。。不在当前状态下。删除..时没有更改。。或者,即使我将文件保存在与test.php相同的路径中,也要保存到:Marc B~不太确定如何保存。。。我会仔细阅读的。这很尴尬,谢谢你,但它没有解决它。我想可能也是这样,该死的。它仍然输出一个没有名称的图像文件,如this.png。我更正了表单上的错误,将其更改为保存在与代码文件相同的路径中,但仍然不会将用户输入的名称应用于该文件。我还意识到这段代码不安全,我只是想先让它工作。试着检查getcwd的输出和最终的文件保存名。可能是您的脚本没有从您认为的目录运行。或者