アプリ版:「スタンプのみでお礼する」機能のリリースについて

認証の必要なコンテンツを表示するプログラムを作ってください。
ただし、http認証は用いず、フォームによる認証を用いるものとします。ユーザを少なくとも2人認証できることを条件とします。パスワードを入れ直すことなく、2種類の画面を遷移出来るものとする。

なんとなく作ってみましたが、この後どうすればいいのかよくわかりません。

<?php
$passlist=array( 'hogehoge' => 'hogepass', 'hoge2' => 'hoge2pass');

if (!isset($_POST['user']))
{
echo_auth_page("ログイン");
exit;
}
$user=$_POST['user'];
$pass=$_POST['pass'];

if ( (!isset($passlist[$user])) || $passlist[$user] != $pass)
{
echo_auth_page("パスワードが違います");
exit;
}

echo_hello_page($user);


////////////////////////////////////////////////////////////////////////
function echo_auth_page($msg)
{
echo <<<EOT
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>ページタイトル</title>
</head>
<body>
$msg
<form method="POST" action="sample.php">
username <input type="text" name="user" value=""><br>
password <input type="password" name="pass" value=""><br>
<button type="submit" name="login" value="login">Login</button>
</form>
</body>
</html>
EOT;
}
////////////////////////////////////////////////////////////////////////
function echo_hello_page($who)
{
echo <<<EOT
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>ページタイトル</title>
</head>
<body>
こんにちは $who さん
</body>
</html>
EOT;
}
?>

A 回答 (1件)

> パスワードを入れ直すことなく、2種類の画面を遷移出来る


"認証できた" という状態を保存するために、
セッション や SSO などの仕組みを導入しましょう。

参考) PHP のセッション機能
https://www.php.net/manual/ja/session.examples.b …

セッションで認証済と確認できたら、パスワードは必要ありません。
確認できないならパスワード認証を行って、認証済であるとセッションに状態を保存しましょう。
    • good
    • 0

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