【发布时间】:2013-02-11 08:40:07
【问题描述】:
我正在尝试将 HTML 表单字段的内容写入我的 Web 服务器上的文本文件。
我能够获得我在一个示例中找到的代码,可以在一个普通的 PHP 文件中工作,但不是在我想要的文件中。
每当我提交表单时,PHP 都会抛出一个错误。 PHP Notice: Undefined index: person in <snip>/upload.php on line 26, referer: <snip>/upload
这是我要记录的文件的代码:
<?php
//Delete Current Files
$dirfiles = glob('<snip>/uploads/*'); // get all file names
foreach($dirfiles as $dirfile){ // iterate files
if(is_file($dirfile))
unlink($dirfile); // delete file
}
//Upload New Files
foreach ($_FILES["images"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$name = $_FILES["images"]["name"][$key];
move_uploaded_file( $_FILES["images"]["tmp_name"][$key], "uploads/" . $_FILES['images']['name'][$key]);
}
}
echo "<h2>Successfully Uploaded Images</h2>";
//Log
$when = date("F j, Y, g:i a");
$who = $_POST["person"];
$out = fopen("output.txt", "a");
if (!$out) {
print("Could not append to file");
exit;
}
fputs($out,"$who\t");
fputs($out,"$when\t");
fputs($out,"$_SERVER[REMOTE_ADDR]\n");
print("Name, Time, Date, and IP Address have been recorded.");
?>
在日志文件中,日期和 IP 地址被很好地记录,但没有记录名称。 (像这样)
February 11, 2013, 3:26 am IPADDR
名字的开头应该是这样的
JohnDoe February 11, 2013, 3:26 am IPADDR
在原始表单文件中,只是一个典型的表单:
<form method="post" action="upload.php">
<input type="text" name="person" /> Your Name<br />
snip...
</form>
日志记录工作和不工作的唯一区别是这个表格还允许通过<input type="file" name="images" id="images" multiple />上传图片
究竟是什么导致该名称不被记录?
编辑:更新 - 事实证明,Internet Explorer 中不存在错误,但 Chrome 和 Firefox 中仍然存在。真是奇怪。
【问题讨论】:
-
当您将每个 fputs 调用替换为类似的打印调用时,您会看到什么输出?
-
当你 print_r($_POST); 时你会看到什么
-
@turiyag 在页面上,当我用 print 交换 fputs 时,我打印了以下内容;
February 11, 2013, 3:50 am 24.168.247.250 Name, Time, Date, and IP Address have been recorded.都在同一行,同一字体等 -
@turiyag 当我添加 print_r($_POST);在“记录”之后是
Array ( )。 -
如果有帮助,这里是原始教程的LINK