重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

説明下手かもしれませんが、MD5化したパスワードを再度パスワード認証する方法で躓いてしまいました。

test.php

$passwd = 'admin';
$passwd = md5($passwd);
if(!isset($password)){$password = md5($_post('password')) ;}

if($password == $passwd)){

//ファイルへ書き込み、ファイル一覧表示する処理(コード省略)


//★★ 処理した後に、この下でコードでパスワード認証されたPOST送信ボタンを出力 ★★
echo "<td>
<form action=$PHP_SELF method=post>
<input type=hidden name=password value=$passwd>
<input type=submit value=送信>
</form>";

}



問題は
(1)$passwdはMD5で暗号化されている
(2)POST送信された$passwdはMD5で暗号化されたものが、md5($_post('password')で更にMD5化されて認証エラーになる。




なのでフォームボタン(POST送信)を使用し、自身のスクリプトに認証されるような処理を行いたいのですが、
いい方法をアドバイス下さい。
echo "<td>
<form action=$PHP_SELF method=post>
<input type=hidden name=password value=$passwd>
<input type=submit value=送信>
</form>";

A 回答 (1件)

やりたい事は何となくわかりますが、、、。


まず、この構文自体に疑問があるのですが、これってちゃんと動作していますか?
×$_post('password')←スーパーグローバル変数は大文字で、配列のキーは$_POST['password']です。
if(!isset($password)){←register_globalsがonだったらわかるのですが、もしoffだったら$passwordの出所が不明(通常はoffだから)
if($password == $passwd)){
これが、falseだったら、どんな処理(表示?)になるのか、、、つまり、最初の表示が何なのかが不明?
if($password == $passwd)){
パーレンが多いです。確実に構文エラーになります。

本題に入りますが、
md5の暗号化後を再度認証させるには、いろいろ方法はありますが、
例えば、hiddenに値を指定し(何でもいい)、その値があった場合のみ、md5の処理をしなければいいだけです。
例)
echo "<td>
<form action=$PHP_SELF method=post>
<input type=hidden name=password value=$passwd>
hiddenを指定→<input type=hidden name='re_ninshou value=1>
<input type=submit value=送信>
</form>";
    • good
    • 0

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