June 21, 2004
Jag försöker göra en mycket enkel lösenordsskyddning av en websida. Det fungerar alldes utmärkt i både Firefox och Opera men i Internet Explorer händer ingenting.
Såhär ser det ut
session_start();
if(isset($_POST['submit']))
{
if($_POST['pw']==='hej')
{
$_SESSION['register'] = 'true';
header("Location: skyddad_sida.php");
exit;
}
}
echo '
<form action="" method="post">
Lösenord:<input type="password" name="pw" />
<input type="submit" name="submit" value="Till formuläret" />
</form>
';
Och såhär ser den skyddade sidan ut:
session_start();
if(!isset($_SESSION['register']) || $_SESSION['register']!=='true')
{
header('Location: pw_sida.php');
}
När jag försöker logga in i explorer kommer jag bara tillbaka till forlmuläret, alltså kommer ingenstans. Och som sagt, det fungerar däremot både i opera samt firefox. Någon som vet vad jag gjort fel?
January 14, 2006
Är lite delad i om du ska använda dig av "===" istället för "==",
tre stycken likamed har jag för mig är är EXAKT samma OCH
samma typ av värde, men det borde inte spela någon roll.
Aja, felet skulle jag tro beror på att du inte har någon action i formuläret,
sätt typ till action="?" eller helst ganske action="pw_sida.php" eller bla bla action=" . $_SERVER['PHP_SELF'] . "" bla bla
Sen för att snygga upp koden lite eller ta med dig i framtiden om du tänkte
fortsätta men php är att ändra:
if(!isset($_SESSION['register']) || $_SESSION['register']!=='true')
till:
if(!isset($_SESSION['register']) || !$_SESSION['register'])
Efter som if frågor om det är sant(true) eller falsk(false) så behöver man inte
säga !=='true', utan frågan blir automatisk om session register är INTE sant kör detta...
Sen, när du sätter $_SESSION[register] till sant(true) så kan du skippa 'true' och bara skriva true.
Hoppas det funkar!
EDIT: Jo.... === och == spelar nog roll, och även !== till ! eller != du får testa...
Mvh gurragustaf
1 Guest(s)