sjotto Skrevet 3. august 2008 Del Skrevet 3. august 2008 (endret) Jeg har nå suttet omtrent en dag å prøvd å lage et vellykket registrerings script til hjemmesiden min. Men jeg får det ikke til å funke, når jeg trykker på submit så funker ingen ting. Og så lurer jeg på om det finnes noe anna rart der. Gammel Kode <?php include "db_kobling.php"; function validemail($address) { return preg_match("/^[a-zA-Z_\\-][\\w\\.\\-_]*[a-zA-Z0-9_\\-]@[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-zA-Z\\.]*[a-zA-Z]$/i", $address); } if ($_SESSION['brukernavn'] == 1){ header("location:innlogga.php"); }else{ if(isset($HTTP_GET_VARS['submit'])){ //Hente fra Form $brukernavn = $_POST['brukernavn']; $passord = $_POST['passord']; $epost = $_POST['epost']; $epost2 = $_POST['epost2']; //sikkerhet $brukernavn = stripslashes($brukernavn); $passord = stripslashes($passord); $epost = stripslashes($epost); $epost2 = stripslashes($epost2); //sikkerhet $brukernavn = mysql_real_escape_string($brukernavn); $passord = mysql_real_escape_string($passord); $epost = mysql_real_escape_string($epost); $epost2 = mysql_real_escape_string($epost2); //lengde brukernavn og passord if (strlen($brukernavn) > 3){ echo "Brukernavnet må være større enn 3 tegn"; exit(); }elseif (strlen($brukernavn) < 20){ echo "Brukernavnet må være mindre enn 20 tegn"; exit(); } if (strlen($passord) > 3){ echo "Passordet ditt må være større enn 3 tegn"; exit(); }elseif (strlen($passord) < 15){ echo "Passordet ditt må være mindre enn 15 tegn"; exit(); } //Sjekke om E-post og epost2 er like if ($epost != $epost2){ echo "e-post addressene passer ikke"; exit(); } //validere mail if (validemail($epost)){ }else{ echo "Ugyldig E-post"; exit(); } //sjekk om brukernavn og epost er registret $sql_epost_sjekk = mysql_query("SELECT epost FROM brukere WHERE epost='$epost'"); $sql_brukernavn_sjekk = mysql_query("SELECT brukernavn FROM brukere WHERE brukernavn='$brukernavn'"); $epost_sjekk = mysql_num_rows($sql_epost_sjekk); $brukernavn_sjekk = mysql_num_rows($sql_brukernavn_sjekk); if(($epost_sjekk > 0) || ($brukernavn_sjekk > 0)){ echo "Det har oppstått en feil..<br />"; if($epost_sjekk > 0){ echo "Eposten er allerede registrert!"; exit(); unset($epost); } if($brukernavn_sjekk > 0){ echo "Brukernavnet er allerede i bruk!"; exit(); unset($brukernavn); } } $reg = mysql_query("INSERT INTO 'brukere' ('id', 'brukernavn', 'passord', 'epost', 'ip', 'registrert') VALUES ('', '$brukernavn', '$passord', '$epost')"); if ($reg){ echo "Du er registrert"; } }else{ ?> <table style="width:300px"> <form name="form1" method="post" action="registrer.php"> <tr><th colspan="2">Registrer</th></tr> <tr> <td>Brukernavn:</td> <td><input name="brukernavn" type="text" /></td> </tr> <tr> <td>Passord:</td> <td><input name="passord" type="text" /></td> </tr> <tr> <td>Epost:</td> <td><input name="epost" type="text" /></td> </tr> <tr> <td>Gjenta Epost:</td> <td><input name="epost2" type="text" /></td> </tr> <tr><td colspan="2"><input name="submit" type="submit" value="Regsitrer" /></td></tr> </form> </table> <?php } } ?> NY Kode <?php include "db_kobling.php"; function validemail($address) { return preg_match("/^[a-zA-Z_\\-][\\w\\.\\-_]*[a-zA-Z0-9_\\-]@[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-zA-Z\\.]*[a-zA-Z]$/i", $address); } if ($_SESSION['brukernavn'] == 1){ header("location:innlogga.php"); }else{ if(isset($_POST['submit'])){ //Hente fra Form $brukernavn = $_POST['brukernavn']; $passord = $_POST['passord']; $epost = $_POST['epost']; $epost2 = $_POST['epost2']; //sikkerhet $brukernavn = stripslashes($brukernavn); $passord = stripslashes($passord); $epost = stripslashes($epost); $epost2 = stripslashes($epost2); //sikkerhet $brukernavn = mysql_real_escape_string($brukernavn); $passord = mysql_real_escape_string($passord); $epost = mysql_real_escape_string($epost); $epost2 = mysql_real_escape_string($epost2); //lengde brukernavn og passord if (strlen($brukernavn) < 3){ echo "Brukernavnet må være større enn 3 tegn"; exit(); }elseif (strlen($brukernavn) > 20){ echo "Brukernavnet må være mindre enn 20 tegn"; exit(); } if (strlen($passord) < 3){ echo "Passordet ditt må være større enn 3 tegn"; exit(); }elseif (strlen($passord) > 15){ echo "Passordet ditt må være mindre enn 15 tegn"; exit(); } //Sjekke om E-post og epost2 er like if ($epost != $epost2){ echo "e-post addressene passer ikke"; exit(); } //validere mail if (validemail($epost)){ }else{ echo "Ugyldig E-post"; exit(); } //sjekk om brukernavn og epost er registret $sql_epost_sjekk = mysql_query("SELECT epost FROM brukere WHERE epost='$epost'"); $sql_brukernavn_sjekk = mysql_query("SELECT brukernavn FROM brukere WHERE brukernavn='$brukernavn'"); $epost_sjekk = mysql_num_rows($sql_epost_sjekk); $brukernavn_sjekk = mysql_num_rows($sql_brukernavn_sjekk); if(($epost_sjekk > 0) || ($brukernavn_sjekk > 0)){ echo "Det har oppstått en feil..<br />"; if($epost_sjekk > 0){ echo "Eposten er allerede registrert!"; exit(); unset($epost); } if($brukernavn_sjekk > 0){ echo "Brukernavnet er allerede i bruk!"; exit(); unset($brukernavn); } } $reg = mysql_query("INSERT INTO 'brukere' ('brukernavn', 'passord', 'epost', 'ip') VALUES ('', '$brukernavn', '$passord', '$epost')"); if ($reg){ echo "Du er registrert"; } }else{ ?> <table style="width:300px"> <form name="form1" method="post" action="registrer.php"> <tr><th colspan="2">Registrer</th></tr> <tr> <td>Brukernavn:</td> <td><input name="brukernavn" type="text" /></td> </tr> <tr> <td>Passord:</td> <td><input name="passord" type="text" /></td> </tr> <tr> <td>Epost:</td> <td><input name="epost" type="text" /></td> </tr> <tr> <td>Gjenta Epost:</td> <td><input name="epost2" type="text" /></td> </tr> <tr><td colspan="2"><input name="submit" type="submit" value="Regsitrer" /></td></tr> </form> </table> <?php } } ?> Hva er feilen der, når jeg trykker submit kommer det bare opp blankt skjerm, ingen ting er skrevt inn i databasen heller. Endret 9. august 2008 av sjotto Lenke til kommentar
Per Kristian Skrevet 3. august 2008 Del Skrevet 3. august 2008 Hva kommer opp på skjermen når du trykker submit? Lenke til kommentar
grimjoey Skrevet 3. august 2008 Del Skrevet 3. august 2008 han får antagelig opp formen på nytt. if(isset($HTTP_GET_VARS['submit'])){ denne linjen vil aldri bli sann. når du poster et form får php post variabler. denne linjen ser etter get variabler. dessuten er $HTTP_GET_VARS og $HTTP_POST_VARS gammelt og uforetrukket. endre til if (isset($_POST['submit'])) { Lenke til kommentar
nree Skrevet 4. august 2008 Del Skrevet 4. august 2008 Du setter id i spørringen til '' ? Selv foretrekker jeg å lage spørringene mer oversiktelig (og kanskje mer feil, det vet jeg ikke). Som f.eks. denne: INSERT INTO tabell SET felt1='$felt1', felt2='$felt2', felt3='$felt3'; Lenke til kommentar
Harald B Skrevet 4. august 2008 Del Skrevet 4. august 2008 Du har en del feil: if (strlen($brukernavn) > 3){ echo "Brukernavnet må være større enn 3 tegn"; exit(); }elseif (strlen($brukernavn) < 20){ echo "Brukernavnet må være mindre enn 20 tegn"; exit(); } Her skal vel alle sammenligninger være motsatt. Det samme gjelder der du sjekker lengden av passord. $reg = mysql_query("INSERT INTO 'brukere' ('id', 'brukernavn', 'passord', 'epost', 'ip', 'registrert') VALUES ('', '$brukernavn', '$passord', '$epost')"); Denne spørringen vil feile pga at 'ip' og 'registrert' ikke får noen verdi. Dessuten er vel 'id' autoinkrementert? ingen vits i å angi den. En siste ting å pirke på er at bruk av tabeller i layouten er utgått på dato. Du bør heller benytte css. Lenke til kommentar
nree Skrevet 4. august 2008 Del Skrevet 4. august 2008 (endret) Tabeller for tabulært innhold er ikke gått ut på dato, derimot å bruke det til oppsett av design er utgått på dato. Endret 4. august 2008 av Goggen90 Lenke til kommentar
sjotto Skrevet 9. august 2008 Forfatter Del Skrevet 9. august 2008 Jeg bruker CSS i designet mitt, men må bruke tabbeller til for eks en registreringsform Lenke til kommentar
sjotto Skrevet 10. august 2008 Forfatter Del Skrevet 10. august 2008 N_oen som kan hjelpe meg Lenke til kommentar
Martin A. Skrevet 10. august 2008 Del Skrevet 10. august 2008 Blank skjerm indikerer ofte at 'du' skjuler feilmeldinger. Legg dette øverst i scriptet, og se hva som skjer da. ini_set( 'display_errors', 1 ); error_reporting( E_ALL ); Lenke til kommentar
sjotto Skrevet 11. august 2008 Forfatter Del Skrevet 11. august 2008 mysql_query("INSERT INTO 'brukere' (id, brukernavn, passord, epost, ip, registert)VALUES('', '$brukernavn', '$passord', '$epost', 'Ingen', 'Ingen')") or die ("Feil"); Er det noen feil med de nne Lenke til kommentar
Martin A. Skrevet 12. august 2008 Del Skrevet 12. august 2008 Istede for die("feil"), kan du jo bruke die(mysql_error()). 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å