[英]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")
}
我可能會想到的選擇。
但是我不知道這些選項的實用性,因為我還在查詢字符串中使用加密的數據。
您的代碼容易受到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.