语法如果我将<?=
更改为<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上托管)时,它会打开文件并显示一个空白页面。
我已经看过这里的一些其他问题,但它似乎与它们无关。真的不确定是什么错?非常感谢任何帮助!
答案 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的扩展名更改为索引文件。