Gå til innhold

Problem med å få til isset i reg system


Anbefalte innlegg

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
Videoannonse
Annonse

XAMPP

[php: 5.2.6] bruker jeg xP

Jeg 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 av Rudde93
Lenke til kommentar
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 av OISNOT
Lenke til kommentar

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
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 av ThomasQ
Lenke til kommentar
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 av ThomasQ
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...