Rudde Skrevet 12. november 2008 Del Skrevet 12. november 2008 Hei, sliter litt med å få brukt isset noen steder... I denne koden her: <?php /* Kodet av Kai B. Nilsen Kodet 08.11.2008 Sist oppdadert 11.11.2008 */ include('inc/inc.php'); $pass = sha1($_POST['Passord']); $pass2 = sha1($_POST['Passord2']); $bruker = $_POST['Brukernavn']; $epost = $_POST['Email']; $epost2 = $_POST['Email2']; if (strlen($bruker) > 20) { echo "Brukernavnet kan ikke bestå av mer enn 20 bokstaver/tall!"; }else{ $query = mysql_query("SELECT * FROM `brukere` WHERE `Email` = '".$epost."'") or die(mysql_error()); $lst = mysql_num_rows($query); if(($lst)>=1){ echo "E-post adressen <b><font color=#FF0000>$epost</font></b> er allerede i bruk!<br>"; }else{ $query = mysql_query("SELECT * FROM `brukere` WHERE `Brukernavn`='".$bruker."'") or die(msyql_error()); $sql2 = mysql_num_rows($query); if(($sql2)>= 1) { echo "Brukernavnet <b><font color=#FF0000>$bruker</font></b> er allerede i bruk!<br>"; }else{ if (ereg('[^A-ZÆØ_Åa-zø.æ å0-9-]', $bruker)) { echo "Brukernavn kan bare bestå av tall og bokstaver."; }elseif (!ereg('[^A-ZÆØ_Åa-zæ.ø å0-9-]', $bruker)) { if(isset($bruker)){ if( $epost != $epost2 ) { die( "E-post adressene er ikke like!" ); } if( $pass != $pass2 ) { die( "Passorden er ikke like!" ); } $sql = "INSERT INTO Brukere(Brukernavn, Passord, Email, IP, Registrert, Klokkeslett, Dato, Klokke, Time) VALUES('".$bruker."', '".$pass."', '".$epost."', '".$IP."', '".$dato."', '".$tid."', '".$bdato."', '".$klokke."', '".time()."')"; $query = mysql_query($sql); echo "Registrering Fullført!<br><br>"; echo "<a href=index.php>Til Logg Inn!</a>"; }else{ ?> <form method="POST" action="blimedlem.php"> <table width="270" border="0" cellspacing="0" cellpadding="0"> <tr><td><b>Brukernavn:</b></td> <td><input type="text" name="Brukernavn"/></td></tr> <tr><td><b>Passord:</b></td> <td><input type="password" name="Passord"/></td></tr> <tr><td><b>Bekreft Passord:</b></td> <td><input type="password" name="Passord2"/></td></tr> <tr><td><b>E-post:</b></td> <td><input type="text" name="Email"/></td></tr> <tr><td><b>Bekreft E-post:</b></td> <td><input type="text" name="Email2"/></td></tr> <tr><td><input type="submit" name="Bli Medlem" value="Bli Medlem" /></td></tr> </table> <?php }}}}} ?> Skulle jeg hatt inn if (!$pass || !$login_name || !$email) { $error = "* Please Fill Out All Fields"; } else if (strlen($login_name) < 3) { $error = "Login Name Must Be 3 or More Characters Long"; } else if (!ereg("@", $epost)) { echo "E-post adressen <font color=#FF0000><b>$epost</b></font> er ikke gyldig"; } Lenke til kommentar
Lokaltog Skrevet 12. november 2008 Del Skrevet 12. november 2008 Veldig bra at du opplyser om hva du har problemer med, hvilke feilmeldinger du mottar, hvor du ønsker å plassere koden hen, hva du har prøvd til nå som ikke funker, hvilken PHP-versjon du bruker, osv. Lenke til kommentar
Rudde Skrevet 12. november 2008 Forfatter Del Skrevet 12. november 2008 (endret) XAMPP [php: 5.2.6] bruker jeg xPJeg har prøvd å plassere koden rett under if (strlen($bruker) > 20) { echo "Brukernavnet kan ikke bestå av mer enn 20 bokstaver/tall!"; }else{ :/ prøvd over også... EDIT: 1337 innlegg ^^ Endret 12. november 2008 av Rudde93 Lenke til kommentar
Lokaltog Skrevet 13. november 2008 Del Skrevet 13. november 2008 Kan det være fordi nøkkelordet er "elseif" i PHP, og ikke "else if"? Vet ikke om "else if" gir feil, men du kan jo sjekke det først. Lenke til kommentar
OISNOT Skrevet 13. november 2008 Del Skrevet 13. november 2008 (endret) Kan det være fordi nøkkelordet er "elseif" i PHP, og ikke "else if"? Vet ikke om "else if" gir feil, men du kan jo sjekke det først. Nei. Hele koden er en lang if else { if else { if else { } } } der else er det riktige. if (strlen($bruker) > 20) { echo "Brukernavnet kan ikke bestå av mer enn 20 bokstaver/tall!"; }else{ kan gjøres om til if (strlen($bruker) > 20) { exit("Brukernavnet kan ikke bestå av mer enn 20 bokstaver/tall!"); } fjern else og en } fra slutten av filen. Bør repeteres for de fleste if setningene. Da blir det enklere å sette inn flere vilkår (if setninger) for siden. I tillegg bør du bruke mysql_real_escape_string funksjonen på variabler du skal bruke i sql spørringer. mysql_query("SELECT * FROM `brukere` WHERE `Email` = '" . mysql_real_escape_string($epost) . "'") Du kan også bruke if ((!$epost = filter_input(INPUT_POST, 'Email', FILTER_VALIDATE_EMAIL)) || (!$epost2 = filter_input(INPUT_POST, 'Email2', FILTER_VALIDATE_EMAIL)) || ($epost != $epost2)) { exit('Email is typed incorrectly!'); } Endret 13. november 2008 av OISNOT Lenke til kommentar
Rudde Skrevet 13. november 2008 Forfatter Del Skrevet 13. november 2008 Hva er det mysql_real_escape_string gjør? og hvorfor kan jeg ikke bruke Denne isset'en funker fint: if(isset($bruker)){ if( $epost != $epost2 ) { die( "E-post adressene er ikke like!" ); } if( $pass != $pass2 ) { die( "Passorden er ikke like!" ); } Hvis jeg setter inn den andre koden jeg vil ha inn og bruker isset så det ikke blir satt automatisk så funker det dårlig. :S Lenke til kommentar
ThomasQ Skrevet 13. november 2008 Del Skrevet 13. november 2008 (endret) Kan det være fordi nøkkelordet er "elseif" i PHP, og ikke "else if"? Vet ikke om "else if" gir feil, men du kan jo sjekke det først. Nei, dette gir ikke feil. Det er kun en annen måte å skrive elseif på. Da lærte du noe nytt idag. Trådstarter, prøv denne: Klikk for å se/fjerne spoilerteksten nedenfor <?php /* Kodet av Kai B. Nilsen Kodet 08.11.2008 Sist oppdadert 11.11.2008 */ include('inc/inc.php'); $pass = sha1($_POST['Passord']); $pass2 = sha1($_POST['Passord2']); $bruker = $_POST['Brukernavn']; $epost = $_POST['Email']; $epost2 = $_POST['Email2']; if (strlen($bruker) > 20) { echo "Brukernavnet kan ikke bestå av mer enn 20 bokstaver/tall!"; } else if (!$pass || !$login_name || !$email) { $error = "* Please Fill Out All Fields"; } else if (strlen($login_name) < 3) { $error = "Login Name Must Be 3 or More Characters Long"; } else if (!ereg("@", $epost)) { echo "E-post adressen <font color=#FF0000><b>$epost</b></font> er ikke gyldig"; } else { $query = mysql_query("SELECT * FROM `brukere` WHERE `Email` = '".$epost."'") or die(mysql_error()); $lst = mysql_num_rows($query); if(($lst)>=1){ echo "E-post adressen <b><font color=#FF0000>$epost</font></b> er allerede i bruk!<br>"; }else{ $query = mysql_query("SELECT * FROM `brukere` WHERE `Brukernavn`='".$bruker."'") or die(msyql_error()); $sql2 = mysql_num_rows($query); if(($sql2)>= 1) { echo "Brukernavnet <b><font color=#FF0000>$bruker</font></b> er allerede i bruk!<br>"; }else{ if (ereg('[^A-ZÆØ_Åa-zø.æ å0-9-]', $bruker)) { echo "Brukernavn kan bare bestå av tall og bokstaver."; }elseif (!ereg('[^A-ZÆØ_Åa-zæ.ø å0-9-]', $bruker)) { if(isset($bruker)){ if( $epost != $epost2 ) { die( "E-post adressene er ikke like!" ); } if( $pass != $pass2 ) { die( "Passorden er ikke like!" ); } $sql = "INSERT INTO Brukere(Brukernavn, Passord, Email, IP, Registrert, Klokkeslett, Dato, Klokke, Time) VALUES('".$bruker."', '".$pass."', '".$epost."', '".$IP."', '".$dato."', '".$tid."', '".$bdato."', '".$klokke."', '".time()."')"; $query = mysql_query($sql); echo "Registrering Fullført!<br><br>"; echo "<a href=index.php>Til Logg Inn!</a>"; }else{ ?> <form method="POST" action="blimedlem.php"> <table width="270" border="0" cellspacing="0" cellpadding="0"> <tr><td><b>Brukernavn:</b></td> <td><input type="text" name="Brukernavn"/></td></tr> <tr><td><b>Passord:</b></td> <td><input type="password" name="Passord"/></td></tr> <tr><td><b>Bekreft Passord:</b></td> <td><input type="password" name="Passord2"/></td></tr> <tr><td><b>E-post:</b></td> <td><input type="text" name="Email"/></td></tr> <tr><td><b>Bekreft E-post:</b></td> <td><input type="text" name="Email2"/></td></tr> <tr><td><input type="submit" name="Bli Medlem" value="Bli Medlem" /></td></tr> </table> <?php } } } } } ?> Klikk for å se/fjerne spoilerteksten nedenfor Endret 13. november 2008 av ThomasQ Lenke til kommentar
Rudde Skrevet 13. november 2008 Forfatter Del Skrevet 13. november 2008 ThomasQ Takk for svar men den fungerte desverre ikke.. BTW skal egentlig være echo isetdefor $error = men fungerte ikke med echo heller neste som står på skjermen er * Please Fill Out All Fields Lenke til kommentar
ThomasQ Skrevet 13. november 2008 Del Skrevet 13. november 2008 (endret) ThomasQ Takk for svar men den fungerte desverre ikke.. BTW skal egentlig være echo isetdefor $error = men fungerte ikke med echo heller neste som står på skjermen er * Please Fill Out All Fields $login_name $email Er ikke definert i koden din. Det som er feil, vil jeg tro. Endret 13. november 2008 av ThomasQ Lenke til kommentar
Rudde Skrevet 13. november 2008 Forfatter Del Skrevet 13. november 2008 Ja endra det å. Lenke til kommentar
Wackamole Skrevet 13. november 2008 Del Skrevet 13. november 2008 kan du si hvilke feilmeldinger som kommer opp, og om error reporting står på i serveren? Lenke til kommentar
Rudde Skrevet 14. november 2008 Forfatter Del Skrevet 14. november 2008 Det er ingen feilmeling.. det er bare en hvit skjerm... 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å