0

我使用此代码将我的联系人信息保存到 MySQL 数据库并应用 JQuery 确认函数来确认数据提交,但是当确认对话框打开 PHP 脚本时无法停止,或者 PHP 绕过 JQuery 确认代码并将数据提交到数据库中,任何想法这个问题。

<?php
//Database connection.
include'connect.php';
if(isset($_POST['name'])&&isset($_POST['email'])&&isset($_POST['contact'])){
$name = $_POST['name'];
$email = $_POST['email'];
$contact = $_POST['contact'];

if(empty($name)&&empty($email)&&empty($contact)){
echo'
  <script>
    $(document).ready(function(){
        alert("Please fill all fields.");
    });
  </script>
';
 }else{
  if($sql = mysql_query("INSERT INTO contact_list VALUES ('', '".mysql_real_escape_string($name)."', '".mysql_real_escape_string($email)."', '".mysql_real_escape_string($contact)."')")){
    echo'
      <script>
        $(document).ready(function(){
           confirm("Are you sure to Saved Contact?");
        });
      </script>
    ';
  }else{
    echo'
      <script>
        $(document).ready(function(){
            alert("Something is wrong, Please check");
        });
      </script>
        ';
     }
 }
 }
 ?>

<html>
   <form action="#" method="POST">
      Full name:<input type="text" name="name">
      Email:<input type="text" name="email">
      Contact:<input type="text" name="contact">
   </form>
</html>
4

1 回答 1

3

PHP由服务器执行,而javascript由客户端执行。并且您希望服务器“等待”或“停止执行”,直到客户端执行某些 js 代码。好吧,这是不可能的。

您必须将 PHP 代码拆分为两个不同的 PHP 脚本:一个用于确认,另一个用于数据保存。例如,使用伪代码:

确认.php

Hey, are you sure you want to save the data?
<a href="save.php">Yes, I'm sure</a>

保存.php

INSERT INTO 'blablabla' VALUES bla bla bla bla bla

当然,您实际上不必将其拆分为两个脚本。您可以再添加一个 $_POST 参数,例如“confirmed=true/false”,而不是两个脚本,而是一个多一个if () {} else {}块。

但是想法是您必须将这两个操作分开,因为您不能同时使用 PHP 进行确认和保存。


还有更多选择:

  1. 用户确认操作后,使用 ajax 运行“保存脚本”

  2. 使用 javascript 来防止“保存脚本”在未经确认的情况下运行,例如:<input type="submit" onclick="return confirm('Sure?');" value="Save"/>

于 2013-05-23T10:53:34.447 回答