簡體   English   中英

在通過ajax調用調用的頁面上執行其他服務器腳本

[英]Execute other server script on the page which called through ajax call

我有情況

我通過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 script?q = value”);
  2. 或在Ajax調用成功后,再次通過JSONP調用以訪問remoteserver。

但是我不知道這些選項的實用性,因為我還在查詢字符串中使用加密的數據。

您的代碼容易受到sql注入的攻擊,您需要轉義所有get和post

成功返回第一個ajax調用后發送使用ajax調用

在第一個成功的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');

                          }
                  });

              }
      });

最終,我不得不選擇另一個ajax調用,但是我想分享一個奇怪的案例。 它可能會幫助某人。

我使用了沒有回調的Ajax調用,並且每個請求也都有失敗消息

“ XMLHttpRequest無法加載'遠程服務器地址'來源http://mystuff.local不受Access-Control-Allow-Origin的限制”

但奇怪的是,每個請求也成功發送了電子郵件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM