点击"提交"打开php文件而不是运行脚本

时间:2018-06-17 19:59:46

标签: php contact-form

语法如果我将<?=更改为<php echo,则网站不再显示,我收到500错误。

再次编辑重复问题中的答案都没有解决问题。

编辑我已更新代码,如下所示,修复错误消息中的语法错误,并将文件更改为index.php。

问题仍然存在。当我输入无效的名称或电子邮件,然后单击“提交”时,它将打开PHP文件,而不是在范围中显示错误消息。当我输入有效的详细信息并单击“提交”时,它会发送电子邮件(因此脚本正在运行),但仍会打开PHP文件,而不是在div中显示成功消息。

我的页面上有一个联系表格,如下所示:

<form action="form_process.php" method="post" class="form" id="form1">

  <p class="name">
    <input name="name" type="text" placeholder="Name" id="name" class= "feedback-input" value="<?= $name ?>"/>
    <span class="error"><?= $name_error ?></span>
  </p>

  <p class="email">
    <input name="email" type="text" id="email" placeholder="Email" class= "feedback-input" value="<?= $email ?>"/>
    <span class="error"><?= $email_error ?></span>
  </p>

  <p class="text">
    <textarea name="message" type="text" id="comment" placeholder="Message" class= "feedback-input" value="<?= $message ?>"></textarea>
  </p>

  <div class="submit">
    <input type="submit" value="Submit" id="button-blue"/>
    <div class="ease"></div>
  </div>
  <div class="success"><?= $success; ?></div>
</form>

这是php文件:

    <?php 

// define variables and set to empty values
$name_error = $email_error = "";
$name = $email = $message = $success = "";

//form is submitted with POST method
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $name_error = "Name is required";
  } else {
    $name = test_input($_POST["name"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
      $name_error = "Only letters and white space allowed"; 
    }
  }

  if (empty($_POST["email"])) {
    $email_error = "Email is required";
  } else {
    $email = test_input($_POST["email"]);
    // check if e-mail address is well-formed
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $email_error = "Invalid email format"; 
    }
  }

  if (empty($_POST["message"])) {
    $message = "";
  } else {
    $message = test_input($_POST["message"]);
  }

  if ($name_error == '' and $email_error == '' ){
      $message_body = '';
      unset($_POST['submit']);
      foreach ($_POST as $key => $value){
          $message_body .=  "$key: $value\n";
      }

      $to = 'xxx@xxx.com';
      $subject = 'Contact Form Submit';
      if (mail($to, $subject, $message)){
          $success = "Message sent, thank you for contacting us!";
          $name = $email = $message = '';
      }
  }

}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

当我点击我的电脑(mac)上的提交时,它会打开php文件并显示代码。

当我在实际网站上点击它(在安装了php的dreamhost上托管)时,它会打开文件并显示一个空白页面。

我已经看过这里的一些其他问题,但它似乎与它们无关。真的不确定是什么错?非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

通过您在问题中提供的代码,我看到的唯一可能导致这种情况发生的问题是您在php语法中存在错别字。例如:<span class="error"><?= $email_error >?</span>,它应该是这样的:<span class="error"><?php echo $email_error ?></span>

答案 1 :(得分:0)

我引用你的评论:

  

php文件位于Web服务器上。我的意思是我在本地测试了它,通过在浏览器中打开index.html,以及上传到Web服务器。

您无法在.html文件上编写PHP代码 - 将.php的扩展名更改为索引文件。