PHP和Html表单不工作?
因此,我试图创建一个表单,捕获用户名(输入)和用户IP(隐藏输入),然后将其写入txt文件。IP也应该显示在页面上,向用户显示我们正在录制的IP,但IP没有显示,表单也没有写入文件,但我不知道为什么 Index.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
<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:将被记录!
- 关于三元运算符的更多信息:
<?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