0

私には状況があります。

電子メール サーバーの権限を持つ他のサーバーでスクリプトを実行する必要がある 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 を介して別の呼び出しを行い、リモートサーバーにアクセスします。

しかし、クエリ文字列で暗号化されたデータも使用しているため、これらのオプションがどれほど実用的かはわかりません。

4

3 に答える 3

1

あなたのコードはSQLインジェクションに対して脆弱ですあなたはすべてのgetとpostをエスケープする必要があります

最初のajax呼び出しが正常に返されると、useajax呼び出しを送信します

于 2013-02-14T08:21:03.033 に答える
0

最終的には、別の ajax 呼び出しのオプションを使用する必要がありましたが、奇妙なケースを共有したかったのです。それは誰かを助けるかもしれません。

コールバックのない Ajax 呼び出しを使用し、各要求にも失敗メッセージがありました

「XMLHttpRequest は 'リモート サーバー アドレス' オリジンを読み込めませんhttp://mystuff.localは Access-Control-Allow-Origin で許可されていません」

でも不思議なことに、それぞれのリクエストも成功してメールが届く..

于 2013-02-14T11:31:41.013 に答える
0

最初に成功した ajax 応答で 2 番目の 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');

                          }
                  });

              }
      });
于 2013-02-14T08:09:56.380 に答える