Anders Moen Skrevet 7. juni 2007 Skrevet 7. juni 2007 Hei! Fikk hjelp på Norsk Webforum en gang (http://norskwebforum.no/viewtopic.php?t=32...ht=login+script) og til slutt fikk jeg scriptet til å fungere takket være denne posten i den tråden, men nå som jeg fant igjen tråden (kopierte koden med en liten endring), men jeg blir ikke logget inn. Koden (over doctype): if (isset($_POST['Submit'])) { // Connect to server and select databse. mysql_connect("localhost", "uname", "pword"); mysql_select_db("database"); // username and password sent from signup form $myusername = mysql_real_escape_string($_POST['username']); $mypassword = mysql_real_escape_string(md5($_POST['password'])); $sql="SELECT * FROM users WHERE username = '$myusername' and password = '$mypassword'"; $result=mysql_query($sql); // Mysql_num_row is counting table row $count=mysql_num_rows($result); // If result matched $myusername and $mypassword, table row must be 1 row if($count==1){ $_SESSION['user_logged_in'] = TRUE; $_SESSION['isername'] = mysql_result($result,0,"username"); $_SESSION['id'] = mysql_result($result,0,"id"); header('location: index.php'); } else { header('location: index.php'); } } Og så her er koden som sjekker om man er logget inn: <?php if (!$_SESSION['user_logged_in']) { include 'login.php'; } else { include 'content.php'; } ?> Noen som vet hvorfor jeg ikke blir logga inn? Driver å lager et administrasjonspanel...hvis det hjalp dere noe lol Btw: Det jeg forandra på var de her: $_POST['mypassword'] til $_POST['password'] og så det samme på username...siden feltene i skjemaet het password og username og ikke myusername & mypassword
hockey500 Skrevet 7. juni 2007 Skrevet 7. juni 2007 jeg ser ingen session_start(), men jeg antar at du har den et sted også? ellers ser resten riktig ut
Stian Jacobsen Skrevet 7. juni 2007 Skrevet 7. juni 2007 Får jeg anbefale at du har en session id? bruk md5 eller sha1
Anders Moen Skrevet 7. juni 2007 Forfatter Skrevet 7. juni 2007 hockey500 Jepp, jeg har session_start(); over den koden der MrNeeon For å bedre sikkerheten mener du? Kanskje ikke så dumt det...skal legge det på når jeg har løst mysteriet med hvorfor jeg ikke blir logget inn.
funkweb Skrevet 7. juni 2007 Skrevet 7. juni 2007 Ikke det at jeg har peil i PHP, men kanksje du har skrevet feil et sted? $_SESSION['isername'] = mysql_result($result,0,"username"); isername skulle kanksje vært username?
Anders Moen Skrevet 7. juni 2007 Forfatter Skrevet 7. juni 2007 (endret) Sorry, men det hjalp ikke, men får at jeg skal få sånn "Velkommen tilbake, " . $_SESSION['username']; så måtte den rettes opp i uansett, men takk uansett. Ingen som vet hva som er feil? Endret 7. juni 2007 av Anders-Moen
mgns Skrevet 7. juni 2007 Skrevet 7. juni 2007 Hadde jo vært kjekt med litt feilmeldinger for å sjekke hvor ting feiler. Du kunne jo prøvd noe sånt $result=mysql_query($sql) or die( "ERROR: " . mysql_error() ); for å se om problemet ligger i databasespørringen. Og du kan prøve dette else { header('location: index.php'); print "COUNT: " . $count; } for å se om det er i if/else-setningen din det feiler. Jeg ser heller ingen problemer i koden, derfor jeg foreslår feilsøking. // mgns
Anders Moen Skrevet 7. juni 2007 Forfatter Skrevet 7. juni 2007 Prøvde det her $result=mysql_query($sql) or die("ERROR: " . mysql_error()); men ingen feilmeldinger å se. (Ja, jeg tok bort header'ene sånn at meldingene ikke skulle gå bort før man så dem)
mgns Skrevet 7. juni 2007 Skrevet 7. juni 2007 (endret) Da virker det for meg som om feilen er at if( $count == 1 ) aldri slår til. Prøv å se hva som ligger i databasen og kanskje prøve å skrive query'en til skjerm så du hva databasen blir spurt om. Altså før $result=mysql_query($sql); så tar du en print "QUERY: " . $query; EDIT: Prøv også å kjøre denne spørringen direkte mot databasen for å se hva den returnerer. // mgns Endret 7. juni 2007 av mgns
Alex Moran Skrevet 7. juni 2007 Skrevet 7. juni 2007 PHP <?php if (isset($_POST['submit'])) { // Connect $c = mysql_connect('localhost', 'uname', 'pword'); mysql_select_db('database', $c); $username = mysql_real_escape_string($_POST['username']); $password = mysql_real_escape_string($_POST['password'])); $hash = md5($password); $query = mysql_query("SELECT * FROM `users` WHERE `username` = '$username' AND `password` = '$hash'"); $row = mysql_fetch_object($query); if(mysql_num_rows($query) > 0) { $_SESSION['user_logged_in'] = TRUE; $_SESSION['username'] = $row->username; $_SESSION['id'] = $row->id; header('Location: index.php'); exit(); } else { die('Feil brukernavn/passord'); } } else { // Show login form } ?> Sjekkingen av om man er logget inn, kan du lage slik: PHP <?php if(!$_SESSION['user_logged_in']) { die('Du er ikke logget inn din taper'); } ?> Gratulerer, du er logget inn :)
Runar0 Skrevet 7. juni 2007 Skrevet 7. juni 2007 PHP <?php$username = mysql_real_escape_string($_POST['username']); $password = mysql_real_escape_string($_POST['password'])); $hash = md5($password); ?> Du treng ikkje å escape passordet før du hasher det. Hashen vil aldri innehald 'farlege' teikn utansett og dermed er det bare sløsing av server kraft
grimjoey Skrevet 8. juni 2007 Skrevet 8. juni 2007 MrNeeon: Session key blir laget automatisk av php når du kaller session_start(). Og det er en hash.
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å