2013-02-14 75 views
0

我有一種情況;在通過ajax調用的頁面上執行其他服務器腳本

我通過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調用另一個調用來訪問遠程服務器。

但我不知道這些選項是多麼實際,因爲我也在查詢字符串中使用加密數據。

+0

以及你不能做什麼你問你的PHP,除非你刷新你的頁面,以便排除PHP的執行功能。你需要ajax。你嘗試過哪些ajax代碼?你有什麼問題? – Tucker 2013-02-14 07:38:23

+0

你的問題不清楚,不能回答。請嘗試更清楚地定義需求,特別是'遠程服務器'所反映的內容。請不要寫更多評論,編輯上面的問題。 – arkascha 2013-02-14 07:39:09

+0

嗯,我正在嘗試'頭部(位置:Remotr地址?querystring)'來訪問遠程頁面,但後來我才知道在Ajax調用重定向是不可能的;爲什麼'exec()'在這裏不起作用? – 2013-02-14 07:41:53

回答

0

最終我不得不去用的另一種選擇阿賈克斯電話,但我想分享一個奇怪的情況。 它可能會幫助某人。

我使用Ajax調用哪個沒有回叫和每個請求也有失敗消息

「的XMLHttpRequest不能加載產地http://mystuff.local不受訪問控制允許來源允許的‘遠程服務器地址’」

但奇怪的是,每個請求也成功與電子郵件遞送..

+0

上面的錯誤通過把'header( 'Access-Control-Allow-Origin:*');'在請求頁面的頂部 – 2013-02-14 12:07:51

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'); 

          } 
        }); 

       } 
     }); 
1

你的代碼是受到SQL注入攻擊,你需要逃避所有GET和POST在第一Ajax調用成功返回

發送使用AJAX調用

+0

我的加密menthod正在處理sql注入威脅 – 2013-02-14 11:33:05

相關問題