5

私のアプリケーションでは、登録中にSMSをユーザーに送信する必要があります。しかし、データベースにレコードを挿入しているときに、ブラウザでこの URL にアクセスしたいと考えています。

このURLをバックグラウンドで実行する方法を提案できますか

http://www.myurl.com/smpp/sendsms?username=XX&password=XX&to=XX&from=XX&text=Test

4

9 に答える 9

8

これはbackground、ユーザーがそのページにリダイレクトされないことを意味していると思いますが、あなたが何を意味するかによって異なります。

もし私があなただったら、cURLがインストールされていればそれを使います。なぜなら、あなたがやりたいと思うことは、通常の要求を行い、おそらく応答を読むことだけだからです。以下のコードはテストされていませんが、ヒントになるはずです。

$req = curl_init();
curl_setopt($req, CURLOPT_URL,"theaddress_and_params");
curl_exec($req);
于 2013-02-05T13:47:55.287 に答える
2

その場合、URL (またはヘッダー) でユーザー名とパスワードを公開することになります。事前にユーザーにログインしてもらい、セッション変数を使用してください。

于 2013-10-03T00:08:49.847 に答える
1

これをクライアント側から送信しないでください。すべてのユーザーは、URL にいくつかの (悪意のある可能性のある) パラメータをロードするだけで簡単にデータを「偽造」できるからです。「ユーザー名」と「パスワード」はまったく保護されていないため、サービスがすぐにダウンすることは間違いありません。

代わりに、PHP の curl 関数を使用してバックグラウンド (サーバー側) でこれを簡単に行うことができます。

http://www.php.net/manual/en/curl.examples-basic.php

于 2013-02-05T13:45:41.930 に答える
0

pcntl php 拡張機能を使用して子プロセスをフォークできます。

(これを実装するライブラリ: https://github.com/kriswallsmith/spork )

于 2013-02-05T13:40:56.453 に答える
0

PHPコードのすべてが段階的に実行されるため、マルチスレッド(本質的にはあなたが求めているもの)のような概念はないと思いますが、解決策にたどり着くことができます。thisthisの質問とその回答を参照してください。

PHP にマルチスレッドがない理由は、すべてがサーバーで処理され、クライアントとしてすでに完了した応答を受け取っているためです。そのため、PHP の「バックグラウンドで実行」は「順次実行」と同じです。

于 2013-02-05T13:41:04.507 に答える
0

ユーザーが送信ボタンを押したときに AJAX 呼び出しを行います。これにより、現在の PHP がデータベースにレコードを挿入している間、その URL のスクリプトがバックグラウンドで実行されます。

于 2013-02-05T13:41:25.537 に答える
0

アヤックス?ajax で別の php ファイルを呼び出してレコードを保存している間に、その URL を ajax で div 内にロードします。

于 2013-02-05T13:42:04.300 に答える
0
$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)

于 2014-01-29T02:15:16.963 に答える