Tha_Zaynt Skrevet 10. november 2004 Del Skrevet 10. november 2004 Jeg holder på å lage et login-script som bare skal loggen in noen dersom feltet uid er tomt. Jeg kommer liksom ikke lenger enn dette: <?php session_start(); include("config.php"); echo <<< end <form action='$regScript' method='$formMethod'> <p>Brukernavn: <input name='brukernavn' type='text' size='20'> <p>Passord: <input name='pass' type='passord' size='20'> <p><input name='send' type='submit' value='Login'> </form> end; $brukernavn = $_POST['brukernavn'] $pass = $_POST['pass'] if ($_POST['send'] == $_POST['Login']){ mysql_connect($mySQLhost, $mySQLuser, $mySQLpass) or die("Could not connect: " . mysql_error()); mysql_select_db($mySQLdb); mysql_query("SELECT passord FROM users WHERE !uid AND brukernavn = '$brukernavn'") } ?> Noen som kan være så snill å hjlpe meg med å gjøre det ferdig? Lenke til kommentar
christt Skrevet 10. november 2004 Del Skrevet 10. november 2004 Hva med: SELECT passord FROM users WHERE uid='' AND brukernavn = '$brukernavn' Lenke til kommentar
LoS Skrevet 10. november 2004 Del Skrevet 10. november 2004 (endret) Hvor kommer $_POST[login] og $_POST[send] fra? btw, tror ikke ! er likt i php som i mysql, altså, bruk where uid = '' isteden. Endret 10. november 2004 av LoS Lenke til kommentar
jrz Skrevet 10. november 2004 Del Skrevet 10. november 2004 Hvor kommer $_POST[login] og $_POST[send] fra? btw, tror ikke ! er likt i php som i mysql, altså, bruk where uid = '' isteden. han har blandet litt.. det finnes ikke noe $_POST['Login'], men $_POST['send'] er nok satt til 'Login' Lenke til kommentar
Tha_Zaynt Skrevet 10. november 2004 Forfatter Del Skrevet 10. november 2004 (endret) sånn, nå er jeg kommet litt lengre: <?php session_start(); include("config.php"); echo <<< end <form action='$regScript' method='$formMethod'> <p>Brukernavn: <input name='brukernavn' type='text' size='20'> <p>Passord: <input name='pass' type='passord' size='20'> <p><input name='send' type='submit' value='Login'> </form> end; $brukernavn = $_POST['brukernavn'] $pass = $_POST['pass'] $pass = md5($pass); if ($_POST['send'] == 'Login'){ mysql_connect($mySQLhost, $mySQLuser, $mySQLpass) or die("Could not connect: " . mysql_error()); mysql_select_db($mySQLdb); $q =("SELECT passord FROM users WHERE uid='' AND brukernavn = '$brukernavn'"); $resultat = mysql_query($q); $sjekk = mysql_fetch_array($resultat); if () ?> Hvordan fortsetter jeg? Endret 10. november 2004 av Tha_Zaynt Lenke til kommentar
Tha_Zaynt Skrevet 10. november 2004 Forfatter Del Skrevet 10. november 2004 hvorfor fungerer ikke dette?: login.php <?php session_start(); include("config.php"); echo <<< end <form action='$regScript' method='$formMethod'> <p>Brukernavn: <input name='brukernavn' type='text' size='20'> <p>Passord: <input name='pass' type='password' size='20'> <p><input name='send' type='submit' value='Login'> </form> end; $brukernavn = $_POST['brukernavn']; $pass = $_POST['pass']; $pass = md5($pass); if ($_POST['send'] == 'Login'){ mysql_connect($mySQLhost, $mySQLuser, $mySQLpass) or die("Could not connect: " . mysql_error()); mysql_select_db($mySQLdb); $q =("SELECT passord FROM users WHERE uid='' AND brukernavn = '$brukernavn'"); $resultat = mysql_query($q); $sjekk = mysql_fetch_array($resultat); if ($sjekk == $pass){ $_SESSION['$brukernavn'] = true; header("Location: minside.php?brukernavn=$brukernavn"); } else { echo "<p>Sikker på at du skrev inn riktig brukernavn og $pass?</p>"; } } ?> minside.php <?php session_start(): $brukernavn = $_GET['brukernavn']; if ($_SESSION['$brukernavn'] = true;){ echo "Du er logget inn!"; } ?> Lenke til kommentar
christt Skrevet 10. november 2004 Del Skrevet 10. november 2004 Du har en noen feil i scriptet ditt. I login.php kan du godt bruke mySQL til å sjekke passordet: SELECT passord FROM users WHERE uid='' AND brukernavn = '$brukernavn' AND passord = '$pass' men grunnen til at det ikke virker er vel at du bruker tilordning i if setningen i minside.php: <?php session_start(): $brukernavn = $_GET['brukernavn']; if ($_SESSION['$brukernavn'] = true;){ echo "Du er logget inn!"; } ?> bør være: <?php session_start(): $brukernavn = $_GET['brukernavn']; if ($_SESSION['$brukernavn'] == true) { echo "Du er logget inn!"; } ?> Du kunne også skrevet: <?php session_start(): $brukernavn = $_GET['brukernavn']; if ($_SESSION['$brukernavn']) { echo "Du er logget inn!"; } ?> Er det med vilje at du bruker $_SESSION['$brukernavn']? I og med at du bruker ' (singlequotes) blir $brukernavn feltnavnet i $_SESSION arrayet og ikke innholdet i variabelen $brukernavn. Lenke til kommentar
kakkle Skrevet 10. november 2004 Del Skrevet 10. november 2004 (endret) if ($sjekk == $pass) { skal vel kanskje være: if ($sjekk[passord] == $pass) { Hva skjer ? Hva skjer ikke ? Får du feilmeldinger ? Endret 10. november 2004 av kakkle Lenke til kommentar
Tha_Zaynt Skrevet 11. november 2004 Forfatter Del Skrevet 11. november 2004 huff og huff..dette baller jo bare på seg..nå får jeg denne erroren : Warning: Cannot modify header information - headers already sent by (output started at /hsphere/local/home/sjurvaag/nisselink.sjurvaage.com/login.php:14) in /hsphere/local/home/sjurvaag/nisselink.sjurvaage.com/login.php on line 31 login.php <?php session_start(); include("config.php"); echo <<< end <form action='$regScript' method='$formMethod'> <p>Brukernavn: <input name='brukernavn' type='text' size='20'> <p>Passord: <input name='pass' type='password' size='20'> <p><input name='send' type='submit' value='Login'> </form> end; $brukernavn = $_POST['brukernavn']; $pass = $_POST['pass']; $pass = md5($pass); if ($_POST['send'] == 'Login'){ mysql_connect($mySQLhost, $mySQLuser, $mySQLpass) or die("Could not connect: " . mysql_error()); mysql_select_db($mySQLdb); $q =("SELECT passord FROM users WHERE uid='' AND brukernavn = '$brukernavn'"); $resultat = mysql_query($q); $sjekk = mysql_fetch_array($resultat); if ($sjekk[passord] == $pass) { $_SESSION["$brukernavn"] = true; header("Location: minside.php?brukernavn=$brukernavn"); } else { echo "<p>Sikker på at du skrev inn riktig brukernavn og $pass?</p>"; } } ?> Er det noe jeg kan gjøre med det, eller kan jeg rett og slett ikke bruke header(location:x);? Lenke til kommentar
kakkle Skrevet 11. november 2004 Del Skrevet 11. november 2004 headers må settes før det skrives noe ut i det hele tatt... Flytt if-blokka til starten av scriptet: <?php session_start(); include("config.php"); if ($_POST['send'] == 'Login'){ $brukernavn = $_POST['brukernavn']; $pass = $_POST['pass']; $pass = md5($pass); mysql_connect($mySQLhost, $mySQLuser, $mySQLpass) or die("Could not connect: " . mysql_error()); mysql_select_db($mySQLdb); $q =("SELECT passord FROM users WHERE uid='' AND brukernavn = '$brukernavn'"); $resultat = mysql_query($q); $sjekk = mysql_fetch_array($resultat); if ($sjekk[passord] == $pass) { $_SESSION["$brukernavn"] = true; header("Location: minside.php?brukernavn=$brukernavn"); } else { echo "<p>Sikker på at du skrev inn riktig brukernavn og $pass?</p>"; } } echo <<< end <form action='$regScript' method='$formMethod'> <p>Brukernavn: <input name='brukernavn' type='text' size='20'> <p>Passord: <input name='pass' type='password' size='20'> <p><input name='send' type='submit' value='Login'> </form> end; ?> Dette skal fungere, med mindre du inkluderer denne login siden i en annen side, som skriver ut noe før header... Da kan du bare sende dataen til en annen side, f.eks. sjekk_login.php. som kun inneholder if blokken, også blir man sendt videre til en side med header(location:...) dersom brukernavn og passord er feil, og til en annen dersom det er rett... /Kakkle Lenke til kommentar
Tha_Zaynt Skrevet 13. november 2004 Forfatter Del Skrevet 13. november 2004 Jeg vil gjerne lage login-scriptet slik at det kommer opp en feilmelding hvis feltet uid ikke er tom..Jeg har prøvd meg litt frem, men det funker ikke.. slik ser det ut nå : login.php <?php session_start(); include("config.php"); $brukernavn = $_POST['brukernavn']; $pass = $_POST['pass']; $pass = md5($pass); if ($_POST['send'] == 'Login'){ if (empty($brukernavn) || empty($pass)){ echo"Du glemte å skrive inn:"; if(!$brukernavn){ echo "<p>brukernavn</p>"; } if(!$pass){ echo "<p>passord</p>"; } else{ mysql_connect($mySQLhost, $mySQLuser, $mySQLpass) or die("Could not connect: " . mysql_error()); mysql_select_db($mySQLdb); $q =("SELECT uid FROM users WHERE brukernavn = '$brukernavn'"); $resultat = mysql_query($q); $sjekk = mysql_fetch_array($resultat); if (!$sjekk){ $sjekk = true; } else { $sjekk = false; } if ($sjekk == false){ echo"Enten har du ikke registrert deg enda, ellers er ikke kontoen din aktivert. For å aktivere kontoen din må du trykke på aktiverinslinken du fikk i mailen når du registrerte deg."; } if ($sjekk == true){ $query =("SELECT passord FROM users WHERE AND brukernavn = '$brukernavn'"); $resultatet = mysql_query($query); $sjekken = mysql_fetch_array($resultat); if ($sjekken == $pass){ $_SESSION["$brukernavn"] = true; header("Location: minside.php?brukernavn=$brukernavn"); } } } } } echo <<< end <form action='$regScript' method='$formMethod'> <p>Brukernavn: <input name='brukernavn' type='text' size='20'> <br>Passord: <input name='pass' type='password' size='20'> <br><input name='send' type='submit' value='Login'></br> </form> end; ?> Lenke til kommentar
kakkle Skrevet 14. november 2004 Del Skrevet 14. november 2004 $q =("SELECT uid FROM users WHERE brukernavn = '$brukernavn'"); $resultat = mysql_query($q); $row = mysql_fetch_array($resultat); $uid = $row["uid"]; if (!$uid){ $sjekk = true; } else { $sjekk = false; } istedet for: $q =("SELECT uid FROM users WHERE brukernavn = '$brukernavn'"); $resultat = mysql_query($q); $sjekk = mysql_fetch_array($resultat); if (!$sjekk){ $sjekk = true; } else { $sjekk = false; } Lenke til kommentar
Tha_Zaynt Skrevet 14. november 2004 Forfatter Del Skrevet 14. november 2004 når jeg trykker på login-knappen skjer det ingenting..får ikke feilmelding heller.. Lenke til kommentar
kakkle Skrevet 14. november 2004 Del Skrevet 14. november 2004 (endret) Du må se på if blokkene... slutter de der de skal slutte ? Virker nesten som om du bare har satt mange } helt på slutten for å få vekk feilmeldinger... Hvis du ser på denne if setmningen: if (empty($brukernavn) || empty($pass)){ så slutter den helt på slutten... Det vil si at det inne i if blokken kun blir utført dersom brukernavn eller passord ikke er fylt ut, og det er vel ikke helt meningen. Regner med at du vil ha slutten på denne if'en etter dette: if(!$pass){ echo "<p>passord</p>"; } edit: skrivefeil /Kakkle Endret 14. november 2004 av kakkle Lenke til kommentar
Tha_Zaynt Skrevet 14. november 2004 Forfatter Del Skrevet 14. november 2004 (endret) ahh...så det nå. Tror det skal funke nå..Jeg får feilmelding hvis kontoen ikke er aktivert enda, men får ikke erroren "sikker på at du har skrevet inn riktig brukernavn og passord?" Edit: Ikke så rart...jeg har ikke med den feilmeldingen her...skal legge den til å se om det funker. Edit2: Er ikke helt sikker på hvor jeg skal legge til denne feilmeldingen...noen som har peiling? <?php session_start(); include("config.php"); $brukernavn = $_POST['brukernavn']; $pass = $_POST['pass']; $pass = md5($pass); if ($_POST['send'] == 'Login'){ if (empty($brukernavn) || empty($pass)){ echo"Du glemte å skrive inn:"; if(!$brukernavn){ echo "<p>brukernavn</p>"; } if(!$pass){ echo "<p>passord</p>"; } } else{ mysql_connect($mySQLhost, $mySQLuser, $mySQLpass) or die("Could not connect: " . mysql_error()); mysql_select_db($mySQLdb); $q =("SELECT uid FROM users WHERE brukernavn = '$brukernavn'"); $resultat = mysql_query($q); $row = mysql_fetch_array($resultat); $uid = $row["uid"]; if (!$uid){ $sjekk = true; } else { $sjekk = false; } if ($sjekk == false){ echo"Kontoen din er ikke aktivert enda. For å aktivere kontoen din må du trykke på aktiverinslinken du fikk i mailen når du registrerte deg."; } if ($sjekk == true){ $query =("SELECT passord FROM users WHERE AND brukernavn = '$brukernavn'"); $resultatet = mysql_query($query); $sjekken = mysql_fetch_array($resultat); if ($sjekken == $pass){ $_SESSION["$brukernavn"] = true; header("Location: minside.php?brukernavn=$brukernavn"); } } } } echo <<< end <form action='$regScript' method='$formMethod'> <p>Brukernavn: <input name='brukernavn' type='text' size='20'> <br>Passord: <input name='pass' type='password' size='20'> <br><input name='send' type='submit' value='Login'></br> </form> end; ?> Endret 14. november 2004 av Tha_Zaynt Lenke til kommentar
Terrasque Skrevet 17. november 2004 Del Skrevet 17. november 2004 (endret) Jezus! Frankenstein's PHP monster! <?php session_start(); include("config.php"); $link = mysql_connect($mySQLhost, $mySQLuser, $mySQLpass) or die("Could not connect: " . mysql_error()); mysql_select_db($mySQLdb); $brukernavn = $_POST['brukernavn']; $pass = md5($_POST['pass']); if ($_POST['send'] == 'Login'){ $q =("SELECT uid, passord FROM users WHERE brukernavn = '$brukernavn'"); $row = mysql_fetch_array(mysql_query($q)); if ( ($row['passord'] == $pass) and ($row['uid']) ) { $_SESSION["user"] = $brukernavn; header("Location: minside.php"); # Bruk session. (sjekk $_SESSION["user"];) } else { echo "Feil brukernavn/passord, eller kontoen din er ikke aktivert."; } } else { echo <<< end <html><head><title>Innlogging</title></head><body> <form action='$regScript' method='$formMethod'> <p>Brukernavn: <input name='brukernavn' type='text' size='20'> <br>Passord: <input name='pass' type='password' size='20'> <br><input name='send' type='submit' value='Login'></br> </form> </body></html> end; } mysql_close($link); ?> Slik... Er en stund siden jeg jobbet med PHP nå.. kan være feil ute og går Endret 17. november 2004 av Terrasque Lenke til kommentar
Torbjørn Skrevet 17. november 2004 Del Skrevet 17. november 2004 Du kunne også skrevet: <?php session_start(): $brukernavn = $_GET['brukernavn']; if ($_SESSION['$brukernavn']) { echo "Du er logget inn!"; } ?> Er det med vilje at du bruker $_SESSION['$brukernavn']? I og med at du bruker ' (singlequotes) blir $brukernavn feltnavnet i $_SESSION arrayet og ikke innholdet i variabelen $brukernavn. å i det hele tatt ha en variabel som key i $_SESSION har jeg vanskelig å se loggikken i. Lenke til kommentar
Tha_Zaynt Skrevet 23. november 2004 Forfatter Del Skrevet 23. november 2004 jeg endret litt på koden, men det virker som $_SESSION["$brukernavn"] ikke blir satt fordi når jeg blir redirecta til minside.php, men den godtar ikke sessionen....Noen som har peil på hva som kan være galt? login.php if ($row['passord'] == $pass and $row['uid'] == "") { $_SESSION["$brukernavn"]; header("Location: minside.php?brukernavn=$brukernavn"); minside.php <?php session_start(); $brukernavn = $_GET['brukernavn']; if ($_SESSION["$brukernavn"]){ echo"Du er logget inn!"; } else{ include("login.php"); echo"<p>Du må logge inn for å få tilgang til din brukerprofil!</p>"; } ?> Lenke til kommentar
kakkle Skrevet 23. november 2004 Del Skrevet 23. november 2004 Er det ikke bedre å gi $_SESSION vedrien til $brukernavn, da ?: login.php if ($row['passord'] == $pass and $row['uid'] == "") { $_SESSION["brukernavn"]=$brukernavn; header("Location: minside.php?brukernavn=$brukernavn"); minside.php: <?php session_start(); $brukernavn = $_GET['brukernavn']; if ($_SESSION["brukernavn"] == $brukernavn){ echo"Du er logget inn!"; } else{ include("login.php"); echo"<p>Du må logge inn for å få tilgang til din brukerprofil!</p>"; } ?> KAn evt i minside.php bruke: <?php session_start(); if (isset($_SESSION["brukernavn"])){ // Denne vil kun være satt dersom riktige ting er ok i scriptet login.php echo"Du er logget inn!"; } else{ include("login.php"); echo"<p>Du må logge inn for å få tilgang til din brukerprofil!</p>"; } ?> Du kan da fjerne "halen" urlen i header i login.php scriptet. /KMS Lenke til kommentar
Terrasque Skrevet 23. november 2004 Del Skrevet 23. november 2004 jeg endret litt på koden, men det virker som $_SESSION["$brukernavn"] ikke blir satt fordi når jeg blir redirecta til minside.php, men den godtar ikke sessionen....Noen som har peil på hva som kan være galt? login.php if ($row['passord'] == $pass and $row['uid'] == "") { $_SESSION["$brukernavn"]; header("Location: minside.php?brukernavn=$brukernavn"); minside.php <?php session_start(); $brukernavn = $_GET['brukernavn']; if ($_SESSION["$brukernavn"]){ echo"Du er logget inn!"; } else{ include("login.php"); echo"<p>Du må logge inn for å få tilgang til din brukerprofil!</p>"; } ?> Sukk.. Du har misforstått kraftig session, ser jeg. ("Jeg drar og drar i håndbrekket, men bilen VIL ikke starte!") Tenk på session som variabler som blir bundet til brukeren og går fra side til side. $bruker = "Brukernavn" <-- Vanlig setting av variabel bruker. $_SESSION["bruker"] = "Brukernavn" <--- Setting av session variabel bruker. $_SESSION["$brukernavn"]; <-- Totalt menigsløst. Først, $brukernavn blir byttet ut med innholdet i $brukernavn. Så det kan bli $_SESSION["Terra"]; eller $_SESSION["Zaynt"]; eller hva som helst, avhengig av hva brukeren logger seg inn som. Og hva i alle dager blir den session variablen satt til? Den blir ikke satt i det hele tatt. Den blir lest, men du gjør ikke noe med den eventuelle verdien som er i den variablen. Du trenger ikke unike session variabler for hver bruker, siden en session er bundet til brukeren, og ikke siden. (å ha ulik variabel for hver ville også gjort session veldig upraktisk) 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å