Simpelt loginsystem fejl ?
Hej jeg har mit loginsystem vil ikke helt virke man kan fint lave en bruger og man kan også sagtens se registret brugere men når man så vil logge ind og skriver rigtig kode og navn så ryger man bare ind på login igen ?<script>
var registrerUrl = "login.php?registrer=ja";
var tilbageUrl = "login.php";
var regtilbageUrl = "login.php?registrer=ja";
var logudUrl = "login.php?logud=ja";
var visbrugereUrl = "login.php?visbrugere=ja";
var slet = "Er du sikker på at du vil slette denne person??";
function checkLogin()
{
if(document.loginform.brugernavn.value == '' || document.loginform.password.value == ''){
alert('Du skal udfylde det hele');
return false;
}else{return true;}
}
function checkReg()
{
if(document.regform.brugernavn.value == '' || document.regform.password.value == ''){
alert('Du skal udfylde det hele');
return false;
}else{return true;}
}
</script>
<?php
/*
START VARIABLER
*/
$session = $_SESSION['li']; // Lægger sesionen over i variablen $session
$bruger_filen = "brugere.inc"; // Skriv hvilken fil brugerne skal gemmes i
$antal_brugere = count(file("$bruger_filen")); // Tæl hvor mange brugere der er i filen
// Tjek antal brugere og skriv en ordenlig endelse ind i variablen $enden
if($antal_brugere < 2){$enden = "bruger";}else{$enden = "brugere";}
echo "<center>\n"; // Laver et simpelt html tag.
/*
STARTSIDE
*/
if($session && !$_GET['visbrugere']) // Hvis brugeren er logget ind behøver vi jo kun at sige det til ham/hende.
{
echo 'Du er logget ind som: '.$session.'; <input type="button" onclick="window.location = visbrugereUrl" value="Vis brugere"><input type="button" onclick="window.location = logudUrl" value="Logud">';
}
elseif(!$_GET['login'] && !$session && !$_GET['registrer'] && !$_GET['visbrugere']) // Men hvis ikke så hvis ham/hende den startside.
{
echo '
<h1>Login</h1>
<form action="?login=ja" name="loginform" method="POST" onsubmit="if(checkLogin()){return true}else{return false}">
Brugernavn: <input type="text" name="brugernavn">
<br>
Password: <input type="password" name="password">
<br>
<input type="submit" name="submit" value="Login"><input type="button" onclick="window.location = registrerUrl" name="submit" value="Registrer">
</form>Der er oprettet '.$antal_brugere.' <a style="color:black;" href="?visbrugere=ja">'.$enden.'</a>';
}
/*
LOGIN
*/
if($_GET['login'] == 'ja' && !$session && isset($_POST['submit'])) /* Hvis den skal logge ind og brugeren ikke i forvejen er logget ind
og der er trykket på login knappen så: */
{
$brugernavn = $_POST['brugernavn']; // Hent det indskrevne brugernavn.
$password = $_POST['password']; // Hent det indskrevne password.
$linjer = file("$bruger_filen"); // Læg alle linjerne i $bruger_filen ind i et array.
// Hvis filen med brugerne ikke er der så opret den
if(!file_exists("$bruger_filen")){$fext = fopen("$bruger_filen","w+");fclose($fext);}
// Start med at tjekke om brugeroplysningerne passer
foreach($linjer as $linje) // Tager hver linje en ad gangen
{
$linjetrim = rtrim($linje); // Trimmer slutningen for mærkelige tegn og ting :)
$side = explode("|",$linjetrim); // Deler linjen op i brugernavn|password
if($brugernavn == $side[0] && md5($password) == $side[1]) /* Hvis $brugernavn == brugernavnet i filen
OG $password == passwordet i filen så: */
{
if($side[2] == 'ja'){$_SESSION['admin'] = 'ja';} /* Læg en tredje del ind i brugerfilen hvor der står admin, så kan du bruge
sessionen admin til at filtrere med. */
$valid = true; // Laver vaiablen valid som siger at det hele er gået godt.
break; // Hvis de hele er gået godt så spring lige ud.
}
}
// Hvis nu de passer :)
if($valid == true) // Hvis $valid = true så:
{
$_SESSION['li'] = $brugernavn; // Lav sessionen li, med brugernavnet i.
echo '<meta http-equiv="refresh" content="0;url=login.php">'; // Send brugeren til forsiden med meta tagget.
}else{ // Hvis $valid ikke er true
echo 'Forkert brugernavn eller password.<br><input type="button" onclick="window.location = tilbageUrl" value="Tilbage">'; // Så skriv dette
}
}
/*
LOGUD
*/
if($_GET['logud'] == 'ja') // Hvis det er logud tid så:
{
session_destroy(); // Slet alle sessioner
echo '<meta http-equiv="refresh" content="0;url=login.php">'; // Og send brugeren tilbage til forsiden.
}
/*
REGISTRER BRUGER
*/
if($_GET['registrer'] == 'ja') // Hvis det er tid til at oprette en bruger så:
{
// Skriv dette html stykke:
echo '
<h1>Registrer</h1>
<form action="?registrer=gem" method="POST" name="regform" onsubmit="if(checkReg()){return true}else{return false}">
Dit ønskede brugernavn: <input type="text" name="brugernavn">
<br>
Dit ønskede password: <input type="password" name="password">
<br>
<input type="submit" name="submit" value="Registrer"><input type="button" onclick="window.location = tilbageUrl" value="Tilbage">
</form>
';
}
if($_GET['registrer'] == 'gem') // Hvis det er tid til at gemme brugeren så:
{
$brugernavn = trim($_POST['brugernavn']); // trim brugernavnet for mærkelige tegn og derefter læg det ind i vaiablen $brugernavn
$password = trim(md5($_POST['password'])); // så trim passwordet og md5 krypter det og læg det ind i vaiablen password.
$linjer = file("$bruger_filen"); // Så læg alle linjerne i bruger_filen over i et array IGEN :)
$valid = true; // Laver variablen valid til true
if(!empty($brugernavn) && !empty($password)) // Hvis $brugernavn ikke er tomt og det samme med passwordet så:
{
foreach($linjer as $linje) // For hver bruger dvs linje:
{
$trimlinje = ltrim($linje); // Fjerner mærkelige tegn i slutningen af linjen
$side = explode("|", $trimlinje); // Deler linjen op i brugernavn|password
// Hvis brugernavn == brugernavnet i filen på linjen den tjekker så hop ud og sig der er en fejl
if($brugernavn == $side[0]){$valid = false;}
}
if($valid == true) // Hvis der ikke er sket en fejl så:
{
$nybruger = "\n$brugernavn|$password"; // Lav konstrukturen af brugernavn/password forhold som i filen
$fil = fopen("$bruger_filen","a+"); // åben $bruger_filen til læsning og skrivning i slutningen af filen
if(fwrite($fil, $nybruger)) // Hvis det lykkes at putte konstrukturen $nybruger ind i filen så:
{
//Skriv dette:
echo 'Brugernavnet er oprettet.<br><input type="button" onclick="window.location = tilbageUrl" value="Login">';
}
else // Ellers hvis der er sket en fejl så skriv det:
{
echo 'Der skete en fejl.<br><input type="button" onclick="window.location = regtilbageUrl" value="Prøv igen">';
}
fclose($fil); // Luk filen igen.
}
else // Hvis brugernavnet er taget så skriv det, med en tilbage knap.
{echo 'Brugernavnet er taget.<br><input type="button" onclick="window.location = regtilbageUrl" value="Tilbage">';}
}else{echo 'Du skal udfylde det hele.<br><input type="button" onclick="window.location = regtilbageUrl" value="Tilbage">';}
}
/*
VIS ALLE BRUGERE
*/
if($_GET['visbrugere'] == 'ja') // Hvis den har fået besked på at vise brugerne så:
{
echo '<h1>Brugere:</h1>'; // Skriv en overskrift
$brugere = file("$bruger_filen"); // Læg brugerne ind i et array
echo '<h4><u>'; // Skriv nogle simple html tags
if(count($brugere) > 0) // Hvis der er mere end 0 brugere så:
{
foreach($brugere as $linje) // Kør en linje igennem en adgangen
{
$trimlinje = ltrim($linje); // Fjern mærkelige tegn i numsen på strengen
$side = explode("|", $trimlinje); // Del linjen op i brugernavn|password
echo ucfirst($side[0]); // Skriv brugerne ud med stort for bogstav
echo '<br>';// Laver linjeskift
}
}else{echo 'Ingen brugere.';} // Hvis der ingen brugere er så skriv det.
echo '</h4></u>'; // Slut de simple html tags af.
echo '<input type="button" onclick="window.location = tilbageUrl" value="Tilbage">'; // Lav en tilbage knap.
}
echo "\n<center/>"; // Laver et simpelt slut html tag for ovenstående center
?>
Også er jeg heller ikke helt så sikker på om det script man skal sætte på de beskyttet sider der skal tjekke om man er logget ind virker helt vil i ikke også tjekke det ?
<?php
ob_start();
session_start();
if(!$SESSION['li']){header("Location: http://www.daap.wep.dk/login/login.php");}
ob_end_flush();
?>
Jeg giver 120 point når begge ting er løst :)