Gå til innhold

Session og variable problemer (tror jeg)


Anbefalte innlegg

Skrevet

Hei! :)

lager et lite login system.

Pw og usernames lagres slik at hver bruker får en egen mappe som heter det samme som bruker navnet.

Inne i mappa ligger pw.txt (inneholder md5 kryptert pw) og lvl.txt (lvl 3 = admin, 1 = normal).

 

Klikk for å se/fjerne innholdet nedenfor
<?php
session_start();
$_SESSION['innlogget'] = false;
$_SESSION['lvl'] = 0;
$_SESSION['navn'] = "";
$rett_pw = false;
$rett_user = false;

$brukernavn = $_POST['brukernavn'];
$passord = $_POST['password'];

$filpath = "data/";
$filpath .= $brukernavn;
$filpath .= "/pw.txt";

$filpathlvl = "data/";
$filpathlvl .= $brukernavn;
$filpathlvl .= "/lvl.txt";

// SJEKKER BRUKERNAVN
if (!file_exists($filpath)){
die("Wrong username / password!");
}

if (file_exists($filpath)){
$rett_user = true;
}


// SJEKKER PASSORD
if ($rett_user = true){
$passordSJEKK = md5($passord);
$fil = fopen($filpath, "r+");
$filPass = fgets($fil);

if ($passordSJEKK == $filPass){
 $rett_pw = true;
}

if (!$passordSJEKK == $filPass){
 die("Wrong username / password!");
}

if ($rett_pw && $rett_user){
 $fillvl = fopen($filpathlvl, "r+");
 $fillvlinnhold = fgets($fillvl);
 if (!$fillvlinnhold == 1 or $fillvlinnhold == 3){
 	die("Your userlevel is illegal!");
}
$_SESSION['innlogget'] = true;
$_SESSION['lvl'] = $fillvlinnhold;
$_SESSION['navn'] = $brukernavn;

if ($_SESSION['innlogget']==true && $_SESSION['lvl']>>0 && $_SESSION['lvl']<<4 && !$_SESSION['navn']==""){
 echo "Login succssesful!";
}
}
}
echo "innlogget : $_SESSION['innlogget'] <br> lvl : $_SESSION['lvl'] <br> navn : $_SESSION['navn'] <br> rett pw : $rett_pw <br> rett user : $rett_user";
?>

 

Problemet er at den ikke skriver ut Login Succssesful!

 

:ohmy:

 

Håper noen kan hjelpe!

Videoannonse
Annonse
Skrevet

if ($rett_user = true){

skal vel være == der.

 

if ($_SESSION['innlogget']==true && $_SESSION['lvl']>>0 && $_SESSION['lvl']<<4 && !$_SESSION['navn']==""){

 

Du skal bruke > og <, ikke >> og << (som er symbolene for bit-shifting, som er noe helt annet enn større enn og mindre enn).

 

 

Men hvorfor i all verden bruker du ikke en SQL-database? Det er betydelig enklere...

Skrevet

ok, vant til andre språk.. :p

 

funker ikke

 

Klikk for å se/fjerne innholdet nedenfor
<?php
session_start();
$_SESSION['innlogget'] = false;
$_SESSION['lvl'] = 0;
$_SESSION['navn'] = "";
$rett_pw = false;
$rett_user = false;

$brukernavn = $_POST['brukernavn'];
$passord = $_POST['password'];

$filpath = "data/";
$filpath .= $brukernavn;
$filpath .= "/pw.txt";

$filpathlvl = "data/";
$filpathlvl .= $brukernavn;
$filpathlvl .= "/lvl.txt";

// SJEKKER BRUKERNAVN
if (!file_exists($filpath)){
die("Wrong username / password!");
}

if (file_exists($filpath)){
$rett_user = true;
}


// SJEKKER PASSORD
if ($rett_user == true){
$passordSJEKK = md5($passord);
$fil = fopen($filpath, "r+");
$filPass = fgets($fil);

if ($passordSJEKK == $filPass){
 $rett_pw = true;
}

if (!$passordSJEKK == $filPass){
 die("Wrong username / password!");
}

if ($rett_pw && $rett_user){
 $fillvl = fopen($filpathlvl, "r+");
 $fillvlinnhold = fgets($fillvl);
 if (!$fillvlinnhold == 1 or $fillvlinnhold == 3){
 	die("Your userlevel is illegal!");
}
$_SESSION['innlogget'] = true;
$_SESSION['lvl'] = $fillvlinnhold;
$_SESSION['navn'] = $brukernavn;

if ($_SESSION['innlogget']==true && $_SESSION['lvl']>0 && $_SESSION['lvl']<4 && !$_SESSION['navn']==""){
 echo "Login succssesful!";
}
}
}
?>

 

Legger til brukernavnet på starten av passordet pga det legger seg automatisk til når registreringsscriptet registrerer en ny bruker :S

 

Si fra hvis noe skal forklares ;)

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...