20. juli 2005 - 11:18Der er
5 kommentarer og 1 løsning
Er min Login funktion rigtig nok ?
Jeg har lavet en login funktion, for førstegang selv, før i tiden har jeg bare genbrugt en jeg fik af en i året 2000. Nu har jeg så forsøgt mig selv for også at lære det !
Jeg har lavet nedenstående kode er den rigitg nok lavet ?
Jeg kan ikke få den til at skrive "Du er ikke logget ind" Howcome ?
<? If (isset($Quicklogin)) { /* Validate of user */ $database = mysql_connect("localhost", "user", "password"); mysql_select_db("database", $database); $user = mysql_query("select * from userlogin where Username = '$Username'"); $userarray = mysql_fetch_assoc($user); $usercount = mysql_num_rows($user); If ($usercount >= 1) { $row = 1; do { If ($Username == $userarray['Username'] and $Password == $userarray['Password']) {echo "Du er logget ind";} else {echo "Du er ikke logget ind";} } while ($row <= $Usercount); $row++ ;} else {};} ?>
I bund og grund handler det om ' tegnet, som skaber problemer hvis det indgår i tekster som bruges sammen med sql-sætninger.
Tag f.eks denne sætning: "insert into enTabel(tekstKolonne) values ('tekst med ' tegnet')"
Databaser ved ikke hvor teksten slutter. Det kan så bruges til at "hacke" et login. Forstil dig at en bruger skriver dette som input: username: "" (ingenting) password: " ' or '2'='2"
Med mit eks bliver sql-sætningen til: "select * from userlogin where Username = '' and Password = ' ' or '2'='2'"
Denne sql henter ALLE rækker i tabellen, og derfor bliver en bruger logget ind. addslashes() funktionen tilføjer \ foran alle ' tegn, så sql'en bliver til: "select * from userlogin where Username = '' and Password = ' \' or \'2\'=\'2'"
Denne vil kun matche dem hvor navnet er "" og password er "' or '2'='2".
Derfor skal du ALTID bruge addslashes() funktionen omkring alt tekst som skal i en sql-sætning. Om det så er en insert, select eller update...
Da du åbentbart ikke har den på nu, bliver mit eks til: user = mysql_query("select * from userlogin where Username = '".addslashes($Username)."' and Password = '".addslashes($Password)."'");
Jeg er igang med at lukke mine snart alt for mange åbne spørgsmål "Det er meget pinligt" så derfor om mit spørgsmål er aktuelt eller ej, så deler jeg point ud på de der har svaret, Er der nogle der føler sig snydt må i lige kontakte mig i spørgsmålet. Undskylder mange gange for den til tider lange svar tid.
MC
Synes godt om
Ny brugerNybegynder
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.