Avatar billede teck Nybegynder
25. oktober 2003 - 14:24 Der er 10 kommentarer og
1 løsning

Login script

Hej,

Jeg har nedstående stykke kode, som skal gå ind i min database og tjekke om en bruger og vedkommens password er som det skal være, før man bliver lukket ind! Problemet er bare, at koden ikke går ind og tjekker passwordet, når man først har det rigtige brugernavn, og den logger derfor folk automatisk ind! Håber der er en der kan se fejlen, for det kan jeg ikke. Her er koden:

<?
include("forum_config.php");
con_db();
$query = mysql_query("SELECT brugernavn,password FROM gw_brugere WHERE brugernavn='$brugernavn' AND password='$password'");
$antal = mysql_num_rows($query);

if($antal == 0) {
header("Location: index.php?page=fejl&fejl=login");
}

else
{
if ($_POST[auto] == "ok") {
setcookie("brugernavn", "$brugernavn", time()+1209600);
setcookie("password", "$password", time()+1209600);
session_start();
session_register("brugernavn");
session_register("password");
con_db();
$query = mysql_query("SELECT logins FROM gw_brugere WHERE brugernavn='$brugernavn' AND password='$password'");
while($row = mysql_fetch_array($query)) {
$logon1 = $row[logins] + 1;

mysql_query("update gw_brugere set logins = '$logon1' where brugernavn = '$brugernavn' and password = '$password'") or die(mysql_error());
header("Location: index.php?test=$brugernavn");
}

}


    session_start();
    session_register("brugernavn");
    session_register("password");
con_db();
$query = mysql_query("SELECT logins FROM gw_brugere WHERE brugernavn='$brugernavn' AND password='$password'");
while($row = mysql_fetch_array($query)) {
    $logon1 = $row[logins] + 1;



mysql_query("update gw_brugere set logins = '$logon1' where brugernavn = '$brugernavn' and password = '$password'") or die(mysql_error());
    header("Location: index.php");
}
}
?>
Avatar billede cwb Nybegynder
28. oktober 2003 - 09:15 #1
Det skyldes at mysql_num_rows retunerer 1 selvom der ikke er nogen poster der matcher. Det du istedet kan gøre er enten at checke om query'en retunerer et brugernavn eller du kan lave en count og se om denne er større end 0.
Avatar billede xited Praktikant
28. oktober 2003 - 09:30 #2
if(mysql_num_rows($query)==0){}else{}
Avatar billede teck Nybegynder
28. oktober 2003 - 11:34 #3
har selv fundet løsningen, men tak for forslagende :)
Avatar billede xited Praktikant
28. oktober 2003 - 11:50 #4
Vil gerne se den løsning der ikke falder ind under mit og cwb's svar...

Hvis du ikke kommer med en sådan, kontakter jeg en coadmin..
Avatar billede teck Nybegynder
28. oktober 2003 - 11:53 #5
Jeg fandt frem til at bruge følgende if sætning:

if(mysql_num_rows($tjek) != 0) {
Avatar billede xited Praktikant
28. oktober 2003 - 11:56 #6
Det samme som jeg har skrevet...

Lav venligst et nyt spm, hvor du giver mig og cwb 15 point hver...
Avatar billede teck Nybegynder
28. oktober 2003 - 11:58 #7
ok, jeg har godt nok ikke brugt det i har forslået! Men jeg er fair, hvad skal jeg kalde spmet?
Avatar billede xited Praktikant
28. oktober 2003 - 12:10 #8
if(mysql_num_rows($tjek) != 0) {

if(mysql_num_rows($query)==0){}else{}

Den eneste forskel på de 2 ovenstående er at den øverste afvikler "fejlen" i første {} or den nederste omvendt...

Du kan oprette et spm der hedder "point til cwd og xited"
Avatar billede teck Nybegynder
28. oktober 2003 - 12:13 #9
der kan man bare se, jeg opretter spm
Avatar billede xited Praktikant
28. oktober 2003 - 12:41 #10
et link ville være dejligt...
Avatar billede teck Nybegynder
28. oktober 2003 - 12:43 #11
http://www.eksperten.dk/spm/419812 Forklar lige hvordan jeg deler pointene inde på spmet
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
Computerworld tilbyder specialiserede kurser i database-management

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