PHP和Html表单不工作?

PHP和Html表单不工作?,php,html,forms,Php,Html,Forms,因此,我试图创建一个表单,捕获用户名(输入)和用户IP(隐藏输入),然后将其写入txt文件。IP也应该显示在页面上,向用户显示我们正在录制的IP,但IP没有显示,表单也没有写入文件,但我不知道为什么 Index.html: <html> <body> <br /> <center> <form action="writetotxt.php" method="POST"> <input name="field1" type

因此,我试图创建一个表单,捕获用户名(输入)和用户IP(隐藏输入),然后将其写入txt文件。IP也应该显示在页面上,向用户显示我们正在录制的IP,但IP没有显示,表单也没有写入文件,但我不知道为什么

Index.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');
}?>

有什么想法吗

编辑:表格地址:


Edit2:因此表单无法正常工作的真正原因是由于文件所有权现在已被修复

看到您的页面和HTML源代码包含未解析的PHP指令,您需要将
index.HTML
的文件扩展名更改为
index.PHP
或指示Apache将HTML文件视为PHP

这是从链接中提取的HTML源:

<html>
<body>
<br />
<center>

<form action="writetotxt.php" method="POST">
    <input name="field1" type="text" />
    <input type="hidden" name="field2" value="<?php echo @$REMOTE_ADDR; ?>" />
    <input type="submit" name="submit" value="Save Data">
</form>
Your IP:<?php echo @$REMOTE_ADDR; ?> will be recorded!
</center>
<br />
</body>
</html>
或不带三元运算符:

value="<?php echo $_SERVER['REMOTE_ADDR']; ?>"
value=“”
在索引文件的回显中:

Your IP:<?php echo $remote=!empty($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ""; ?> will be recorded!
您的IP:将被记录!
  • 关于三元运算符的更多信息:
下面是一篇关于如何将HTML文件视为PHP的Stack文章:

添加到文件的顶部,这将有助于查找错误

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

首先,您是否指示Apache将
.html
文件视为PHP?第二,如果您这样做了,您将在
Index.html
中得到一个未定义变量通知-检查文件夹和文件是否都有写入权限。错误报告将告诉您。错误日志不包含任何与此相关的内容,甚至尝试清除我的错误日志并再次运行表单。您没有回答我问题的第一个重要部分-
。默认情况下,html
不解析PHP指令。另外,使用
/tmp/
假定您希望在公共域之外进行写入,并且可能没有为其设置写入权限。完整的系统路径可能是
/var/usr/htdocs/public/folder/
-所以问问自己为什么这不起作用。没有Apache没有设置为将.html视为PHP和/tmp/是一个测试,我更正了帖子以显示正确的路径
@$REMOTE\u ADDR
?不要发明新的PHP语法。当更改为index.PHP时,会出现500错误message@BlackMage我还在编辑中对我的答案做了一些补充。您需要重新加载它才能看到它们。
<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code