Avatar billede cyruse Nybegynder
04. marts 2008 - 11:03 Der er 20 kommentarer og
2 løsninger

forståelse for Preg_replace

Hej jeg har noget kode som jeg har svært ved at forstå. håber i kan hjælpe lidt.

koden ser således ud:

    function CheckLogin($Username, $Password)
        {
            $Username = preg_replace("#[^a-zA-Z0-9-_\.]#", "", $Username);
            $Query = mysql_query("SELECT * FROM users WHERE username='". $Username ."' AND password='". $Password ."'");
            $Row = mysql_fetch_array($Query);
            if(!empty($Row) && $Row["password"] == $Password && $Row["username"] == $Username)
            {
                $_SESSION['Username'] = $Username;
                $_SESSION['Password'] = $Password;
                return true;
            }
            else
            {
                return false;
            }
        }

det er selve denne kode jeg har lidt svær ved at tyde:

$Username = preg_replace("#[^a-zA-Z0-9-_\.]#", "", $Username);
Avatar billede w13 Novice
04. marts 2008 - 11:05 #1
Vil du bare vide, hvad den gør?
Det ser ud til, at den med regular expressions (reg.exp.) fjerner alt andet end a-Z, A-Z, 0-9, bindestreg, underscore og punktum.
Avatar billede cyruse Nybegynder
04. marts 2008 - 11:36 #2
ja vil bare vide hvad den gør.

skal skrive noget dokumentation om min kode.
Avatar billede w13 Novice
04. marts 2008 - 11:39 #3
Ja, men det er så det, den gør. =) Kender du lidt til reg.exp.?
Som sagt fjerner den bare alle andre tegn, ser det ud til.
Avatar billede cyruse Nybegynder
04. marts 2008 - 11:48 #4
nej kender ikke til reg.exp.

okay det lyder som en god forklaring til den..
Avatar billede w13 Novice
04. marts 2008 - 11:50 #5
Reg.Exp. bruges til at matche "mønstre" med. F.eks. er dit mønster her: andre forekomster end a-Z, A-Z, 0-9, bindestreg, underscore og punktum fjernes.
Se evt. http://www.eksperten.dk/artikler/1156
Avatar billede cyruse Nybegynder
04. marts 2008 - 12:00 #6
okay.. lyder som en god ting.
Avatar billede nielle Nybegynder
04. marts 2008 - 12:29 #7
Der er i øvrigt to små fejl i den:

$Username = preg_replace("#[^a-zA-Z0-9-_\.]#", "", $Username);

- skal rettes til:

$Username = preg_replace("#[^a-zA-Z0-9_.-]#", "", $Username);

... og det kan forresten skrives lidt kortere:

$Username = preg_replace("#[^a-z0-9_.-]#i", "", $Username);
Avatar billede cyruse Nybegynder
04. marts 2008 - 12:32 #8
skal du ikke have \ med også?
Avatar billede nielle Nybegynder
04. marts 2008 - 12:33 #9
Nej - ikke inde i en [...] - hvsi punktummet er udenfor [...] så skal det være der.
Avatar billede nielle Nybegynder
04. marts 2008 - 12:36 #10
Det værste var nu mere den bindestreg som stod et forkert sted, og dermed havde en helt anden virkning end det forventede.
Avatar billede cyruse Nybegynder
04. marts 2008 - 12:40 #11
okay. det er svar nok. tak for det.. svare du lige på den?
Avatar billede nielle Nybegynder
04. marts 2008 - 12:41 #12
w13 eller mig?
Avatar billede cyruse Nybegynder
04. marts 2008 - 12:47 #13
ville gerne give jer begge er det muligt.. havde ikke opdaget det var to forskellige. :D
Avatar billede nielle Nybegynder
04. marts 2008 - 12:49 #14
I orden med mig under forudsætning af at w13 får langt de fleste (i øvrigt har jeg allerede tjent 5 på artiklen - håber at du får noget ud af den?).
Avatar billede w13 Novice
04. marts 2008 - 12:54 #15
:)
Avatar billede w13 Novice
04. marts 2008 - 12:54 #16
^^
Avatar billede cyruse Nybegynder
04. marts 2008 - 12:55 #17
ja det er en god artikel.. men hvordan afgiver jeg pointne?
Avatar billede w13 Novice
04. marts 2008 - 12:55 #18
Når Nielle har svaret, kan det gøres nederst på denne side. Det hedder vist "Avanceret pointdeling" eller sådan noget..
Avatar billede nielle Nybegynder
04. marts 2008 - 12:56 #19
Svar :^)
Avatar billede cyruse Nybegynder
04. marts 2008 - 13:09 #20
sådan tak for hjælpen begge 2
Avatar billede nielle Nybegynder
04. marts 2008 - 13:15 #21
Tak for point :^)
Avatar billede w13 Novice
05. marts 2008 - 11:19 #22
Tak for point! :)
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
Kurser inden for grundlæggende programmering

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