Beskyttelse!

Tags:    php

Jeg har et problem med et script jeg gerne ville have til at virke. Jeg skal beskytte nogen sider mod dem der ikke er logget ind.

Når jeg prøver at logge ind på login.php kommer jeg til den side jeg gerne skulle, men der står så "Du er ikke logget ind!"

Login.php ser således ud:
----------------------------------------------------------------------------
<html>

<head>

<link href="style.css" type="text/css" rel="stylesheet">

</head>

<?
if($_POST[action] == 'login') {
if($_POST[brugernavn] == NULL OR $_POST[kodeord] == NULL) {

} else {
include "mysql/mysql.php";
$s_tjekbruger = mysql_query("SELECT brugernavn, kodeord FROM admin WHERE brugernavn LIKE '$_POST[brugernavn]' AND kodeord = '$_POST[kodeord]'");
$tjekbruger = mysql_fetch_array($s_tjekbruger);
if($tjekbruger[brugernavn] == NULL) {

print "<script language=\\"javascript\\">parent.location.replace('login&login=nej');</script>";

} else {

$_SESSION[brugernavn] = $_POST[brugernavn];
$_SESSION[kodeord] = $_POST[kodeord];

$fejl == 'nej';
print "<script language=\\"javascript\\">parent.location.replace('admin_ok.php');</script>";
}
}
} else {
}
?>
<?
if($_GET[login] == "nej")
{
print "<font color=red>Forkert <b>kodeord</b> eller <b>brugernavn</b>!</b>";
}
?>
<form action="login.php" method="POST">
<input type="hidden" name="action" value="login">
Brugernavn:<br>
<input type="text" class="input" name="brugernavn" size="20" maxlength="20"><br>
Kodeord:<br>
<input type="password" class="input" name="kodeord" size="20" maxlength="20"><br>
<br>
<input type="submit" class="input" value="Login" name="login">
</form>
</body>

</html>
----------------------------------------------------------------------------
admin_ok.php ser således ud:
----------------------------------------------------------------------------
<?
session_start();
if(!$_SESSION['loggedin'] == 1) {
echo("<font size=2 color=red><link href="style.css" rel="stylesheet" type="text/css">Du har ikke adgang til denne side!</font>");
exit;
}
?>
<?
include "mysql/mysql.php";
$hent = mysql_query("SELECT * FROM admin WHERE brugernavn = '$_SESSION[brugernavn]'") or die(mysql_error());
$vis = mysql_fetch_array($hent);
?>
<html>

<head>

<link href="style.css" rel="stylesheet" type="text/css">

</head>

<body>
<? echo("Logget ind som $vis[brugernavn]"); ?>
<a href="admin.php">Klik her for at komme til admin</a>
</body>

</html>
----------------------------------------------------------------------------

Det var login.php oh admin_ok.php. Jeg kan ikke se hva der er galt.. så håber i kan hjælpe.. jeg har lidt travlt med det så jeg har sat 200 point´, håber nogen kan hjælpe :).



6 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 9 karma
Sorter efter stemmer Sorter efter dato
Jeg tror det her er synderen if($_POST[action] == 'login') prøv med if($_POST['login'])





-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GED d- s: a--- C++ W++ w PS X+ tv+ b D G e- h! !r z--
------END GEEK CODE BLOCK------



Du har ikke startet sessionen i login.php, og du børe ikke redirecte med JavaScript, men med headers. Du bør heller ikke sende info om login gennem URLen i dine redirects.



Du har ikke startet sessionen i login.php, og du børe ikke redirecte med JavaScript, men med headers. Du bør heller ikke sende info om login gennem URLen i dine redirects.


Enig man kan vidst komme udenom dit system relativt nemt. Tag at bruge headers.



Det er nok ikke det der er problemet, men du burde ikke bruge if($brugernavn == null). For hvis brugernavnet er 0 er det også lig med null...brug istedet is_null($brugernavn).







-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GED d- s: a--- C++ W++ w PS X+ tv+ b D G e- h! !r z--
------END GEEK CODE BLOCK------



Fatter det ikke:S Ved ikke hvor det skal sidde osv.. kan du ikke lige gøre det:(??



lige efter <? i din login.php skifter du if($_POST[action] == 'login')
ud med if($_POST['login'])







-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GED d- s: a--- C++ W++ w PS X+ tv+ b D G e- h! !r z--
------END GEEK CODE BLOCK------



t