我没有收到任何错误。我曾经以前得到未定义的索引/变量错误,但我用isset()修复了它。我填写表格并点击提交,但没有任何显示,但一个空白的白色屏幕。
这是我的PHP代码:
<?php
$name = isset($_POST['name']) ? $_POST['name'] : '';
$email = isset($_POST['email']) ? $_POST['email'] : '';
$message = isset($_POST['message']) ? $_POST['message'] : '';
$from = 'From: ContactForm';
$to = 'email@email.com';
$subject = 'Hello';
$verify = $_POST['verify'];
$body = "From: $name\n E-Mail: $email\n Message:\n $message";
if (isset($_POST["submit"]) && $verify == '4') {
if (mail ($name, $email, $message)) {
echo '<p>Your message has been sent!</p>';
}
else {
echo '<p>Something went wrong, go back and try again!</p>';
}
}
else if (isset($_POST["submit"]) && verify != '4') {
echo '<p>You answered the anti-spam question incorrectly!</p>';
}
?>
这是我的HTML代码:
<form action="pages/mail.php" method="post">
<div class="col-md-12">
<div class="form-group">
<label for="name" class="sr-only">Name</label>
<input placeholder="Name" id="name" type="text" class="form-control input-lg">
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label for="email" class="sr-only">Email</label>
<input placeholder="Email" id="email" type="text" class="form-control input-lg">
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label for="message" class="sr-only">Message</label>
<textarea placeholder="Message" id="message" class="form-control input-lg" rows="3"></textarea>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<input id="submit" type="submit" class="btn btn-primary btn-lg " value="Send">
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label for="verify" class="sr-only">Verify</label>
<input name="verify" placeholder="What is 2+2" class="form-control input-lg">
</div>
</div>
</form>
答案 0 :(得分:2)
您的input
没有name
属性,因此没有“提交”密钥,并且没有调用echo
的条件(白页没有错误)。
答案 1 :(得分:0)
在开发过程中打开显示PHP错误和警告,以便确切地看到出错的地方。
邮件功能调用缺少收件人地址($to
),因此无论如何都很难发送电子邮件。
但脚本执行中断是因为您在}
之前有一个额外的else if
。如果您启用了所有错误消息,则会得到类似Fatal error: syntax error: Unexpected T_ELSE at line xy.
答案 2 :(得分:0)
PHP,与JavaScript不同,它不会让您丢失分号或花括号。首先,在继续修复逻辑之前,确保您的代码在语法上有效且没有拼写错误。在大多数情况下,可以通过在PHP文件的顶部包含以下行来显示错误:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
找到并修复这些错误之后,这就是表单本身不起作用的原因:
name
属性虽然最好设置输入元素的ID,但PHP脚本并不了解它们。您需要为输入字段指定一个name
属性,其值与服务器端的值相同。
这意味着如果您有以下HTML表单并输入
<form action="whatever.php" method="POST">
<input type="text" name="my_text_input">
</form>
您可以在whatever.php
中在服务器端访问它
<?php
$myTextBoxValue = $_POST['my_text_input'];
?>
希望这有帮助!