私のアプリケーションでは、登録中にSMSをユーザーに送信する必要があります。しかし、データベースにレコードを挿入しているときに、ブラウザでこの URL にアクセスしたいと考えています。
このURLをバックグラウンドで実行する方法を提案できますか
http://www.myurl.com/smpp/sendsms?username=XX&password=XX&to=XX&from=XX&text=Test
これはbackground
、ユーザーがそのページにリダイレクトされないことを意味していると思いますが、あなたが何を意味するかによって異なります。
もし私があなただったら、cURLがインストールされていればそれを使います。なぜなら、あなたがやりたいと思うことは、通常の要求を行い、おそらく応答を読むことだけだからです。以下のコードはテストされていませんが、ヒントになるはずです。
$req = curl_init();
curl_setopt($req, CURLOPT_URL,"theaddress_and_params");
curl_exec($req);
その場合、URL (またはヘッダー) でユーザー名とパスワードを公開することになります。事前にユーザーにログインしてもらい、セッション変数を使用してください。
これをクライアント側から送信しないでください。すべてのユーザーは、URL にいくつかの (悪意のある可能性のある) パラメータをロードするだけで簡単にデータを「偽造」できるからです。「ユーザー名」と「パスワード」はまったく保護されていないため、サービスがすぐにダウンすることは間違いありません。
代わりに、PHP の curl 関数を使用してバックグラウンド (サーバー側) でこれを簡単に行うことができます。
pcntl php 拡張機能を使用して子プロセスをフォークできます。
(これを実装するライブラリ: https://github.com/kriswallsmith/spork )
ユーザーが送信ボタンを押したときに AJAX 呼び出しを行います。これにより、現在の PHP がデータベースにレコードを挿入している間、その URL のスクリプトがバックグラウンドで実行されます。
アヤックス?ajax で別の php ファイルを呼び出してレコードを保存している間に、その URL を ajax で div 内にロードします。
$url = 'http://yoursmsgateway.com/WebSMS/SMSAPI.jsp?username='.$smsuser.'&password='.$smspwd.'&sendername='.$smssender.'&mobileno='.$number.'&message='.urlencode($message);
echo $url;
$mystring = get_data($url);
//echo "hi!";
echo $mystring;
function get_data($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
このコードを試すことができますが、cUrl DLL ファイルをインストールする必要があります。CURL をインストールするプロセスを以下に示します:--
1.) php.ini ファイルを開く
2.) この dll ファイルを見つけます ---> ;extension=php_curl.dll
3.)削除; (セミコロン)
4.) ---> extension=php_curl.dll など
5.)保存します (Ctrl+s)