ホームページ  >  記事  >  バックエンド開発  >  iOS フルスタック Siege Lion (PHP) -- セッション 3

iOS フルスタック Siege Lion (PHP) -- セッション 3

WBOY
WBOYオリジナル
2016-06-20 12:41:27880ブラウズ

クライアント入力の処理

何?

  • クライアント IP
  • クライアントがアクセスする URI (リソース パス)
  • ユーザー-Agent
  • GETパラメータ(URLを使用して渡されるパラメータ)
  • POSTパラメータ(HTTP Bodyを使用して入力されるパラメータ) これらはクライアントの共通入力内容であり、クライアントアクセスです サーバープロセス中に、さまざまなデータがサーバーに送信されます。

方法

GET

PHP を使用して入力を取得するのは、$_GET または $_POST を使用して非常に簡単です。 。

次に、iOS クライアントを使用して http://localhost/index.php?name=Pony にリクエストを送信します

//Swift Playground//你可以在 Xcode 中创建一个 Playground 运行以下代码import UIKitlet request = NSMutableURLRequest(URL: NSURL(string: "http://localhost/index.php?name=Pony")!)NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { (response, responseData, error) -> Void in    if let responseData = responseData {        if let responseString = String(data: responseData, encoding: NSUTF8StringEncoding) {            print(responseString)        }    }}NSRunLoop.currentRunLoop().runUntilDate(NSDate(timeIntervalSinceNow: 10))

これは非常に単純なリクエストです。 GET リクエストを http://localhost/index.php に送信し、GET パラメータ、キー = 名前、値 = Pony を渡します。最後に、サーバーから返されたデータを取得し、それを文字列に変換して出力します。予期せぬことが起こらなかった場合は、プレイグラウンドで返された結果を確認できます。

ここで、index.php が文字列 Pony を取得し、処理された文字列をクライアントに返すことができるように、index.php を変更します。

//index.php<?php$name = $_GET["name"];echo 'Hello, '. $name. '!';

プレイグラウンドを再度実行すると、結果バーに Hello, Pony! が表示されていることがわかります。

結果

GET パラメータを取得するのは確かに非常に簡単です。名前が空の場合は、Doubi のプロダクト マネージャーが要件を追加します。 「誰もいない!」と返す

コードを少し変更して、empty() を使用して $_GET["name"] を判断できます。empty() の使用方法については、こちらを参照してください。

<?phpif (!empty($_GET["name"])) {    $name = $_GET["name"];    echo 'Hello, '. $name. '!';}else {    echo 'Nobody!';}

URL から Pony を削除して、実行結果を確認してみてください。

POST

POST フォームでのパラメーターの取得は、GET での取得とまったく同じです。ただし、最初にプレイグラウンドのリクエスト コードを変更して、POST リクエストを送信するようにする必要があります。

import UIKitlet request = NSMutableURLRequest(URL: NSURL(string: "http://localhost/index.php")!)request.HTTPMethod = "POST"request.HTTPBody = "name=Pony".dataUsingEncoding(NSUTF8StringEncoding)NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { (response, responseData, error) -> Void in    if let responseData = responseData {        if let responseString = String(data: responseData, encoding: NSUTF8StringEncoding) {            print(responseString)        }    }}NSRunLoop.currentRunLoop().runUntilDate(NSDate(timeIntervalSinceNow: 10))

次に、index.php の $_GET の部分を $_POST に置き換えます。

<?php//index.phpif (!empty($_POST["name"])) {    $name = $_POST["name"];    echo 'Hello, '. $name. '!';}else {    echo 'Nobody!';}

プレイグラウンドを実行すると、効果がわかります。

Print

$_GET と $_POST は配列であると言ったときのことを覚えていますか? PHP の世界では、print_r() 関数を使用して配列のすべての情報を出力できます。これは、現在のクライアントによって渡されたすべてのパラメーターを確認できるため、アプリケーションのデバッグに非常に便利です。

<?phpprint_r($_POST);

クライアントが PHP から受け取った印刷結果は以下の通りです

Array(    [name] => Pony)

拡張: クライアント情報の取得

クライアント情報には User-Agent とIP など。この情報は、$_SERVER 配列を使用して取得できます。その取得方法は、クライアントの IP またはユーザー エージェントを自分で取得することを試みることができます。

終了

ここでは、ユーザー入力をフィルタリングしていません。これについては後で説明します。講座内で詳しく解説しています。同時に、このコースでは POST リクエストで HTTPBody を取得する方法についてはまだ説明していませんが、これについても後続のコースで説明します。

次の記事:

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。