我的网站上有一个联系表单,它从<form>
元素中获取数据,然后在文本文件中启动它。但是,当我单击提交时,只需在新选项卡中打开PHP脚本。
HTML
<form id="contact" action="action.php" method="post">
<h3>Contact Form</h3>
<h4>Contact me.</h4>
<form action="action.php" method="post">
<input type="text" name="field1" placeholder="Enter your name..."><br>
<input type="email" name="field2" placeholder="Enter your email address..."><br>
<input type="submit" value="Submit">
</form>
PHP
<?php
$path = 'data.txt';
if (isset($_POST['field1']) && isset($_POST['field2'])) {
$fh = fopen($path,"a+");
$string = $_POST['field1'].' - '.$_POST['field2'];
fwrite($fh,$string);
fclose($fh)
}
?>
答案 0 :(得分:1)
根据您的屏幕截图taken from comments:
https://gyazo.com/fe6bf7e6a5b77706f6858a3d2c69b397
您将其作为file:///
而不是http://localhost
运行(请确保您已安装php并在您的计算机上安装了网络服务器)。与使用HTML的网页不同,Web浏览器不会将php指令解析为file:///
。
您还有2个错误。
2x打开<form>
标签和1个关闭</form>
(嵌套表单在php中不起作用)和fclose($fh)
中缺少的分号会产生解析错误,例如:
解析错误:语法错误,意外'}'...
将此作为localhost运行后,您将收到有关它的错误。
更正代码后,请确保该文件具有正确的写入权限且路径正确。
使用错误报告:
另外,<form id="contact"
(一个id)表明你可能正在使用JS;那是未知的。如果是这样,那么可能存在_blank
某处或JS的实例:onClick="window.open('path/to/file.php','windowname',' width=400,height=200')"
。
如果在点击提交时在新标签中打开(如你所说),那么其他一些因素导致我们也不知道。
target="_top"
添加到<form>
。您发布的内容不会导致它在新标签页中打开。
注意:强>
您需要将\n
或\r\n
(在双引号内)或PHP_EOL
添加到:
$string = $_POST['field1'].' - '.$_POST['field2'];
否则,您的数据将继续写入一个连续的行。
即:
$string = $_POST['field1'].' - '.$_POST['field2'] . "\n";
\n
适用于* NIX系统,\r\n
适用于Windows,PHP_EOL适用于跨平台。