Gjest medlem-77217 Skrevet 12. november 2006 Del Skrevet 12. november 2006 Heisann! Jeg har to problemer som jeg tenkte jeg skulle få fikset her. #1: ---- Jeg har en innloggings kode som er bassert på flatfile, men som jeg nå skal gjøre om til mysql. Jeg har kommet fram til noe slikt: $query = mysql_query("SELECT navn FROM db") or die(mysql_error()); $brukerdata = $_POST['query']; $query2 = mysql_query("SELECT pass FROM db") or die(mysql_error()); $passorddata = $_POST['query2']; #2: ---- Jeg vil også at folk må logge inn før de kan bruke diverse funksjoner jeg har på siden min, men hvordan gjør jeg dette? Lenke til kommentar
endrebjo Skrevet 12. november 2006 Del Skrevet 12. november 2006 #1: Det er ikke slik du henter ut data av en MySQL-resource. http://no.php.net/manual/en/function.mysql-fetch-array.php I tillegg ser det ut som at du har misforstått MySQL litt. MySQL-tutorial #2: http://no.php.net/manual/en/ref.session.php Lenke til kommentar
Gjest medlem-77217 Skrevet 12. november 2006 Del Skrevet 12. november 2006 #1: Kan du gi meg et forklart eksempel? Ble veldig usikker nå. Å hva mener du med at jeg har missforstått mysql? Jeg har ikke tatt med connectingen til databasen hvis det er det du tenker på... Det har jeg en egen fil for. #2: Takker, ser greit ut. Lenke til kommentar
endrebjo Skrevet 12. november 2006 Del Skrevet 12. november 2006 Det ser ut som at du henter ut tabell fra database. Du skal hente ut kolonne fra tabell. Har du én tabell med to kolonner (bruker og pass) eller to tabeller (bruker og pass) med én kolonne hver? SQL-syntaksen er: SELECT kolonne FROM tabell og for flere kolonner: SELECT kolonne1, kolonne2, kolonne3 FROM tabell Lenke til kommentar
Gjest medlem-77217 Skrevet 12. november 2006 Del Skrevet 12. november 2006 Jeg er helt forvirret nå. La meg prøve å forklare hvordan jeg tror det er. Database -Tabell --Kolonne Så når du har SELECT kolonnen (som da f.eks er pass VARCHAR (1) NOT NULL) FROM tabllen (som da er db). I dette tilfellet har jeg 1 tabell med to kolonner. ----- Men kan du ikke skrive en snurt som henter info fra mysql og sammenligner det med $_POST funksjonen? Hadde satt pris på det. Lenke til kommentar
endrebjo Skrevet 12. november 2006 Del Skrevet 12. november 2006 (endret) Du kalte tabellen for db (database), og kjørte nesten samme spørringen mot databasen to ganger. Derfor begynte jeg å tvile. PHP <?php// Uskadeliggjør brukernavn $username = mysql_real_escape_string($_POST['user']); // Kjør spørring $result = mysql_query("SELECT name, pass FROM db WHERE name = '{$username}' LIMIT 1"); // Hent ut data fra resultatet og lag array av det. $user_data = mysql_fetch_assoc($result); // Hvis passord fra database er lik passord i POST if ($user_data['pass'] === $_POST['pass']) { // LOGG INN } else { // Passord eller brukernavn er feil } ?> Veldig enkel MySQL og PHP hvis man har satt seg inn i bruken av dem. Edit: Men å lagre brukernes passord i klartekst er ikke veldig sikkert. Da kan enten du eller en cracker fort misbruke dem. Selv ville jeg vært så ærlig mot brukerne at jeg hadde både saltet og hashet passordene. Hvis det er et system der flere brukere skal registrere seg da, og ikke bare du. Endret 12. november 2006 av endrebjorsvik Lenke til kommentar
PHPdude Skrevet 12. november 2006 Del Skrevet 12. november 2006 (endret) <?php // henter data fra DB $res = $db->query('SELECT * FROM tabell'); // henter data ut fra DB-resultatet (første raden) $row = $res->fetch_assoc(); // $row er da en array som inneholder alle kolonnene i den første raden // sammenlign med POSTDATA if($row['kolonne'] == $_POST['var']) { // putt hva som helst her } EDIT: var vist ikke rask nok Endret 12. november 2006 av PHPdude Lenke til kommentar
Gjest medlem-77217 Skrevet 12. november 2006 Del Skrevet 12. november 2006 Du kalte tabellen for db (database), og kjørte nesten samme spørringen mot databasen to ganger. Derfor begynte jeg å tvile. PHP <?php// Uskadeliggjør brukernavn $username = mysql_real_escape_string($_POST['user']); // Kjør spørring $result = mysql_query("SELECT name, pass FROM db WHERE name = '{$username}' LIMIT 1"); // Hent ut data fra resultatet og lag array av det. $user_data = mysql_fetch_assoc($result); // Hvis passord fra database er lik passord i POST if ($user_data['pass'] === $_POST['pass']) { // LOGG INN } else { // Passord eller brukernavn er feil } ?> Veldig enkel MySQL og PHP hvis man har satt seg inn i bruken av dem. Edit: Men å lagre brukernes passord i klartekst er ikke veldig sikkert. Da kan enten du eller en cracker fort misbruke dem. Selv ville jeg vært så ærlig mot brukerne at jeg hadde både saltet og hashet passordene. Hvis det er et system der flere brukere skal registrere seg da, og ikke bare du. 7272133[/snapback] Men hvordan crypter jeg passord da? Lenke til kommentar
PHPdude Skrevet 12. november 2006 Del Skrevet 12. november 2006 (endret) $crypted = sha1($password); EDIT: Bare så det er klart snakker vi ikke om kryptering her, men om "hashing". Dette er en ureverserbar prosess i motsetning til kryptert tekst som kan dekrypteres Endret 12. november 2006 av PHPdude Lenke til kommentar
Gjest medlem-77217 Skrevet 13. november 2006 Del Skrevet 13. november 2006 Så da blir det ca: <?php $username = mysql_real_escape_string($_POST['user']); $crypted = sha1($username); $result = mysql_query("SELECT name, pass FROM db WHERE name = '{$crypted}' LIMIT 1"); $user_data = mysql_fetch_assoc($result); if ($user_data['pass'] === $_POST['pass']) { } else { echo "Feil! HAHAHHAHH! DUST!|111"; } ?> <form name="sporring" method="post" action="innlogging.php" enctype="multipart/form-data"> Brukernavn: <input type="text" name="username" maxlength="30"> <br> Passord: <input type="password" name="pass" maxlength="30"> <br> <input type="submit" value="Logg inn"> </form> Lenke til kommentar
PHPdude Skrevet 13. november 2006 Del Skrevet 13. november 2006 Nå blandet du sammen passordet med brukernavnet. Lenke til kommentar
Gjest medlem-77217 Skrevet 13. november 2006 Del Skrevet 13. november 2006 Blir det to mysql_real_escape_string da eller? <?php $password = mysql_real_escape_string($_POST['password']); $crypted = sha1($password); ?> Lenke til kommentar
endrebjo Skrevet 13. november 2006 Del Skrevet 13. november 2006 (endret) Det er unødvendig å hashe brukernavnet. Du trenger ikke å kjøre mysql_real_escape_string() på strenger som ikke skal inn i en databasespørring. Endret 13. november 2006 av endrebjorsvik Lenke til kommentar
Gjest medlem-77217 Skrevet 13. november 2006 Del Skrevet 13. november 2006 Men både brukernavnet å passordet skal jo inn i en databasespørring Og jeg hasher ikke brukernavnet der gjør jeg? Lenke til kommentar
PHPdude Skrevet 13. november 2006 Del Skrevet 13. november 2006 All data som skal inn i en SQL-spørring må escapes, dette er VELDIG viktig, med mindre du er HELT sikker på at den ikke kan inneholde farlige tegn. Men bare passordet skal hashes ja, ikke brukernavnet. Lenke til kommentar
Gjest medlem-77217 Skrevet 13. november 2006 Del Skrevet 13. november 2006 Men hvor skal jeg da plassere crypteringen i denne koden? <?php // Uskadeliggjør brukernavn $username = mysql_real_escape_string($_POST['user']); // Kjør spørring $result = mysql_query(\"SELECT name, pass FROM db WHERE name = '{$username}' LIMIT 1\"); // Hent ut data fra resultatet og lag array av det. $user_data = mysql_fetch_assoc($result); // Hvis passord fra database er lik passord i POST if ($user_data['pass'] === $_POST['pass']) { // LOGG INN } else { // Passord eller brukernavn er feil } ?> Lenke til kommentar
endrebjo Skrevet 13. november 2006 Del Skrevet 13. november 2006 <?php // Uskadeliggjør brukernavn $username = mysql_real_escape_string($_POST['user']); // Kjør spørring $result = mysql_query(\"SELECT name, pass FROM db WHERE name = '{$username}' LIMIT 1\"); // Hent ut data fra resultatet og lag array av det. $user_data = mysql_fetch_assoc($result); // Hvis passord fra database er lik passord i POST if ($user_data['pass'] === sha1($_POST['pass'])) { // LOGG INN } else { // Passord eller brukernavn er feil } ?> Lenke til kommentar
Martin A. Skrevet 13. november 2006 Del Skrevet 13. november 2006 Og passordet som du legger inn i databasen, må selvfølgelig også sha1()-hashes. 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å