dポイントプレゼントキャンペーン実施中!

既存のファイルに管理者による認証を付加したいと思いますが、下記のコードではうまくいきません。アドバイス下さい。


<?php
//パスワードの設定
$password = "admin";
//パスワードチェック
passchk();

function passchk(){
global $password, $post;

$p = $post['pass'];

if ($p == $password) {

echo "認証成功!";
// return;
} else {

echo<<<EOM
<p>パスワードを確認して下さい。</p><br>
<form action="login.php" method="post">
パスワード:<input type="password" name="pass" size="8">
<input type=submit value="ログイン" />
</form>
EOM;
exit;
}
}
?>

A 回答 (1件)

根本的な理解が出来てないようですね。



<form>でリクエストされる値は、$_POSTを使うことで取得できます。

むやみやたらにglobal宣言を使わないこと。
というよりも、絶対に使わないこと。

どぉ~~しても使いたいのであれば、
使わなくてすむようなロジックで処理することを考える事。

「自分はバカだから、global使わないとコーディングできないよぉ」というのであれば
・セキュリティは全く考慮しない。最悪の場合ハックされても良い
・趣味レベルで作るものであり、自分以外の人が使わないシステムである
上記の条件をすべて承諾し、$GLOBALSというスーパーグローバルを使うこと。
具体的な使い方は、私自信はglobalは大嫌いなのでここでは説明しません
自分で勝手にしらべてください。


---
とりあえず、動くんじゃないかと思う(未検証)

<?php
//パスワードの設定
$password = "admin";
//パスワードチェック
passchk($password);

/**
* パスワードをチェックする
* @param $password string
* @return void
*/
function passchk($password){

$p = $_POST['pass'];

if ($p == $password) {

echo "認証成功!";
// return;
} else {

echo<<<EOM
<p>パスワードを確認して下さい。</p><br>
<form action="login.php" method="post">
パスワード:<input type="password" name="pass" size="8">
<input type=submit value="ログイン" />
</form>
EOM;
}
}
?>
    • good
    • 0
この回答へのお礼

基本的なことを理解していなかったようです。
基本から学習します。
参考になりました。ありがとうございます。

お礼日時:2009/06/10 08:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!