TheClown Skrevet 5. mai 2007 Forfatter Del Skrevet 5. mai 2007 (endret) <? if ($_SESSION['innlogget'] = TRUE) { $tilgang = '1'; } else { "Hva faen gjør du inne her?!"; include"login2.php"; exit; } if ($tilgang == '1') { echo " <input type='submit' name='Loggav' value='Logg av' > </form> "; unset( $_SESSION['innlogget'] ); } ?> Riktig? Men hvorfor funker ikke Logg av knappen? Hva har jeg skrevet feil? Endret 5. mai 2007 av TheClown Lenke til kommentar
Ståle Skrevet 5. mai 2007 Del Skrevet 5. mai 2007 Bruk session_destroy() 8543428[/snapback] Hva hvis han har andre sessions han ikke vil slette da? Lenke til kommentar
Ståle Skrevet 5. mai 2007 Del Skrevet 5. mai 2007 <? if ($_SESSION['innlogget'] = TRUE) { $tilgang = '1'; } else { "Hva faen gjør du inne her?!"; include"login2.php"; exit; } if ($tilgang == '1') { echo " <input type='submit' name='Loggav' value='Logg av' > </form> "; unset( $_SESSION['innlogget'] ); } ?> Riktig? Men hvorfor funker ikke Logg av knappen? Hva har jeg skrevet feil? 8543659[/snapback] Du har ikke <form action="" method="POST"> Lenke til kommentar
Martin A. Skrevet 5. mai 2007 Del Skrevet 5. mai 2007 <? if ($_SESSION['innlogget'] = TRUE) { $tilgang = '1'; } Der har du satt $tilgang til '1'. Ingenting galt med det. else { "Hva faen gjør du inne her?!"; include"login2.php"; exit; } Der ville jeg hatt en header("Location: login2.php"); istede. Kanskje ingen som har fortalt det enda, men du kan IKKE ha noen form for output tidligere i koden om du skal bruke header() og session_start(). if ($tilgang == '1') $tilgang er satt til en, så denne if'en har vi ingen problemer med. { echo " <input type='submit' name='Loggav' value='Logg av' > </form> "; unset( $_SESSION['innlogget'] ); Her er den artige biten. Her blir vi logget ut _før_ man har sagt seg enig i det. } ?> Prøv denne koden istede. PHP <? //Les hva jeg skrev om short-tags tidligere. if ($_SESSION['innlogget'] = TRUE) { $tilgang = 1; } else { echo "Hva faen gjør du inne her?!"; include"login2.php"; exit; } if ($tilgang == 1) { if ( isset ( $_POST['Loggav'] ) ) { session_destroy(); } else { echo "<form action='' method='post'> <input type='submit' name='Loggav' value='Logg av' > </form> "; } } ?> Ståle: validatoren blir ikke særlig glad om du bruker method="POST" Lenke til kommentar
The Red Devil Skrevet 5. mai 2007 Del Skrevet 5. mai 2007 (endret) Umm... Når du har: PHP if ($_SESSION['innlogget'] = TRUE) Så vil den ALLTID være sann. Så kvar bruker som går til den siden vil bli logget inn. Med andre ord, else tagen vil aldri bli brukt. Når det gjelder form tagen, du bør aldri bruke action="" pga at den vil ikkje fungere i alle browsere. Til slutt, når du bruker sessions, må du alltid ha session_start() før du bruker dei. Uten den vil dei aldri fungere. Med andre ord, du må alltid ha session_start på kvar side vist nokre av sidene dine bruker dei. Grunnen til dette er at nokre browsere vil ikkje huske den gamle session iden, pga at den blei ikkje oppdatert på kvar side du besøkte. EDIT: Angående den IF setningen øverst. bruk: if ($_SESSION['innlogget'] === true) Endret 5. mai 2007 av The Red Devil Lenke til kommentar
Bakke Skrevet 5. mai 2007 Del Skrevet 5. mai 2007 Når du har:PHP if ($_SESSION['innlogget'] = TRUE) Så vil den ALLTID være sann. Så kvar bruker som går til den siden vil bli logget inn. Med andre ord, else tagen vil aldri bli brukt. Sessionen vil kun gjelde den brukeren som er innlogget, og vil bli ødelagt når siden blir lukket... Lenke til kommentar
Ståle Skrevet 5. mai 2007 Del Skrevet 5. mai 2007 Når du har:PHP if ($_SESSION['innlogget'] = TRUE) Så vil den ALLTID være sann. Så kvar bruker som går til den siden vil bli logget inn. Med andre ord, else tagen vil aldri bli brukt. Sessionen vil kun gjelde den brukeren som er innlogget, og vil bli ødelagt når siden blir lukket... 8545124[/snapback] Det er bare 1 stk erlikhetstegn, derfor vil alltid $_SESSION['innlogget'] bli tilegnet verdien true, og derfor er hele if () true, og den biten blir kjort. Lenke til kommentar
TheClown Skrevet 5. mai 2007 Forfatter Del Skrevet 5. mai 2007 Har beholdt scriptet slik det var. Fiksa litt mer på det, men jeg har et problem. Jeg får ikke: if ($_SESSION['innlogget'] == TRUE); Hidden.php <? if ($_SESSION['innlogget'] == TRUE); $tilgang = '1'; if ($_SESSION['innlogget'] !== TRUE); $tilgang = '0'; if ($tilgang == '0'); { echo "Hva faen gjør du inne her?! <br />"; echo "$tilgang"; echo "<a href='login2.php'>Logg inn på nytt </a> "; exit; } if ($tilgang == '1') { echo " <form action='' method='post'> <input type='submit' name='Loggav' value='Logg av' > </form> "; if ( isset ( $_POST['Loggav'] ) ) { unset( $_SESSION['innlogget'] ); echo "Du har nå logget ut"; echo "<a href='login2.php'>Logg inn på nytt </a> "; } } ?> Lenke til kommentar
Bakke Skrevet 5. mai 2007 Del Skrevet 5. mai 2007 (endret) Fiksa litt på scriptet PHP <?if ($_SESSION['innlogget'] == TRUE) { $tilgang = '1'; } else { $tilgang = '0'; } if ($tilgang == '0') { echo "Hva faen gjør du inne her?! <br />"; echo "$tilgang"; echo "<a href='login2.php'>Logg inn på nytt </a> "; exit; } if ($tilgang == '1') { echo " <form action='' method='post'> <input type='submit' name='Loggav' value='Logg av' > </form> "; if ( isset ( $_POST['Loggav'] ) ) { unset( $_SESSION['innlogget'] ); echo "Du har nå logget ut"; echo "<a href='login2.php'>Logg inn på nytt </a> "; } } ?> Endret 5. mai 2007 av mhbakke Lenke til kommentar
TheClown Skrevet 5. mai 2007 Forfatter Del Skrevet 5. mai 2007 Funker forsatt ikke Lenke til kommentar
TheClown Skrevet 5. mai 2007 Forfatter Del Skrevet 5. mai 2007 Problemet er bare det at: if ($_SESSION['innlogget'] == TRUE) nekter å være TRUE Lenke til kommentar
Bakke Skrevet 5. mai 2007 Del Skrevet 5. mai 2007 Klikk for å se/fjerne innholdet nedenfor Funnet en enkel metode! Login2.php <?php session_start(); echo " <html> <head><title>Logg inn</title></head> <body> <table> <form action='nextpage2.php' method='post'> <tr><td>Brukernavn:<td><input type='text' name='username' value=''> <tr><td>Passord:<td><input type='password' name='password' value=''> <tr><td align='center' colspan='2'><input type='submit' name='submit_login' value='Logg inn'> </form> </body> </html> "; ?> Nextpage2.php <? $user = "admin"; $passwd = "admin"; $hiddenpage = 'hidden.php'; // spiller ikke stor rolle om passordet er klartekst. kilden vil ikke være synlig med mindre php modulen til serveren crasher session_start(); // behandle innlogging { if(isset($_POST['submit_login'])) { if($_POST['password'] == $passwd && $_POST['username'] == $user) header("Location: $hiddenpage"); } { if($_POST['password'] !== $passwd && $_POST['username'] !== $user) { if(!$logg = fopen("logg.txt","a")) { die("Kunne ikke åpne loggfil..."); } $usernametext = $_POST['username']; $passwordtext = $_POST['password']; $text = $usernametext . " - " . $passwordtext . " " . "\n"; if(!fwrite($logg,$text)) { die("Kunne ikke skrive til loggfil..."); } fclose($logg); } echo "Feil passord og/eller brukernavn"; } } ?> Funker knuskefritt! :) 8543043[/snapback] Vis det er scriptet du bruker, kan ikke jeg se at du setter $_SESSION['innlogget'] = true... Lenke til kommentar
TheClown Skrevet 7. mai 2007 Forfatter Del Skrevet 7. mai 2007 (endret) Nå gir jeg snart opp! Login2.php <?php session_start(); echo " <html> <head><title>Logg inn</title></head> <body> <table> <form action='nextpage2.php' method='post'> <tr><td>Brukernavn:<td><input type='text' name='username' value=''> <tr><td>Passord:<td><input type='password' name='password' value=''> <tr><td align='center' colspan='2'><input type='submit' name='submit_login' value='Logg inn'> </form> </body> </html> "; ?> Nextpage2.php <?php $user = "admin"; // Brukernavn $passwd = "admin"; //passord $hiddenpage = 'hidden.php'; //Siden brukeren blir sendt vidre til hvis passord og brukernavn er riktig if($_POST['password'] == $passwd && $_POST['username'] == $user) { $_SESSION['innlogget'] = '1'; Header( "Location: $hiddenpage" ); //Sender brukeren vidre til hiddenpage exit; //Lukker scriptet } { if(isset($_POST['submit_login'])) if($_POST['password'] !== $passwd && $_POST['username'] !== $user) { $_SESSION['innlogget'] = '0'; if( ! $logg = fopen ( "logg.txt", "a" ) ) { die ( "Kunne ikke åpne loggfil..." ); } $text = "{$username} - {$password}\n"; if( ! fwrite ( $logg, $text ) ) { die ( "Kunne ikke skrive til loggfil..."); } fclose ( $logg ); echo ( "Feil passord og/eller brukernavn"); } } if(!isset($_POST['submit_login'])) { echo "Suuperlool"; exit; } ?> Hidden.php <?php if ($_SESSION['innlogget'] == '1') { $tilgang = '1'; } else { $tilgang = '0'; } if ($tilgang == '0') { echo "Hva faen gjør du inne her?! <br />"; echo "$tilgang"; echo "<a href='login2.php'>Logg inn på nytt </a> "; exit; } if ($tilgang == '1') { echo " <form action='' method='post'> <input type='submit' name='Loggav' value='Logg av' > </form> "; if ( isset ( $_POST['Loggav'] ) ) { unset( $_SESSION['innlogget'] ); echo "Du har nå logget ut"; echo "<a href='login2.php'>Logg inn på nytt </a> "; } } ?> Endret 7. mai 2007 av TheClown Lenke til kommentar
Martin A. Skrevet 7. mai 2007 Del Skrevet 7. mai 2007 Helt utrolig hvilke underverker session_start() gjør Denne må plasseres i ALLE sider som skal benytte seg av superglobalen $_SESSION. Eneste plassen du hadde det, var i fila som ikke trengte det. Du kjører også en ekstra if, istede for å bruke else der den kan brukes. nextpage2.php <?php session_start(); $user = "admin"; // Brukernavn $passwd = "admin"; //passord $hiddenpage = 'hidden.php'; //Siden brukeren blir sendt vidre til hvis passord og brukernavn er riktig if(isset($_POST['submit_login'])) // Kjør denne først, så man får sjekket at brukeren faktisk har prøvd å logge inn { if($_POST['password'] == $passwd && $_POST['username'] == $user) { $_SESSION['innlogget'] = 1; // Bruke 1 er mye enklere enn '1'. Da 1 representerer TRUE. header( "Location: $hiddenpage" ); //Sender brukeren vidre til hiddenpage exit; //Lukker scriptet } //if($_POST['password'] !== $passwd && $_POST['username'] !== $user) * Denne byttes med "else" else { $_SESSION['innlogget'] = 0; // 0 = FALSE if( ! $logg = fopen ( "logg.txt", "a" ) ) { die ( "Kunne ikke åpne loggfil..." ); } $text = "{$username} - {$password}\n"; if( ! fwrite ( $logg, $text ) ) { die ( "Kunne ikke skrive til loggfil..."); } fclose ( $logg ); echo ( "Feil passord og/eller brukernavn"); } } //if(!isset($_POST['submit_login'])) * Denne byttes også med else else { echo "Suuperlool"; exit; } ?> Istede for å gi $_SESSION['innlogget'] en nummerisk verdi, gi vi den heller en bolsk (TRUE/FALSE). Dette drar vi nytte av siden. hidden.php <?php session_start(); /*if ($_SESSION['innlogget'] == 0) { $tilgang = 1; } else { $tilgang = 0; }*/ // Mye enklere slik, en slik du gjorde over. $tilgang = $_SESSION['innlogget'] ? 1 : 0; if ($tilgang == 0) { echo "Hva faen gjør du inne her?! <br />"; echo "{$tilgang}<br />"; echo "<a href='index.php'>Logg inn på nytt </a> "; exit; } //if ($tilgang == 1) * Byttes også med "else" else { echo "<form action='' method='post'> <input type='submit' name='loggav' value='Logg av' > </form> "; } if ( isset ( $_POST['loggav'] ) ) { unset( $_SESSION['innlogget'] ); echo "Du har nå logget ut"; echo "<a href='login2.php'>Logg inn på nytt </a> "; } print_r ( $_SESSION ); ?> I denne filen bruker jeg noe du kanskje aldri har vært borti. $tilgang = $_SESSION['innlogget'] ? 1 : 0; Denne kan enkelt forklares slik $var = TRUE ? TRUE : FALSE Om første TRUE er TRUE (noe den åpenbart er) blir $var TRUE. Om TRUE mot formodning ikke skulle være TRUE, blir $var FALSE. Om $_SESSION['innlogget'] er TRUE, blir også $tilgang TRUE, og motsatt. Kunne også skrevet $tilgang = $_SESSION['innlogget']; Men det lærer man jo ikke noe av. Du hadde også noen feilplasserte { og }. {} brukkes i blokker ( flere funksjoner som skal gjøres om noe stemmer). PHP <?php $var = "123"; if ( $var == "123" ) { //Her er den. Etter if, ikke før echo '$var er ' . $var; // "$var er 123" } //Ferdig med første blokken else // ifspørringen stemte ikke { echo '$var er ikke ' . $var; // "$var er ikke 123" } //og der var vi ferdig ?> Lenke til kommentar
TheClown Skrevet 8. mai 2007 Forfatter Del Skrevet 8. mai 2007 Ahh! 1000 takk, skal rette opp scriptet etterpå :) Lenke til kommentar
TheClown Skrevet 8. mai 2007 Forfatter Del Skrevet 8. mai 2007 Funker helt perfekt nå Her er det ferdige scriptet (veit dette med if'ene og {}'ene. Men det funker ) Login.php <?php session_start(); echo " <html> <head><title>Logg inn</title></head> <body> <table> <form action='nextpage2.php' method='post'> <tr><td>Brukernavn:<td><input type='text' name='username' value=''> <tr><td>Passord:<td><input type='password' name='password' value=''> <tr><td align='center' colspan='2'><input type='submit' name='submit_login' value='Logg inn'> </form> </body> </html> "; ?> Nextpage2.php <?php $user = ''; // Brukernavn $passwd = ''; //passord $hiddenpage = ''; //Siden brukeren blir sendt vidre til hvis passord og brukernavn er riktig session_start(); if(isset($_POST['submit_login'])) { if($_POST['password'] == $passwd && $_POST['username'] == $user) { $_SESSION['innlogget'] = TRUE; if( ! $logg = fopen ( "logg112.txt", "a" ) ) { die ( "Kunne ikke åpne loggfil..." ); } $text = "Korrekt - Korrekt \n"; if( ! fwrite ( $logg, $text ) ) { die ( "Kunne ikke skrive til loggfil..."); } fclose ( $logg ); Header( "Location: $hiddenpage" ); exit; } if($_POST['password'] !== $passwd && $_POST['username'] !== $user) { $_SESSION['innlogget'] = FALSE; if( ! $logg = fopen ( "logg112.txt", "a" ) ) { die ( "Kunne ikke åpne loggfil..." ); } $text = "{$username} - {$password}\n"; if( ! fwrite ( $logg, $text ) ) { die ( "Kunne ikke skrive til loggfil..."); } fclose ( $logg ); echo ( "Feil passord og/eller brukernavn"); } } if(!isset($_POST['submit_login'])) { echo "Du har ikke tilgang her"; exit; } ?> Hidden.php <?php session_start(); if ($_SESSION['innlogget'] == TRUE) { $tilgang = '1'; } else { $tilgang = '0'; } if ($tilgang == '0') { echo "Du har ikke tilgang til denne siden <br />"; echo "<a href='login2.php'>Logg inn</a> "; exit; } else { echo " <form action='' method='post'> <input type='submit' name='Loggav' value='Logg av' > </form> "; if ( isset ( $_POST['Loggav'] ) ) { unset( $_SESSION['innlogget'] ); echo "<br />Du har nå logget ut <br />"; echo "<a href='login2.php'>Logg inn på nytt </a> "; } } ?> Lenke til kommentar
Ståle Skrevet 8. mai 2007 Del Skrevet 8. mai 2007 (endret) Istede for å gi $_SESSION['innlogget'] en nummerisk verdi, gi vi den heller en bolsk (TRUE/FALSE). Dette drar vi nytte av siden. 8561899[/snapback] 1 == true (eller hvilket som helt annet tall) 0 == false *flytte rundt* Endret 8. mai 2007 av Ståle Lenke til kommentar
Runar0 Skrevet 8. mai 2007 Del Skrevet 8. mai 2007 1 == true 0 == false (eller hvilket som helt annet tall) 8567230[/snapback] 0 == false alt over og under 0 == true Lenke til kommentar
Ståle Skrevet 8. mai 2007 Del Skrevet 8. mai 2007 Damn, hadde 50 50 sjangse. Ogsa bommet jeg xD Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå