Avatar billede vKildevand Nybegynder
13. april 2011 - 18:04 Der er 4 kommentarer og
1 løsning

"Fejl på linje 30".

Hey fokz!

Jeg er ved at programmere et lille opretsystem. :-)

Godt, jeg har følgende kode:


<form method="POST">
Brugernavn: <input type="text" style="backgrund-color: blue;" name="brugernavn">

Kodeord: <input type="pass" style="backgrund-color: blue;" name="kodeord">

Kodeord igen:<input type="pass" style="backgrund-color: blue;" name="kodeordigen">

E-mail: <input type="text" style="backgrund-color: blue;" name="email">

<input type="submit" value="Opret bruger">
</form>
<?
$brugernavn = mysql_real_escape_string($_POST['brugernavn']);
$kodeord = mysql_real_escape_string(md5($_POST['kodeord']));
$kodeordigen = mysql_real_escape_string(md5($_POST['kodeord']));
$email = mysql_real_escape_string($_POST['email']);

if (empty($brugernavn))
{
echo "Du har ikke skrevet et brugernavn - prøv igen.";
}
elseif (!$kodeord == $kodeordigen)
{
echo "De to kodeord du har angivet, er <b>ikke</b> de samme - prøv igen";
}
elseif (empty($email))
{
echo "Du har ikke skrevet en e-mail - prøv igen.";
}
elseif (empty ($kodeord))
{
echo "Du har ikke skrevet en kode - prøv igen.";
}
elseif (mysql_query(SELECT * FROM brugere WHERE brugernavn = ."$brugernavn")) == 1;
{
echo "Brugernavnet findes allerede - find et nyt, og prøv igen.";
}
else
{
echo "Din bruger er nu oprettet, og du er klar til at logge ind.";
mysql_query ("INSERT INTO brugere (`brugernavn`, `kodeord`, `email`) VALUES (`$brugernavn`, `$kodeord`, `$email`)") or die(mysql_error());
}
?>

Og min linje 30 - elseif (mysql_query(SELECT * FROM brugere WHERE brugernavn = ."$brugernavn")) == 1; - er der fejl i. Ja, jeg har { og } på, som I kan se i selve koden, meeeeen .. hvordan pokker laver man lige sådan et check? Vil gerne have hjælp til det, hvis det er muligt
Avatar billede iver_mo Nybegynder
13. april 2011 - 19:23 #1
så vidt jeg kan se afslutter du ikke din elseif(). Din hedder elseif() == 1;
Avatar billede danco Nybegynder
13. april 2011 - 19:42 #2
Noget helt andet andet, du kan slet ikke bruge mysql forespørgsler på den der måde.

du kunne evt prøve med følgende i stedet, men det kræver lidt mere end en enkelt linje.

function userExists($username){
$result = false;
$sql = "SELECT id FROM brugere WHERE brugernavn='".$username."'";
$result = mysql_query($sql) or die(mysql_error());
$count = mysql_num_rows($result);
if($count != 1) {
$result = true;
}
return $result;
}

så ledes kan du gøre følgende følgende:

elseif ( userExists($brugernavn) ) {
echo 'Brugernavnet er taget';
}

Al kode er utestet og hurtigt skrevet, så undskyld for evt. fejl :)
Avatar billede olsensweb.dk Ekspert
13. april 2011 - 22:16 #3
som danco skriver vil det være en god ide at lave en function der tester om brugernavnet er optaget, dog skal du have en database connection med over, da scopet inde i functionen ikke kan se uden for functionen

jeg har prøvet at omskrive dir eks lidt (utested), så ser brugeren alle de ting der er galt

<?php $brugernavn = mysql_real_escape_string($_POST['brugernavn']);
$kodeord = mysql_real_escape_string(md5($_POST['kodeord']));
$email = mysql_real_escape_string($_POST['email']);

$error = 0;
if($_POST['kodeord'] != $_POST['kodeordigen']){
    echo "De to kodeord du har angivet, er <b>ikke</b> de samme - prøv igen";
    $error =1;
}
if (empty ($kodeord)){
    echo "Du har ikke skrevet en kode - prøv igen.";
    $error =1;
}
if (empty($brugernavn)){
    echo "Du har ikke skrevet et brugernavn - prøv igen.";
    $error =1;
}
$sql = "SELECT id FROM brugere WHERE brugernavn='".$username."'";
$result = mysql_query($sql) or die(mysql_error());
$count = mysql_num_rows($result);
if($count){
    echo "Brugernavnet findes allerede - find et nyt, og prøv igen.";
    $error=1;
}
if(!$error){
    $sql ="INSERT INTO brugere (`brugernavn`, `kodeord`, `email`) VALUES (`$brugernavn`, `$kodeord`, `$email`)";
    mysql_query ($sql) or die(mysql_error());
    echo "Din bruger er nu oprettet, og du er klar til at logge ind.";
}
?>

nb: lad være med at bruge short open tag, det er pr default slået fra på mange servere
http://dk2.php.net/manual/en/ini.core.php#ini.short-open-tag
Avatar billede vKildevand Nybegynder
29. april 2011 - 12:38 #4
Problemet er netop fikset.

Dog ikke med jeres hjælp - ellers tak.

Lukket.
Avatar billede vKildevand Nybegynder
29. april 2011 - 12:38 #5
Lukket! Hov :P
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester