基本的なことですが、今までは送ることはやったことがありましたが、
受け取って処理することをしたことがありませんでした。
##フォームからデータを送ってみて、取得してみる
<?php
$name = '';
if($_SERVER['REQUEST_METHOD'] === 'POST'){
$name = $_POST['name'];
$isDarvish = false;
if($name === 'ダルビッシュ'){
$isDarvish = true;
}
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body>
<form action="" method="POST">
<input type="text" name="name" placeholder="ダルビッシュと入力してください" value="<?php echo htmlspecialchars($name, ENT_QUOTES, 'UTF-8'); ?>">
<input type="submit" value="submit">
<?php
if ($isDarvish) {
echo "私はダルビッシュです";
} else{
echo "私はダルビッシュではありません";
}
?>
</form>
</body>
</html>
POSTしたデータは、$_POST変数に入ります。
$_POST
と$_SERVER
はスーパーグローバルという、かっこいい名前の変数です。
###スーパーグローバル
PHP の定義済み変数の中には "スーパーグローバル" というものがあります。 これは、スクリプト全体を通してすべてのスコープで使用可能な変数のことです。 関数やメソッドの内部からアクセスする際にも global $variable; などとする必要はありません。
変数 | 意味 |
---|---|
$_GLOBALS | グローバルスコープで使用可能なすべての変数への参照 |
$_SERVER | サーバー情報および実行時の環境情報 |
$_POST | HTTP リクエストで、 HTTP POST メソッドから現在のスクリプトに渡された変数の連想配列 |
$_GET | URL パラメータで現在のスクリプトに渡された変数の連想配列 |
$_FILES | HTTP POST メソッドで現在のスクリプトにアップロードされた項目の連想配列 |
$_COOKIE | 現在のスクリプトに HTTP クッキーから渡された変数の連想配列 |
$_SESSION | 現在のスクリプトで使用できるセッション変数を含む連想配列 |
$_REQUEST | $_GET、$_POST、$_COOKIEの内容をまとめた連想配列 |
$_ENV | 環境変数として現在のスクリプトに渡された変数の連想配列 |
###特殊文字をエスケープする
ユーザーから入力されたデータは、エスケープ処理をいれなければいけません。
htmlspecialchars
を使うことで、特殊文字をHTMLエンティティに変換することができます。
htmlspecialchars( string 文字列 [, int 変換スタイル [, string 文字コード ]] )
##別ファイルにデータを送信
特に違うところは無いのですが、formのaction
属性に連携先のファイルを指定します。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body>
<form action="view.php" method="POST">
<input type="text" name="name" placeholder="ダルビッシュと入力してください">
<input type="submit" value="submit">
</form>
</body>
</html>
<?php
$name = '';
if($_SERVER['REQUEST_METHOD'] === 'POST'){
$name = $_POST['name'];
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Check username</title>
</head>
<body>
<?php echo($name) ?>
</body>
</html>
##テキストエリアのデータを送信
nl2br
を使用して、改行コードを<br>
タグに置き換えます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body>
<form action="view.php" method="POST">
<textarea type="text" name="textarea" placeholder="textarea" cols="30" rows="5"></textarea>
<input type="submit" value="submit">
</form>
</body>
</html>
<?php
$name = '';
if($_SERVER['REQUEST_METHOD'] === 'POST'){
$textarea = nl2br($_POST['textarea']);
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>test/title>
</head>
<body>
<?php echo($textarea) ?>
</body>
</html>
##押されたボタンのデータを送る
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Check username</title>
</head>
<body>
<form action="view.php" method="POST">
<input type="submit" value="戻る" name="back">
<input type="submit" value="確認" name="confirm">
</form>
</body>
</html>
<?php
if(isset($_POST['confirm'])){
$str = '確認ボタンが押されました';
}else{
$str = '戻るボタンが押されました';
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body>
<div><?php echo($str) ?></div>
</body>
</html>
##チェックボックスのデータを取得
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Check username</title>
</head>
<body>
<form action="view.php" method="POST">
<input type="checkbox" value="0" name="checkbox[]">
<input type="checkbox" value="1" name="checkbox[]">
<input type="checkbox" value="2" name="checkbox[]">
<input type="submit" value="submit" name="submit">
</form>
</body>
</html>
<?php
$str = implode('_',$_POST['checkbox']);//_で連結
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body>
<div><?php echo($str) ?></div> //0_1_2
</body>
</html>
##ラジオボタンのデータを取得
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Check username</title>
</head>
<body>
<form action="view.php" method="POST">
<input type="radio" value="0" name="radio">
<input type="radio" value="1" name="radio">
<input type="radio" value="2" name="radio">
<input type="submit" value="submit" name="submit">
</form>
</body>
</html>
<?php
$str = $_POST['radio'];
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body>
<div><?php echo($str) ?></div>
</body>
</html>
##セレクトボックスのデータ取得
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Check username</title>
</head>
<body>
<form action="view.php" method="POST">
<select name="number">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<input type="submit" value="submit" name="submit">
</form>
</body>
</html>
<?php
$str = $_POST['number'];
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body>
<div><?php echo($str) ?></div>
</body>
</html>
##おわり
送ったデータの受け取り方がわかりました。