Web - URI

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
2024年11月12日 (火) 00:30時点におけるWiki (トーク | 投稿記録)による版 (ページの作成:「== 概要 == <br><br> == クエリパラメータ == クエリパラメータを含めた文字列全体はURLである。<br> <br> 例: https://example.com/search.php?keyword=太郎&page=2&sort=desc#section1<br> <br> 上記のURLは以下のような構造に分解できる。<br> これら全ての要素を含めて、1つのURLとして扱う。<br> * スキーム (プロトコル) *: https:// * ホスト名 *: example.com * パス *: /search.php * クエリ文…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

概要



クエリパラメータ

クエリパラメータを含めた文字列全体はURLである。

例: https://example.com/search.php?keyword=太郎&page=2&sort=desc#section1

上記のURLは以下のような構造に分解できる。
これら全ての要素を含めて、1つのURLとして扱う。

  • スキーム (プロトコル)
    https://
  • ホスト名
    example.com
  • パス
    /search.php
  • クエリ文字列
    ?keyword=太郎&page=2&sort=desc
  • フラグメント識別子
    #section1


※注意
クエリパラメータを含む完全なURL文字列は、以下に示すような特徴があることに注意する。
ただし、セキュリティ上の理由から、パスワード等の機密情報をURLのクエリパラメータに含めることは避けるべきである。

  • 有効なURLとして扱われる。
  • プログラムで解析可能。
  • Webブラウザで正しく解釈される。


  • 文字エンコーディング
    // 日本語等の場合はURLエンコードが必要
    $encodedKeyword = urlencode("太郎");
    $url = "https://example.com/search.php?keyword=" . $encodedKeyword;
    

  • 複数パラメータの結合
    // クエリパラメータは、&で連結
    $params = [
       'keyword' => '太郎',
       'page' => 2,
       'sort' => 'desc'
    ];
    $queryString = http_build_query($params);
    $url                = "https://example.com/search.php?" . $queryString;
    

  • 最大長の制限
    Webブラウザによって異なるが、通常2,000〜8,000文字程度
    長すぎるクエリは、POSTメソッドを使用する。

  • PHPでの取り扱い例
    // URLの解析
    $url = "https://example.com/search.php?keyword=太郎&page=2";
    $parsedUrl = parse_url($url);
    
    print_r($parsedUrl);
    
    // 出力
    Array (
       [scheme] => https
       [host] => example.com
       [path] => /search.php
       [query] => keyword=太郎&page=2
    )
    

  • クエリ文字列の解析
    parse_str($parsedUrl['query'], $queryParams);
    print_r($queryParams);
    
    // 出力
    Array (
       [keyword] => 太郎
       [page] => 2
    )