• 締切済み

$_POSTの使い方

現在ログイン型情報サイトを運用しております。 ログインはPEARのAuthを使用しております。 ログイン認証やログイン判定後のページ表示やDB操作等について isset($_POST['hoge']) や if($_POST['hogehoge']) == xxxx) など 複数の場所でPOSTされた値を判定に使っております。 このサイトを丸ごとコピーして、アクセスした時点で既にログインしている状態を作らなければならなくなりました。 値をセッションに入れる時等、 $_SESSION['hoge'] = "yyyy"; のようにしますよね。 同様(かどうかわかりませんが・・・)に値があたかもPOSTされた状態を作る方法として if(!isset($_SESSION['username'])){ $_POST['username'] = "zzzz"; $_POST['password'] = "vvvv"; その他ログイン時にPOSTされる値を同様に$_POSR['aaaa']として書く } というコードを書いて、あたかもログインボタンを押してログインしたかのような状態を作る事はできたのですが、このような手法は上記状態を作るために行う手段としては正しいのでしょうか? またセキュリティ等、自分が気づかないような穴があるかどうか心配です。 手法としてやってもよい事なのか、よくない事なのか、気をつけなければいけないことが何かあるのか等、どなたかアドバイスをいただけないでしょうか?

みんなの回答

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

自前でcount($_POST)と書いた記憶はないですが PEAR::HTML_QuickFormの送信検証でそのロジックがあったと思うので 自分以外の人が触れることを考慮すると怖いですね。 ログインの判定やタイミングが把握できていないので 修正云々については控えておきます。。

gogo-tea
質問者

お礼

回答ありがとうございます。 PEARは現在Authの使用のみです。 まあこれから先はわかりませんが^^; いずれにしても正常処理としてPOSTされる変数の数と、「あたかも処理」で記述する$_POST変数の数が一致していれば#1.2さんが懸念してらっしゃる問題に関してはクリアですよね? とりあえず上記に記述した処理で運用してみます。 暫定処理であることを先方に把握してもらい、ログ等をこまめにチェックして何か問題があれば随時対応していこうと思います。

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

POSTされてないものを$_POSTに入れるのは個人的にはすごく嫌です。 今回の場合はちょっと違うかもしれませんが、 if (count($_POST)) {} のような処理があったなら動作が狂います。 全てのソースを把握していて管理していけるなら 今一番楽なやり方でも構わないと思いますが。

gogo-tea
質問者

お礼

回答ありがとうございます。 >POSTされてないものを$_POSTに入れるのは個人的にはすごく嫌です。 私も初めて書く処理ですし、すごく違和感を感じます。 #1さんがすごく嫌な理由というのは$_POSTをカウントする処理がある場合だけでしょうか? もしそうであればそのような幸いそのような処理は行っていません。 逆にカウントする処理がなければ他には問題ありませんでしょうか? >全てのソースを把握していて管理していけるなら 全てのphpファイルの管理は私がしておりますのでファイル内のロジックに関しては全て把握しております。 「あたかも処理」にしたかった理由として、しばらくしたら元に戻す可能性が高いので、他の部分のロジックを変えたくないというのがあるんです。。 全面的に変更をかけるのであれば一旦phpファイルを全てコピーして、認証処理や判定処理を全て削ってしまうのが一番だと思うのですが、判定のロジックを使用しているphpファイルの数が数十ファイルありますので効率的にどうかなと思いまして今回の処理を思いついた次第です。

関連するQ&A