阻止提交表单上的页面重定向…php
这里我使用的是一个联系方式。当我点击提交按钮而不是在同一页上显示“message sent successfully”时,它会重定向到空白页 html阻止提交表单上的页面重定向…php,php,html,forms,Php,Html,Forms,这里我使用的是一个联系方式。当我点击提交按钮而不是在同一页上显示“message sent successfully”时,它会重定向到空白页 html <div class="form"> <div style = "font-size:11px; color:#cc0000; margin-top:10px"></div> <div id="sendmessage" style="display:none">Your message has be
<div class="form">
<div style = "font-size:11px; color:#cc0000; margin-top:10px"></div>
<div id="sendmessage" style="display:none">Your message has been sent successfully.</div>
<div id="errormessage"></div>
<form action="contact.php" method="post" role="form" id="myForm" class="contactForm">
<div class="form-group">
<input type="text" name="name" required="required" class="form-control input-text" id="clientname" placeholder="Your Name" data-rule="minlen:4" data-msg="Please enter at least 4 chars" />
<div class="validation"></div>
</div>
<div class="form-group">
<input type="email" class="form-control input-text" name="email" required="required" id="email" placeholder="Your Email" data-rule="email" data-msg="Please enter a valid email" />
<div class="validation"></div>
</div>
<div class="form-group">
<input type="tel" class="form-control input-text" min="0" maxlength="10" required="required" name="phone" id="subject" placeholder="Phone Number" data-rule="minlen:4" data-msg="Please enter at least 8 chars of subject" />
<div class="validation"></div>
</div>
<div class="form-group">
<textarea class="form-control input-text text-area" name="msg" rows="5" required="required" data-rule="required" data-msg="Please write something for us" placeholder="Message"></textarea>
<div class="validation"></div>
</div>
<div class="text-center"><button type="submit" class="input-btn" onclick="sendMsg(2000)">Send Message</button></div>
</form>
</div>
您的邮件已成功发送。
发送消息
contact.php
<?php
include("config.php");
if(!$db)
echo mysql_error($db);
$name = mysqli_real_escape_string($db, $_POST['name']);
$email = mysqli_real_escape_string($db, $_POST['email']);
$phone = mysqli_real_escape_string($db, $_POST['phone']);
$message = mysqli_real_escape_string($db, $_POST['msg']);
$id = uniqid() . sha1($name);
$sql="INSERT INTO contact (id, Name, Email, Phone, Message) VALUES ('$id', '$name', '$email','$phone','$message');";
if (!mysqli_query($db,$sql))
{
die('Error: ' . mysqli_error($db));
}
?>
<?php
include("config.php");
$message = "";
if (isset($_POST['submit'])) {
//validated your inputs fields
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['msg'];
$id = uniqid() . sha1($name);
$sql = "INSERT INTO contact (id, Name, Email, Phone, Message) VALUES ('$id', '$name', '$email','$phone','$message');";
//prepare and bind
$sql = $db->prepare("INSERT INTO contact (id, Name, Email, Phone, Message) VALUES(?,?,?,?,?)");
$sql->bind_param("sssss", $id, $name, $email, $phone, $message);
if ($sql->execute()) {
$message = "ok";
}else{
$message = "could not send/ insert";
}
echo json_encode($message);
}
?>
如果您不想表单重定向到另一个页面,您有两种方法,1。使用php_self作为表单操作,或者使用AJAX(页面甚至不会刷新),也可以使用准备好的语句来防止sql注入,正如Jay在上面所建议的那样
选项1:PHP_SELF
<?php
include("config.php");
$successMessage = "";
if (isset($_POST['submit'])) {
//validated your inputs fields
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['msg'];
$id = uniqid() . sha1($name);
$sql = "INSERT INTO contact (id, Name, Email, Phone, Message) VALUES ('$id', '$name', '$email','$phone','$message');";
//prepare and bind
$sql = $db->prepare("INSERT INTO contact (id, Name, Email, Phone, Message) VALUES(?,?,?,?,?)");
$sql->bind_param("sssss", $id, $name, $email, $phone, $message);
if ($sql->execute()) {
$message = "Your message has been sent successfully.";
}
$sql->close();
$db->close();
}
?>
<div class="form">
<div style = "font-size:11px; color:#cc0000; margin-top:10px"></div>
<div id="sendmessage"><?php echo $message;?></div>
<div id="errormessage"></div>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post" role="form" id="myForm" class="contactForm">
<div class="form-group">
<input type="text" name="name" required="required" class="form-control input-text" id="clientname" placeholder="Your Name" data-rule="minlen:4" data-msg="Please enter at least 4 chars" />
<div class="validation"></div>
</div>
<div class="form-group">
<input type="email" class="form-control input-text" name="email" required="required" id="email" placeholder="Your Email" data-rule="email" data-msg="Please enter a valid email" />
<div class="validation"></div>
</div>
<div class="form-group">
<input type="tel" class="form-control input-text" min="0" maxlength="10" required="required" name="phone" id="subject" placeholder="Phone Number" data-rule="minlen:4" data-msg="Please enter at least 8 chars of subject" />
<div class="validation"></div>
</div>
<div class="form-group">
<textarea class="form-control input-text text-area" name="msg" rows="5" required="required" data-rule="required" data-msg="Please write something for us" placeholder="Message"></textarea>
<div class="validation"></div>
</div>
<div class="text-center"><button type="submit" name="submit" class="input-btn" onclick="sendMsg(2000)">Send Message</button></div>
</form>
</div>
这可以通过将iframe作为目标并隐藏它来实现。
像这样的
<iframe name="myframe" id="frame1" src="thankyou.php" style="display:none"></iframe>
<form action="../thankyou.php" method="post" target="myframe">
<input type="submit" name="DoIt" value="DoIt">
</form>
它导航到contact.php,执行一个操作。因为那里没有输出,所以不显示任何内容。您可能希望将contact.php重定向添加到您选择的位置。如果您想保持在同一个页面上,就必须使用AJAX。表示了解的语句。即使是这样也不安全!未定义索引:$firstnmmixingmysqli
withmysql
echo mysql\u error($db)您的js代码在哪里?是的,我需要帮助,但在不同的问题上,如果您能在这方面帮助我,那就太好了。
<?php
include("config.php");
$message = "";
if (isset($_POST['submit'])) {
//validated your inputs fields
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['msg'];
$id = uniqid() . sha1($name);
$sql = "INSERT INTO contact (id, Name, Email, Phone, Message) VALUES ('$id', '$name', '$email','$phone','$message');";
//prepare and bind
$sql = $db->prepare("INSERT INTO contact (id, Name, Email, Phone, Message) VALUES(?,?,?,?,?)");
$sql->bind_param("sssss", $id, $name, $email, $phone, $message);
if ($sql->execute()) {
$message = "ok";
}else{
$message = "could not send/ insert";
}
echo json_encode($message);
}
?>
<iframe name="myframe" id="frame1" src="thankyou.php" style="display:none"></iframe>
<form action="../thankyou.php" method="post" target="myframe">
<input type="submit" name="DoIt" value="DoIt">
</form>