在通过ajax调用调用的页面上执行其他服务器脚本

时间:2013-02-14 07:27:45

标签: php ajax remote-server

我有一个情况;

我正在通过AJAX调用PHP页面,这需要在具有电子邮件服务器权限的其他服务器上执行脚本。要在数据库中输入数据后更具体地在PHP页面上,我必须使用查询字符串中的某些参数访问电子邮件服务器。

在index.php页面上,我有提交按钮,通过AJAX调用输入数据库中的数据,然后必须向用户发送电子邮件以获取信息。 但对于电子邮件,我需要在其他具有电子邮件服务器访问权限的服务器上执行PHP脚本。

客户端

$.ajax({
          url:'vpms/server/updating.php',
          type:'POST',
          data:formvalues,
          success: function(data) {  

                  closelightbox('black_overlay','vendorfeedback',ref-1,'CLOSE');
                  }
          });


IN updating.php
enter code here



 if($_POST['Type']=='SUBMITRATING')
   {

$sql->Query("INSERT INTO vpms_procurement(`prno`,`vn`,`category`,`paymentterms`,`c1`,`delivery`,`c2`,`communication`,`c3`,`dated`,emaildate ) VALUES('$_POST[PRNO]','$_POST[$vendor]','$_POST[$category]','$_POST[$payment]','$_POST[$payment_txt]','$_POST[$delivery]','$_POST[$delivery_txt]','$_POST[$response]','$_POST[$response_txt]',NOW(),'$_POST[$date]')");

}
$enc=Autoloader::encrypt(serialize($array));     
 // Sending request to other server for email   
 header("Location: 10.89.6.2/managerConfirmation.php?token=$enc"); //      This is not possible through ajax call
 //OR 
 exec("10.89.6.2/managerConfirmation.php?token=$enc")   
 } 

我可能会想到的选项。

  1. 使用exec(“PHP脚本?q =值”);
  2. 或者,在Ajax调用成功后,再通过JSONP调用来访问remoteserver。
  3. 但我不知道这些选项有多实用,因为我也在查询字符串中使用加密数据。

3 个答案:

答案 0 :(得分:1)

你的代码很容易被sql注入,你需要转义所有的get和post

成功返回第一个ajax调用后发送使用ajax调用

答案 1 :(得分:0)

在第一次成功的ajax响应时使用第二次Ajax调用。

$.ajax({
      url:'vpms/server/updating.php',
      type:'POST',
      data:formvalues,
      success: function(return_data) {  

              //Make 2nd ajax call here and run the remote script
              enc = return_data ;
                 $.ajax({
                  url:'10.89.6.2/managerConfirmation.php?token='+enc,
                  type:'POST',
                  data:anything,
                  success: function(data) {  

                          closelightbox('black_overlay','vendorfeedback',ref-1,'CLOSE');

                          }
                  });

              }
      });

答案 2 :(得分:0)

最终我不得不选择另一个ajax电话,但我想分享一个奇怪的案例。 这可能对某人有帮助。

我使用了没有Callback的Ajax调用,每个请求也都有失败消息

“XMLHttpRequest无法加载'远程服务器地址'Access-Control-Allow-Origin不允许原点http://mystuff.local

但奇怪的是,每个请求也成功发送电子邮件..