PHP

自分用メモ@PHPのPOSTとGETとか

More than 1 year has passed since last update.

概要

phpでは外部からデータを受け取る際に、htmlのフォームから受け取れたりする。
その際に$_POSTとか$_GETみたいなスーパーグローバル変数を使う。

$_POST変数

$_POST変数の使い方はとても簡単で、以下に例を示す。post.htmlpost.phpを用いる。

post.html
<html>
  <body>
    <form action="post.php" method="post">
      <input type="text" name="postdata" /><br />
      <input type="subimit" name="submit" value="Send Data" />
    </form>
  </body>
</html> 
post.php
<?php
  echo $_POST['postdata'];
?>

以上。post.htmlにアクセスし、formのtextboxに文字を入力してsubmitボタンを押すとpost.phpへとジャンプする。その際に、php側の$_POST変数に自動的にデータが代入される。
そのデータを用いる際には$_POST['inputのname']とすれば良い。
例えば、inputに"Hello, World"と入力すればphp側で"Hello, World"と出力される。
ちなみにこれで動く事は動くのだが、POSTデータは偽装できたりするのでそのままだとセキュリティ面でかなり危険。
どうしたらいいかは調べてください。私は機会があれば調べようと思います。

$_GET

$_GET変数も使い方は簡単。これはURLで変数を指定する。
例えば、次のようなget.phpというphpプログラムを用いるとする。

get.php
<?php
  echo "inputData -> ".htmlspecialchars($_GET['input_data']);
?>

アクセスする際のURLをsample.com/get.phpとすると、sample.com/get.php?input_data=inputStringと言った感じに末尾に?変数名=値と入力してアクセスすると、$_GET変数に値が格納される。
上記の例だと、$_GET['input_data']inputStringという文字列が格納されることになる。
ちなみに、htmlspecialchars関数は、コードと読み取れてしまう特殊文字を変換してくれる関数。って認識でいいと思う。厳密には少し違うけど。

まとめ

外部から入力を受け取る方法として、html経由とかになってしまうが、\$_GETとか$_POSTみたいなスーパーグローバル変数を使うと良い。
セキュリティ面では改ざんが容易だからかなり危ない。対策は調べれば出てきたはず。
でも、ローカルで回すだけなら正直気軽にさくっと扱えるから優秀だと思う。そもそもローカル以外でphp使いたくないと思うし割と関係ない・・・

今回は以上。前から言ってはなかったけど掲示板プログラムを組んでみたいと思っているのでそれに必要な知識を書き溜めています。あくまでも独学で知識を伸ばす事が目的なので意見は受け付けていません。
コメントは一応参考にはします。でも答えは勘弁してください。