rmrf Skrevet 21. oktober 2004 Del Skrevet 21. oktober 2004 (endret) Er det noen bedre måte å lage et registreringsskjema på? registreringsskjema1 -- hvis fyllt ut { skriv $_POST[data] til database lage cookie med md5(brukernavn, passord) header(neste side) } else { header(samme side) } registreringsskjema2 -- hvis cookie med md5(brukernavn og passord) == fra database md5(brukernavn, passord) og få id hvis fyllt ut { hente $_POST[data] skriv info til database hvor id lage ny cookie med md5(brukernavn, passord) header(neste side) } else { header(samme side) } Endret 21. oktober 2004 av rmrf Lenke til kommentar
Lokaltog Skrevet 21. oktober 2004 Del Skrevet 21. oktober 2004 (endret) Tja. En bedre måte måtte vel være å bruke PHP-syntaks/funksjoner. Bortsett fra det kan jeg ikke skjønne hvordan du kan påstå at det scriptet der er så fryktelig tungvint/usikkert. Til sammenlikning har jeg ~400 linjer i registrerings/loginscriptet jeg bruker på unrealized.org, så ikke klag! Prøv å skrive scriptet, så finner du fort ut hvor eventuelle feil og mangler oppstår. Endret 21. oktober 2004 av Lokaltog Lenke til kommentar
rmrf Skrevet 21. oktober 2004 Forfatter Del Skrevet 21. oktober 2004 Ok, ville bare legge en liten plan før jeg gikk i gang Lenke til kommentar
shagg0r Skrevet 21. oktober 2004 Del Skrevet 21. oktober 2004 bruk sessionsB> cookies burde vært forbudt Lenke til kommentar
rmrf Skrevet 22. oktober 2004 Forfatter Del Skrevet 22. oktober 2004 (endret) Her følger registeringsskjemaet. Kom gjerne med endringer/forbedringer! step1.php ----------- <? //hvis submit-knappen er trykket if ($_POST['step1'] == 1) { //starter session session_start(); //hvis brukeren allerede har registrert step1 //if ($_SESSION['step1'] == 1) { die(header("location: error.php?error=registered")); } $username = $_POST['username']; $password = $_POST['password']; $retype_password = $_POST['retype_password']; $errors = "0"; //kobler til database include('db_connect.inc'); //hvis username er skrevet inn og ikke finnes i db if ($username || strlen($username) < 5) { $username_used = @mysql_query("SELECT username FROM registration WHERE username='$username'") or die(header("location: error.php?error=dbfail")); //hvis username finnes i databasen if (!mysql_num_rows($username_used) == 0) { $errors++; } } else { $errors++; } //hvis passordet er skrevet inn og er likt med retyped og er over 6 bokstaver if (!$password || $password != $retype_password || strlen($password) < 6) { $errors++; } //hvis ingen errorer er funnet if ($errors == 0) { //legger til brukernavn og md5-enkrypta passord i en session $encrypt_password = md5($password); $_SESSION['step1user'] = $username; $_SESSION['step1pass'] = $encrypt_password; //skriver til database @mysql_query("INSERT INTO registration (username, password, encrypt_password) VALUES ('$username', '$password', '$encrypt_password')") or die(header("location: error.php?error=dbfail")); $_SESSION['step1'] = 1; header("location: step2.php"); } mysql_close($connection); } ?> <!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>Step 1</title> <meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <form name="step1" action="<? echo $PHP_SELF;?>" method="post"> <input type="hidden" name="step1" value="1" /> <!-- Username og password --> <div> Username: <input type="text" name="username" maxlength="20" size="20" value="<?echo $_POST['username'];?>" /> </div> <div> Password: <input type="password" name="password" maxlength="20" size="20" /> Re-type password: <input type="password" name="retype_password" maxlength="20" size="20" /> </div> <!-- Submitknapp --> <div><br /> <input value="next >>" type="submit" name="submit" /> </div> </form> </body> </html> step2.php ----------- <? //hvis submit-knappen er trykket if ($_POST['step2'] == 1) { session_start(); //kobler til database include('db_connect.inc'); $errors = "0"; $country = $_POST['country']; if ($_SESSION['step1user'] && $_SESSION['step1pass']) { //henter username og password fra sessions $sess_username = $_SESSION['step1user']; $sess_password = $_SESSION['step1pass']; //sjekker om det er samme bruker $db_data = @mysql_fetch_array(mysql_query("SELECT id, username, encrypt_password FROM registration WHERE username='$sess_username' AND encrypt_password='$sess_password'")) or die(header("location: error.php?error=dbfail")); $db_id = $db_data[id]; if (!$db_id > 0) { die(header("location: error.php?error=session")); } } else { die(header("location: error.php?error=unknown")); } //hvis country er skrevet inn if (!$country) { $errors++; } //hvis ingen errorer er funnet if ($errors == 0) { //skriver til database @mysql_query("UPDATE registration SET country='$country' WHERE id=$db_id") or die(header("location: error.php?error=dbfail")); header("location: step3.php"); } mysql_close($connection); } ?> <!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>Step 2</title> <meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <form name="step1" action="<? echo $PHP_SELF;?>" method="post"> <input type="hidden" name="step2" value="1" /> <!-- Username og password --> <div> Country: <input type="text" name="country" maxlength="20" size="20" value="<?echo $_POST['country'];?>" /> </div> <!-- Submitknapp --> <div><br /> <input value="next >>" type="submit" name="submit" /> </div> </form> </body> </html> Endret 22. oktober 2004 av rmrf Lenke til kommentar
Lokaltog Skrevet 22. oktober 2004 Del Skrevet 22. oktober 2004 bruk sessionsB> cookies burde vært forbudt Kan du grunngi den svevende påstanden din? Jeg vil gjerne vite nøyaktig hvorfor cookies er så ille. 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å