弹出窗口和 PHP 表单
Popup Window and PHP form
我创建了一个联系页面和一个单独的PHP页面来接收发布的数据。我想在弹出窗口中打开 PHP。我在网上尝试过方法,但没有任何成功,我可以让弹出窗口出现,但我不能让 PHP 发送数据。
<!------Contact Page------->
<form method='post' action='sendemail.php' >
<label>Name</label>
<input name="name" placeholder="Type Here">
<label>Email</label>
<input name="email" placeholder="Type Here" id="email">
<label>Message</label>
<textarea name="message" placeholder="Type Here"></textarea>
<label>Human Verification</label>
<input name="human" placeholder="2 + 2 = ? " id="human">
<input id="submit" name="submit" type="submit" value="Submit">
</label>
</form>
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = $email;
$to = 'my@email.com';
$subject = 'New Message';
$human = $_POST['human'];
$body = "From: $name'n E-Mail: $email'n Message:'n $message";
if ($_POST['submit']) {
if ($name != '' && $email != '') {
if ($human == '4') {
if (mail ($to, $subject, $body, $from)) {
echo '<h4>Your message has been sent!</h4>';
} else {
echo '<h4>Something went wrong, go back and try again!</h4>';
}
} else if ($_POST['submit'] && $human != '4') {
echo '<h4>You answered the anti-spam question incorrectly!</h4>';
}
} else {
echo '<h4>You need to fill in all required fields!!</h4>';
}
}
?>
我认为
如果 php 脚本位于表单的同一页面中,只是在一个隐藏的div 中,您必须使用 php 自身定位操作
<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"
因此,变量 POST 设置正确。
如果您需要在弹出窗口中发布,您可以使用 ajax 发送日期或 jquery 在隐藏的div 中加载外部页面,例如:
$('#submit').click(function(){
load(external.php); //where your script is
});
在这两种情况下,它都应该有效。
由于您正在提交内容并向另一个页面发出 POST/GET 请求,因此模态不会像您当前使用它的方式那样工作。由于您正在重定向到PHP代码。您应该使用 Javascript 来显示弹出窗口。
也许在您的提交按钮中添加onclick
?
<input type='submit' onclick='alert("Message sent!")' />
另一种选择是使用 jquery ($.ajax();
) 对 PHP 文件进行 Ajax 调用,然后使用您喜欢的任何库来显示您需要的弹出窗口。也许检查Jquery或Bootstrap的模态可以给你一个提示,如果你想成为复杂的方法。
<input type='submit' onclick='sendMessage()' />
function sendMessage(){
$.ajax({
//your stuff
});
$('.message').modal();
}
特别是对于像表单这样的东西,我会确保它不依赖于JavaScript,以防用户在浏览器中关闭JavaScript。
为什么不保持简单,将所有内容都放在同一个页面上,并在表单上方显示错误消息,并用PHP重新填充字段?
例:
<?php
// Check if coming from a POST
if ($_SERVER['REQUEST_METHOD']=='POST' && isset($_POST['submit'])) {
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = $email;
$to = 'you@youremail.com';
$subject = 'New Message';
$human = $_POST['human'];
$body = "From: $name'n E-Mail: $email'n Message:'n $message";
if ($_POST['submit']) {
if ($name != '' && $email != '') {
if ($human == '4') {
if (mail ($to, $subject, $body, $from)) {
echo '<h4>Your message has been sent!</h4>';
} else {
echo '<h4>Something went wrong, go back and try again!</h4>';
} //endif
} else if ($_POST['submit'] && $human != '4') {
echo '<h4>You answered the anti-spam question incorrectly!</h4>';
}
} else {
echo '<h4>You need to fill in all required fields!!</h4>';
} //endif
} //endif
} //endif
?>
<form method='post' action='<?php echo $_SERVER['PHP_SELF']; ?>' >
<label>Name</label>
<input name="name" placeholder="Type Here" value="<?php if (isset($_POST['name'])) { echo $name;} ?>" >
<label>Email</label>
<input name="email" placeholder="Type Here" id="email" value="<?php if (isset($_POST['email'])) { echo $email;} ?>">
<label>Message</label>
<textarea name="message" placeholder="Type Here"><?php if (isset($_POST['message'])) { echo $message;} ?></textarea>
<label>Human Verification</label>
<input name="human" placeholder="2 + 2 = ? " id="human" value="<?php if (isset($_POST['human'])) { echo $human;} ?>">
<input id="submit" name="submit" type="submit" value="Submit">
</label>
</form>
相关文章:
- 传递给 PHP 表单时 JavaScript 动态变量上的未定义索引
- 带有条件字段的PHP表单
- PHP表单提交和重定向
- 如何防止丢失PHP表单中输入的输入字段
- 在动态加载的PHP表单上放置JavaScript事件
- 正在创建'谢谢你'使用colorbox弹出PHP表单
- 带有jquery验证问题的php表单
- 如何将我通过JavaScript计算的自定义金额作为金额发送到PHP表单
- 提交时将JavaScript变量转换为PHP表单
- 带有多个提交按钮的PHP表单
- php表单验证n在表单上显示消息3秒钟并淡出
- php表单发布时正在加载进度条
- 带有javascript按钮的PHP表单-不起作用
- PHP表单适用于索引,但不适用于联系我们页面
- Cake php表单助手.替换输入值
- 对php表单的修改
- 如何在刷新时显示PHP表单中的随机文本和图像
- 自动完成PHP表单选择字段中的用户姓氏
- php表单中的JQuery-重定向到成功页面
- PHP表单,MailFoction和Google reCaptcha验证问题