Hayer Skrevet 15. juni 2007 Skrevet 15. juni 2007 Her er login.php Klikk for å se/fjerne innholdet nedenfor <?php include_once("sql_connect.php"); SESSION_START(); if(isset($_POST['login_knapp'])) { $SQLoppgave = "SELECT nick, brukernavn, passord, level FROM brukere WHERE brukernavn = ".$_POST['brukernavn']." AND passord = ".$_POST['passord'].""; $resultat = mysql_query($SQLoppgave); echo $resultat; if ($result == 1) { $rad = mysql_fetch_assoc($SQLoppgave); $_SESSION['innlogget'] = true; $_SESSION['level'] = $rad['level']; $_SESSION['brukernavn'] = $rad['brukernavn']; $_SESSION['nick'] = $rad['nick']; echo "Du er nå logget inn!<br>"; echo "Hei, "; echo $_SESSION['nick']; include ("test.txt"); } } ?> <form action="<?=$_SERVER['PHP_SELF']?>" method="POST"> <b>Username:</b><br><input type="text" name="brukernavn"><br> <b>Password:</b><br><input type="password" name="passord"><br> <input type="submit" name="login_knapp" value="Login"> </form> I databasen har jeg: id | nick | brukernavn | level | passord | email 1 | hayer | hayer | 1 | hayer | hayer Hva gjør jeg galt?
Martin A. Skrevet 15. juni 2007 Skrevet 15. juni 2007 $SQLoppgave = "SELECT nick, brukernavn, passord, level FROM brukere WHERE brukernavn = ".$_POST['brukernavn']." AND passord = ".$_POST['passord'].""; til $brukernavn = mysql_real_escape_string( $_POST['brukernavn'] ); $passord = mysql_real_escape_string( $_POST['passord'] ); $SQLoppgave = "SELECT nick, brukernavn, passord, level FROM brukere WHERE brukernavn = {$brukernavn} AND passord = {$passord}"; ALDRI kjør brukerinput rett inn i en spørring uten å fjerne ting som ikke skal være der.
jorgis Skrevet 15. juni 2007 Skrevet 15. juni 2007 Ellers skal det nevnes at rene SQL-spørsmål helst tas i Databaser-forumet.
Crowly Skrevet 16. juni 2007 Skrevet 16. juni 2007 Man bør vel ha noen ' rundt brukernavn og passord for å indikere tekst $SQLoppgave = "SELECT nick, brukernavn, passord, level FROM brukere WHERE brukernavn = '{$brukernavn}' AND passord = '{$passord}'"; //alternativt kan man bruke sprintf(), syntes det kan gi litt bedre kontroll, // i alle fall med tall (%d) $SQLoppgave = sprintf("SELECT nick, brukernavn, passord, level FROM brukere WHERE brukernavn = '%s' AND passord = '%s'",$brukernavn,$passord);
Hayer Skrevet 16. juni 2007 Forfatter Skrevet 16. juni 2007 bruker $sql="SELECT level, brukernavn, passord, email FROM brukere WHERE brukernavn='$myusername' and passord='$mypassword'"; nå men får ikke til sessions :s Her er login scriptet: <?php include_once("sql_connect.php"); session_start(); $myusername=$_POST['brukernavn']; $mypassword=$_POST['passord']; $sql="SELECT level, brukernavn, passord, email FROM brukere WHERE brukernavn='$myusername' and passord='$mypassword'"; $resultat = mysql_query($sql); $count = mysql_num_rows($resultat); if($count==1){ $_SESSION['innlogget'] = true; $_SESSION['level'] = $rad['level']; $_SESSION['brukernavn'] = $rad['brukernavn']; $_SESSION['nick'] = $rad['nick']; $_SESSION['email'] = $rad['email']; header("Location: .././index.php"); } else { echo "<font size=6>ERROR:</font><br><b>Wrong Username or Password</b>"; } ?> !ps! hvis ikke " header("location .././index.php"); " funker så husk, jeg har også prøvd " header("location index.php"); mens index.php var i samme mappe.. å her er index.php <?php echo $_SESSION['nick']; ?> Hva er det jeg gjør feil?
CruellaDeVille Skrevet 16. juni 2007 Skrevet 16. juni 2007 (endret) if($count==1){ $_SESSION['innlogget'] = true; $_SESSION['level'] = $rad['level']; $_SESSION['brukernavn'] = $rad['brukernavn']; $_SESSION['nick'] = $rad['nick']; $_SESSION['email'] = $rad['email']; header("Location: .././index.php"); } Du mangler en $rad = mysql_fetch_array($resultat), tror jeg - før du begynner å legge til sessionvariabler. Du forteller aldri hva $rad er. Endret 16. juni 2007 av CruellaDeVille
chriscandy Skrevet 16. juni 2007 Skrevet 16. juni 2007 <?php session_start(); // Må stå først. Kan ikke være så mye som et linjeskift før ?>
Martin A. Skrevet 16. juni 2007 Skrevet 16. juni 2007 (endret) Utifra den koden der, så vet både jeg og Cruella at du manger en fetch_array. Og du brydde deg fremdeles ikke om å sikre input fra bruker. <?phpsession_start(); // Må stå først. Kan ikke være så mye som et linjeskift før ?> Tullball, det må stå før all output. Tviler på at sql_connect.php gir noe input, isåfall bør det ligge i en die();. Endret 16. juni 2007 av M4rTiN
chriscandy Skrevet 16. juni 2007 Skrevet 16. juni 2007 Seff... Tenkte ikke langt der. Så bare at det var en include og regnet med output... Men uansett så mangler her en fetch_array ja
chriscandy Skrevet 16. juni 2007 Skrevet 16. juni 2007 CODE <?phpinclude_once("sql_connect.php");session_start();$myusername=$_POST['brukernavn'];$mypassword=$_POST['passord'];$sql="SELECT level, brukernavn, passord, email FROM brukere WHERE brukernavn='$myusername' and passord='$mypassword'";$resultat = mysql_query($sql);$count = mysql_num_rows($resultat);if($count==1){$rad = mysql_fetch_array($resultat); //Prøv med å legge til denne$_SESSION['innlogget'] = true;$_SESSION['level'] = $rad['level'];$_SESSION['brukernavn'] = $rad['brukernavn'];$_SESSION['nick'] = $rad['nick'];$_SESSION['email'] = $rad['email'];header("Location: .././index.php");}else {echo "<font size=6>ERROR:</font><br><b>Wrong Username or Password</b>";}?>
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å