Arne Skrevet 29. januar 2006 Del Skrevet 29. januar 2006 (endret) Hei! Scriptar litt PHP for tida, og støtte på eit problem. <html> <head> <title> Hehe, lol. </title> </head> <body> <?php if($_POST['navn'] = "navn" AND $_POST['pass'] = "pass"){ echo 'Du er logga inn!'; } else { echo " <h1>Yo!</h1> <h2>Logg inn!</h2> <form action='index.php' method='post'> <p>Brukarnamn:</p> <input type='text' name='navn'> <p>Passord:</p> <input type='text' name='pass'> <input type='submit' value='Logg inn!'> </form>"; } ?> </body> </html> På dette får eg berre igjen "Du er innlogga". Det er sikkert noko feil med if-strukturen min. Vell, de ser sikkert kva eg vil med den, men korleis få den rett? NYTT SPM! SJÅ POST 4! Endret 30. januar 2006 av Fjott Lenke til kommentar
zacon Skrevet 29. januar 2006 Del Skrevet 29. januar 2006 Hei, Du må ha doble likhetstegn i if-kondisjonen din. if($_POST['navn'] == "navn" AND $_POST['pass'] == "pass"){ if ($foo = "bar") { // Dersom det gikk an å sette variabelen $foo til "bar" } if ($foo == "bar") { // Dersom variabelen $foo er "bar" } Lenke til kommentar
Arne Skrevet 29. januar 2006 Forfatter Del Skrevet 29. januar 2006 Takk. Dum feil, såpass burde jeg vite. Lenke til kommentar
Arne Skrevet 30. januar 2006 Forfatter Del Skrevet 30. januar 2006 Eg har eit nytt problem... Eg har tenkt å bruke ein kjeks for å vise at du er innlogga. Derfor bruker eg denne koden: <html> <head> <title>LOLI! </title> </head> <body> <?php if($_POST['navn'] == "navn" AND $_POST['pass'] == "pass"){ setcookie("on"); echo 'Du er logga inn!'; } else { echo " <h1>Lol!</h1> <h2>Logg inn!</h2> <form action='index.php' method='post'> <p>Brukarnamn:</p> <input type='text' name='navn'> <p>Passord:</p> <input type='text' name='pass'> <input type='submit' value='Logg inn!'> </form>"; } ?> </body> </html> Viss brukarnamn og passord er rett får eg: Warning: Cannot modify header information - headers already sent by (output started at /home/arneweb/web/admin.arneweb.com/index.php:6) in /home/arneweb/web/admin.arneweb.com/index.php on line 8 Du er logga inn! Viss ikkje, kjem du tilbake til hovudsida (det er rett). Kva er den advarselen, og kva gjer eg feil? Lenke til kommentar
kakkle Skrevet 30. januar 2006 Del Skrevet 30. januar 2006 (endret) Feilen betyr at du har skrevet ut noe før du forsøkte å sende header informasjon (setcookie). Du må bruke den fuksjonen før all annen output (DVS. før du "skriver noe til skjermen"). Du kan f.eks gjøre slik: if(!isset($_COOKIE["on"])) { // Sjekker om kaken er satt if(isset($_POST["navn"])) { // Sjekker om form er sendt if($_POST['navn'] == "navn" AND $_POST['pass'] == "pass"){ setcookie("on", "true", time()+60*60*24*365); //Setter kaken } header("location:$PHP_SELF"); } else { //Vis login skjemaet } } else { echo "Du er logget inn"; } setcookie setter kaken "on" til "true", og lar den være gyldig i ett år. Dette kan du endre selv... Med forbehold om små slørve feil, og feilstaving. Håper du skjønner cluet, ihvertfall. Det finnes nok en enklere måte å skrive koden på. Håper du skjønne gangen i det. EDIT: Fjernet litt kommentarer, for å prøve å få koden til å se litt bedre ut... Endret 30. januar 2006 av kakkle Lenke til kommentar
Arne Skrevet 30. januar 2006 Forfatter Del Skrevet 30. januar 2006 Kan eg ikkje berre bytte plass på setcookie() og echo() då? Lenke til kommentar
kakkle Skrevet 30. januar 2006 Del Skrevet 30. januar 2006 Cluet er at du må ha det FØR <html> også... Du kan jo seff flytte if setningen helt til topps, og flytte <html> og resten til etter else blokken... Lenke til kommentar
Arne Skrevet 30. januar 2006 Forfatter Del Skrevet 30. januar 2006 Eg dann det ikkje i manualen, så eg spør likegodt her: Kva gjer $PHP_SELF? Lenke til kommentar
nree Skrevet 30. januar 2006 Del Skrevet 30. januar 2006 Hvorfor ikke bare bruke sessions i stede for kaker og kjeks? Lenke til kommentar
Arne Skrevet 30. januar 2006 Forfatter Del Skrevet 30. januar 2006 Og kvifor burde eg bruke sessions istadenfor kjeks? Egt veit det er usunt med kjeks, men det gjer ikkje noke. Lenke til kommentar
robgar Skrevet 30. januar 2006 Del Skrevet 30. januar 2006 (endret) vel en grunn (for meg) er at det er "lettere".. <?php // Helt i toppen av fila session_start(); if($_POST['navn'] == "navn" && $_POST['pass'] == "pass") { $_SESSION['JegErLoggaPaa'] = true; } elseif($_SESSION['JegErLoggaPaa'] && $_GET['logmeout'] == 1) { session_unset(); header("Location: fila_du_er_i.php"); } else { echo "du må logge deg på"; } ?> for å slette sessionen skriver du: session_unset(); (rett meg opp ) Endret 30. januar 2006 av robgar Lenke til kommentar
Arne Skrevet 30. januar 2006 Forfatter Del Skrevet 30. januar 2006 Kvar i fila skal doctype, <html>,<head></head> og <body> vere då? Lenke til kommentar
Gjest Slettet+6132 Skrevet 30. januar 2006 Del Skrevet 30. januar 2006 (endret) Kvar i fila skal doctype, <html>,<head></head> og <body> vere då? 5524012[/snapback] EDIT: Med sessions o.l må dette komme FØRST. <?php session_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <title>Foo</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" href="foobar.css" type="text/css" media="all" /> </head> <body> <!--Content--> </body> </html> Endret 30. januar 2006 av Slettet+6132 Lenke til kommentar
Arne Skrevet 31. januar 2006 Forfatter Del Skrevet 31. januar 2006 No har eg denne koden: <?php if($_POST['navn'] == "navn" AND $_POST['pass'] == "pass"){ setcookie("on"); echo " <html> <head> <title> Lol</title> </head> <body>"; echo 'Du er logga inn!'; } else { echo " <html> <head> <title> Lol</title> </head> <body>"; echo " <h1>Lol</h1> <h2>Logg inn!</h2> <form action='index.php' method='post'> <p>Brukarnamn:</p> <input type='text' name='navn'> <p>Passord:</p> <input type='text' name='pass'> <input type='submit' value='Logg inn!'> </form>"; } ?> </body> </html> , og får denne feilmeldinga: Warning: Cannot modify header information - headers already sent by (output started at /home/arneweb/web/admin.arneweb.com/index.php:2) in /home/arneweb/web/admin.arneweb.com/index.php on line 4 Du er logga inn! Kva gjer eg feil no? Det første eg sender er jo kjeksen, så.... Lenke til kommentar
Albino Skrevet 31. januar 2006 Del Skrevet 31. januar 2006 Virker fint hos meg, men jeg fikk error på linje 2 når $_POST['navn'] ikke finnes. Lenke til kommentar
Arne Skrevet 31. januar 2006 Forfatter Del Skrevet 31. januar 2006 Hæ? Eg brukar inhaldet her i alle fall: Driv på med eit ADMIN prosjekt. http://admin.arneweb.com Lenke til kommentar
kakkle Skrevet 31. januar 2006 Del Skrevet 31. januar 2006 Og du er sikker på at du har <? helt i toppen av dokumentet, uten noen mellomrom foran ? Dersom det er space foran <? så vil dette bli utskrift til browser, og dermed vil headers allerede være sendt. 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å