输入字段不起作用

时间:2016-12-23 20:46:49

标签: php html html5

我的网站上有一个联系表单,它从<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)
 }

?>

1 个答案:

答案 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适用于跨平台。