【发布时间】:2015-08-24 02:07:10
【问题描述】:
所以我正在尝试创建一个表单来捕获用户名(输入)和用户 IP(隐藏输入),然后将其写入 txt 文件。 IP 还应该显示在向用户显示我们正在记录的 IP 的页面上,但 IP 没有显示,并且表单没有写入文件,但我不知道为什么。
索引.html:
<html>
<body>
<br />
<center>
<form action="writetotxt.php" method="POST">
<input name="field1" type="text" />
<input type="hidden" name="field2" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" />
<input type="submit" name="submit" value="Save Data">
</form>
Your IP:<?php echo $_SERVER['REMOTE_ADDR']; ?> will be recorded!
</center>
<br />
</body>
</html>
和 writetotxt.php:
<?php
if(isset($_POST['field1']) && isset($_POST['field2'])) {
$data = $_POST['field1'] . '-' . $_POST['field2'] . "\n";
$ret = file_put_contents('mydata.txt', $data, FILE_APPEND | LOCK_EX);
if($ret === false) {
die('There was an error writing this file');
}
else {
echo "$ret bytes written to file";
}
}
else {
die('no post data to process');
}?>
有什么想法吗?
编辑:表单地址:http://tsukino.forgewareinc.com/index.php
Edit2:所以表单无法正常工作的真正原因是由于文件所有权现已修复
【问题讨论】:
-
首先,您是否指示 Apache 将
.html文件视为 PHP?其次,如果这样做,您将在Index.html中收到未定义的变量通知 - 检查文件夹和文件是否都有写入权限。错误报告会告诉你。 -
错误日志包含与此无关的内容,甚至尝试清除我的错误日志并再次运行表单
-
你没有回答我问题的第一个 important 部分 -
.html默认情况下不解析 PHP 指令。加上使用/tmp/假设您想在公共域之外写入,并且可能没有设置写入它的权限。完整的系统路径可能是/var/usr/htdocs/public/folder/- 所以问问自己为什么这不起作用。 -
没有 Apache 未设置将 .html 视为 PHP 和 /tmp/ 是一个测试,我更正了帖子以显示正确的路径
-
@$REMOTE_ADDR?不要发明新的 PHP 语法。