我有一个HTML表单,该表单运行两个单独的php脚本进行处理。一个是来自Tectite的表单处理程序(formmail.php),另一个是脚本,该脚本创建了一系列上传的图像(upload.php)并将其发送到服务器上的temp目录。
一切正常,除了在用户被重定向到成功页面之前出现的奇怪的代码闪烁之外。该代码似乎是由upload.php创建的数组。
我不知道如何消除在处理过程中出现的这种代码闪烁。您可以通过在pmd-fla.com/test.html上填写表格来实时查看它。您将需要至少上传一个图像文件,以触发upload.php脚本。
任何指导将不胜感激。
这是upload.php代码:
<?php
echo '<pre>';
$img = $_FILES['img'];
if(!empty($img))
{
$img_desc = reArrayFiles($img);
print_r($img_desc);
foreach($img_desc as $val)
{
$newname = date('YmdHis',time()).mt_rand().'';
move_uploaded_file($val['tmp_name'],'./uploads/'.$newname);
}
}
function reArrayFiles($file)
{
$file_ary = array();
$file_count = count($file['name']);
$file_key = array_keys($file);
for($i=0;$i<$file_count;$i++)
{
foreach($file_key as $val)
{
$file_ary[$i][$val] = $file[$val][$i];
}
}
return $file_ary;
}
handlers.php脚本只是简单地调用另外两个脚本:
<?php
include('upload.php');
include('relay2.php');
?>
relay2.php实际上是Tectite的formmail.php。这是一个巨大的脚本,因此我不会在此处添加。该脚本确实包含错误检查和验证,但我认为问题出在upload.php脚本上。
如您所见,upload.php包含echo和print命令,但是我没有脚本来编辑文件而不破坏文件。
答案 0 :(得分:0)
您需要查看文件handlers.php以找到答案。
看着代码的闪烁,看起来好像有一个print_r函数正在打印程序用来评估提交的数据的数组。当我测试它时,似乎有一个错误计数器。
正如Darragh Enright所说,我们将需要查看代码才能告诉您确定要在何处以及为什么打印数组。
我怀疑正在打印数组,因为发现了错误。 错误是什么,为什么我现在不能说。
编辑:
$ img正在保存显然不是空的上载文件。
if(!empty($img))
此行正在打印您所看到的代码Spinet,看起来正在汇总上传内容。
print_r($img_desc);
您可以通过如下所示注释掉该行:
//print_r($img_desc);
答案 1 :(得分:0)
再次感谢您的指导。我已经解决了这个问题,只需删除打印功能即可。新代码如下所示:
<?php
echo '<pre>';
$img = $_FILES['img'];
if(!empty($img))
{
$img_desc = reArrayFiles($img);
foreach($img_desc as $val)
{
$newname = date('YmdHis',time()).mt_rand().'';
move_uploaded_file($val['tmp_name'],'./uploads/'.$newname);
}
}
function reArrayFiles($file)
{
$file_ary = array();
$file_count = count($file['name']);
$file_key = array_keys($file);
for($i=0;$i<$file_count;$i++)
{
foreach($file_key as $val)
{
$file_ary[$i][$val] = $file[$val][$i];
}
}
return $file_ary;
}
再次感谢您的指导。 @Steven Woods我赞成你的回答。干杯。