Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
阻止提交表单上的页面重定向…php_Php_Html_Forms - Fatal编程技术网

阻止提交表单上的页面重定向…php

阻止提交表单上的页面重定向…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

这里我使用的是一个联系方式。当我点击提交按钮而不是在同一页上显示“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 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。表示了解的语句。即使是这样也不安全!未定义索引:$firstnmmixing
mysqli
with
mysql
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>