Я пытаюсь создать страницу входа, где пользователь вводит пароль, и если он соответствует «секретному» слову, пользователь может изучить 3 варианта. Я попытался с session_start() и включил «аутентификацию», чтобы иметь возможность просматривать 3 варианта, но каждый раз, когда я нажимаю на них, они возвращают меня на главную страницу. Что я делаю не так? P.S Я хочу, чтобы иметь возможность скрывать форму входа после успешной проверки подлинности. Любая помощь очень ценится.
<?php session_start(); ?>
<!DOCTYPE html>
<head>
<title>
</title>
</head>
<body>
<?php
$entries = array(
array(
'stage' => 'Stage One',
'plan' => 'To begin your plan, you must first Blackmail a Town Mascot. This will cause the world to sit up and take notice, stunned by your arrival. Who is this Ripe Bastard? Where did they come from? And why do they look so good as a Dark Gunslinger?',
),
array(
'stage' => 'Stage Two',
'plan' => 'Next, you will Desecrate the Internet. This will cause countless hordes of Computer Programmers to flock to you, begging to do your every bidding. Your name will become synonymous with Dear God No, as lesser men whisper your name in terror.',
),
array(
'stage' => 'Stage Three',
'plan' => 'Finally, you will Reveal to the World your Needlessly Big Weather Machine, bringing about an End to Sanity. This will all be done from a Fake Mountain, an excellent choice if we might say. These three deeds will herald the end, and the citizens of this planet will have no choice but to elect you their new god.',
),
);
?>
<?php if ( isset($_POST["password"])==FALSE) : ?>
<form action="wd.php" method="POST">
<div>Please login</div>
Password:<br>
<input type="text" name="password"/>
<br>
<input type="submit" value="Submit"/>
</form>
<?php else: ?>
<?php endif; ?>
<?php if (isset($_POST["password"])): ?>
<?php if ($_POST["password"] == "secret"):
?>
<?php $_SESSION["authenticate"] = 1; ?>
<?php else: ?>
<?php $_SESSION["authenticate"] = 0; ?>
<a href="wd.php"></a>
<?php endif; ?>
<?php if ($_SESSION["authenticate"] == 1): ?>
<?php foreach ($entries as $k => $v): ?>
<a href="<?php echo $_SERVER['PHP_SELF'] . "?stage_id={$k}" ?>"><?php echo $entries[$k]['stage'] ?></a>
<?php endforeach ?>
<form method="POST">
<button name ="stop"> Stop </button>
</form>
<?php if (isset($_GET["stage_id"])): ?>
<p><?php echo $entries[$_GET["stage_id"]]['stage']; ?></p>
<p><?php echo $entries[$_GET["stage_id"]]['plan']; ?></p>
<?php endif; ?>
<?php
if (isset($_POST["stop"])):
session_destroy();
?>
<?php endif; ?>
<?php else: ?>
<form action="wd.php" method="POST">
<div>Please login</div>
Password:<br>
<input type="text" name="password"/>
<br>
<input type="submit" value="Submit"/>
</form>
<?php echo "invalid password"; ?>
<?php endif; ?>
Это не имеет ничего общего с исходным вопросом, но вы действительно не должны открывать и закрывать те '' теги в каждой новой строке, которую вы пишете, так как это замедлит выполнение. Если вы снова откроете его сразу, просто не закрывайте его! –
«Обратно на главную страницу» вы имеете в виду форму для входа? –
Вам нужно проверить переменную сеанса в начале. Если они уже прошли проверку подлинности, вам не нужно проверять пароль или отображать форму входа в систему. – Barmar