Avatar billede detziaw Nybegynder
02. april 2012 - 01:21 Der er 6 kommentarer og
1 løsning

Fejl i loginsystem

Hej eksperten.

Efter at have fået hjælp med at gå i gang med mit loginsystem her (http://www.eksperten.dk/spm/960404), har jeg nu besluttet mig for at begynde og tage funktionerne lidt af gangen.
Jeg er i gang med det basale, og få selve login-processen til at virke, men den bliver ved med at sende mig til fejl.php og jeg kan simpelthen ikke se hvordan den gør der.

Min loginform ser således ud:

<form name="form1" method="post" action="checklogin.php">
<strong>Login side</strong><br />
<br />
Brugernavn:<br />
<input name="brugernavn" type="text" id="brugernavn"><br/>
<br />
Password
<input name="brugernavn" type="text" id="brugernavn"><br />
<br />
<input type="submit" name="Submit" value="Login">
</form>

Den sender så videre til checklogin.php som ser sådan her ud:

// Forbind til databasen.
$mysqli = new mysqli("$host", "$brugernavn", "$kodeord", "$database");

// Kontroller om forbindelsen fejlede.
if (mysqli_connect_errno()) {
    echo 'Der opstod en fejl ved forbindelsen: ' . mysqli_connect_error();
    exit();
}
// Definerer brugernavn og kodeord.
$brugernavn=$_POST['brugernavn'];
$kodeord=$_POST['kodeord'];

// Krypterer kodeordet.
$krypter_kodeord=md5($kodeord);

// Beskyttelse mod MySQL injection.
$brugernavn = stripslashes($brugernavn);
$kodeord = stripslashes($kodeord);
$brugernavn = mysql_real_escape_string($brugernavn);
$kodeord = mysql_real_escape_string($kodeord);

$sql="SELECT * FROM $tabel WHERE brugernavn='$brugernavn' AND kodeord='$krypter_kodeord'";
$result=mysql_query($sql);

// Tæller rækker med førnævnte kriterier.
// Dette skulle meget gerne give 1,
// da brugernavn og kodeord helst ikke skal have kopier.
$count=mysql_num_rows($result);

// Kontrollerer om resultatet blev 1.
if($count==1){
// Registrerer $brugernavn og $kodeord og sender brugeren videre til login_success.php
session_register("brugernavn");
session_register("kodeord");
header("location:login_success.php");
}
else {
header("location:fejl.php");
}
ob_end_flush();
?>

Nogen der kan fortælle mig hvorfor den bliver ved med at sende til fejl.php?

OBS! Jeg er klar over jeg ikke har optimeret ALLE koderne med Prepared Statements MySQLI, men jeg er stærkt igang med at kode det ind på hukommelsen ;-)

Mvh. Martin
Avatar billede tobrukDk Novice
02. april 2012 - 01:34 #1
Prøve kigge på den her ; den er ikke updater til mysqli :)

http://www.eksperten.dk/guide/1491
Avatar billede detziaw Nybegynder
02. april 2012 - 02:44 #2
Har prøvet at kigge, men der er også fejl i de koder, så det ikke virker. Måske kan du hjælpe, da det jo er dit script?

Når jeg prøver at logge ind, får jeg følgende fejl:
Parse error: syntax error, unexpected T_ELSE in /var/www/passionate.dk/public_html/login2/loginscript.php on line 14

Scriptet er magen til din guide's.
Avatar billede chriz7913 Nybegynder
02. april 2012 - 03:54 #3
Problemet er at din SQL-forespørgsel ikke returnerer nogen brugere. Du bør gøre det til en vane at bruge 'or die' så længe du arbejder i MySQL og er igang med at udvikle, så du kan få vist eventuelle fejl der skulle være i din forespørgsel.
Prøv at rette:
$result=mysql_query($sql);

til:
$result=mysql_query($sql) or die(mysql_error());


Den eneste fejl jeg lige kan se, er at du har en malplaceret '$tabel' i din forespørgsel. Du bør nok enten ændre dette til tabellens navn eller definere tabellens navn i variablen et sted :)
Avatar billede mediman Nybegynder
02. april 2012 - 06:47 #4
Du har samme name og id i Brugernavn og Password.

Brugernavn:<br />
<input name="brugernavn" type="text" id="brugernavn"><br/>
<br />
Password
<input name="brugernavn" type="text" id="brugernavn"><br />
Avatar billede olebole Juniormester
02. april 2012 - 12:41 #5
<ole>

@chriz7913: Det er en rigtig dårlig vane, du prøver at pushe i #3. Prøv at læse denne guide  *o)

@detziaw: Foreløbig har du overhovedet ikke skrevet noget af denne kode i prepared statements - men fejlen ligger i din HTML

/mvh
</bole>
Avatar billede detziaw Nybegynder
02. april 2012 - 13:26 #6
#3 Da jeg rettede den linje gav det mig en hel masse fejl. Dem har jeg nu rettet :-)

#4 Ja det er helt korrekt, det gik vidst lidt for stærkt :-D Dog sender den mig stadig videre til fejl.php efter det er rettet.

#5 Tja kun lige forbindelsen til serveren har jeg lavet om, og nu også min select og while er i mysqli ;) Langsomt men sikkert.
Hvis du siger fejlen ligger i min HTML, er det så andet end det #4 har foreslået?
Avatar billede olebole Juniormester
02. april 2012 - 13:33 #7
Nej, det var fejlen i #4, jeg havde i tankerne. Prøv at echo'e din SQL og se, om værdierne passer med noget i databasen:

$sql="SELECT * FROM $tabel WHERE brugernavn='$brugernavn' AND kodeord='$krypter_kodeord'";

echo $sql;
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