php_getpost
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| php_getpost [2018/10/20 08:14] – [デモ] 管理者 | php_getpost [2018/10/20 08:56] (現在) – [説明] 管理者 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | {{tag> | ||
| + | [[start]]>[[programming_start]] | ||
| + | ~~NOCACHE~~ | ||
| + | ====== PHP フォームからの入力を受け取る ====== | ||
| + | PHPでフォームからの入力を受け取るには下記の2方式が一般的です。 | ||
| + | - スーパーグローバル変数の '' | ||
| + | - '' | ||
| + | |||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | ===== $_GET[]・$_POST[]で受け取る ===== | ||
| + | 入力フォームに文字列を入れて「送信」ボタンを押すと、下記に入力した文字列が表示されます。 | ||
| + | |||
| + | |||
| + | ==== デモ ==== | ||
| + | <php> | ||
| + | // | ||
| + | echo '< | ||
| + | echo '< | ||
| + | echo '< | ||
| + | echo '< | ||
| + | echo '</ | ||
| + | |||
| + | // | ||
| + | if ( !isset($_GET[' | ||
| + | $err=' | ||
| + | }elseif ( is_array($_GET[' | ||
| + | $err=' | ||
| + | }else{ | ||
| + | $str=$_GET[' | ||
| + | } | ||
| + | |||
| + | // | ||
| + | if($err){ | ||
| + | echo '< | ||
| + | }else{ | ||
| + | // | ||
| + | $str=htmlspecialchars($str, | ||
| + | echo '< | ||
| + | } | ||
| + | echo '</ | ||
| + | </ | ||
| + | |||
| + | ==== コード ==== | ||
| + | <code php> | ||
| + | // | ||
| + | echo '< | ||
| + | echo '< | ||
| + | echo '< | ||
| + | echo '</ | ||
| + | |||
| + | // | ||
| + | // | ||
| + | if ( !isset($_GET[' | ||
| + | $err=' | ||
| + | }elseif ( is_array($_GET[' | ||
| + | $err=' | ||
| + | }else{ | ||
| + | $str=$_GET[' | ||
| + | } | ||
| + | |||
| + | // | ||
| + | if($err){ | ||
| + | echo '< | ||
| + | }else{ | ||
| + | // | ||
| + | $str=htmlspecialchars($str, | ||
| + | echo '< | ||
| + | } | ||
| + | echo '</ | ||
| + | </ | ||
| + | ==== 説明 ==== | ||
| + | dokuwikiで実行する場合はページ中に「%%~~NOCACHE~~%%」を記入しキャッシュ機能をOFFにしてください。 | ||
| + | |||
| + | **(a.)フォームを表示** | ||
| + | |||
| + | 一般的なhtmlのフォーム送信と同じなので説明は省略します。 | ||
| + | |||
| + | **(b.)フォームを受信** | ||
| + | |||
| + | GETで送信した場合は「%%$_GET[name]; | ||
| + | |||
| + | '' | ||
| + | |||
| + | '' | ||
| + | |||
| + | **(c.)出力** | ||
| + | |||
| + | 入力されたフォームには不正なHTMLやJavaScriptが含まれている可能性があるので、'' | ||
| + | |||
| + | |||
| + | ===== filter_inputで受け取る ===== | ||
| + | 入力フォームに文字列を入れて「送信」ボタンを押すと、下記に入力した文字列が表示されます。 | ||
| + | |||
| + | |||
| + | ==== デモ ==== | ||
| + | <php> | ||
| + | // | ||
| + | echo '< | ||
| + | echo '< | ||
| + | echo '< | ||
| + | echo '< | ||
| + | echo '</ | ||
| + | |||
| + | // | ||
| + | $str = filter_input(INPUT_GET, | ||
| + | if ( $str===FALSE ) { | ||
| + | $err=' | ||
| + | }elseif ( $str===NULL ) { | ||
| + | $err=' | ||
| + | } | ||
| + | |||
| + | |||
| + | // | ||
| + | if($err){ | ||
| + | echo '< | ||
| + | }else{ | ||
| + | // | ||
| + | $str=htmlspecialchars($str, | ||
| + | echo '< | ||
| + | } | ||
| + | echo '</ | ||
| + | </ | ||
| + | |||
| + | ==== コード ==== | ||
| + | <code php> | ||
| + | // | ||
| + | echo '< | ||
| + | echo '< | ||
| + | echo '< | ||
| + | echo '</ | ||
| + | |||
| + | // | ||
| + | // | ||
| + | $str = filter_input(INPUT_GET, | ||
| + | if ( $str===FALSE ) { | ||
| + | $err=' | ||
| + | }elseif ( $str===NULL ) { | ||
| + | $err=' | ||
| + | } | ||
| + | |||
| + | // | ||
| + | if($err){ | ||
| + | echo '< | ||
| + | }else{ | ||
| + | // | ||
| + | $str=htmlspecialchars($str, | ||
| + | echo '< | ||
| + | } | ||
| + | echo '</ | ||
| + | </ | ||
| + | ==== 説明 ==== | ||
| + | dokuwikiで実行する場合はページ中に「%%~~NOCACHE~~%%」を記入しキャッシュ機能をOFFにしてください。 | ||
| + | |||
| + | (a.)と(c.)は前項と同じです。 | ||
| + | |||
| + | **(b.)フォームを受信** | ||
| + | |||
| + | GETで送信した場合は「%%filter_input(INPUT_GET,' | ||
| + | |||
| + | 配列を受信する場合、 '' | ||
| + | |||
| + | < | ||
| + | $str=filter_input(INPUT_GET, | ||
| + | </ | ||
| + | |||
| + | 文字列と配列の両方に対応したい場合は下記のように複雑になります。 | ||
| + | <code php> | ||
| + | $str = filter_input(INPUT_GET, | ||
| + | if ( $str===FALSE ) { | ||
| + | // | ||
| + | $str=filter_input(INPUT_GET, | ||
| + | if ( $str===FALSE ) { | ||
| + | $err=' | ||
| + | } | ||
| + | }elseif ( $str===NULL ) { | ||
| + | $err=' | ||
| + | } | ||
| + | </ | ||
