07. september 2003 - 18:37Der er
6 kommentarer og 3 løsninger
Undlade at vælge samme brugernavn
Jeg er ved at lave et community. Men når brugerne opretter sig, kan de godt oprette sig med ens brugernavne. F.eks. Hvis en bruger opretter sig med navnet testuser, kan en anden også oprette sig med dette navn, og det er et ret stort problem. Hvis jeg prøver at logge ind med burgernavnet testuser, logger jeg ind på den sidste nye oprettede bruger med dette navn.
Hvordan kan jeg lave et script, som tjekker om navnet eksisterer i forvejen, og advarer hvis det gør?
Skal virksomheder stå stærkere mod angreb og kunne udvikle sig, skal sikkerhed, drift og forretning tænkes sammen. Det er tanken bag Jysk IT’s ambition om at skabe en “sikker fremtid” for kunderne.
Bruger 1 tester om testuser eksisterer - det gør det ikke. Bruger 2 tester om testuser eksisterer - det gør det ikke. Bruger 1 opretter testuser. Bruger 2 opretter testuser.
Problem.
Du skal løse det database mæssigt.
Enten gør du bugernavn til primær-nøgle i din tabel eller så opretter du et unikt index på feltet.
Så fejler anden INSERT med en fejl og dit PHP script kan bede brugeren vælge et andet brugernavn.
Spunk13 dit forslag er da helt hen i vejret, en nemmere og hurtigere metode er ->
$username = $_POST['username]; if (mysql_result(mysql_query("SELECT COUNT(*) FROM `dintable` WHERE `username`='".$username."'"),0) > 0) { echo "Det valgte brugernavn er optaget."; } else { // her skal oprettelse så foregå. }
$username = $_POST['username']; if (mysql_result(mysql_query("SELECT COUNT(*) FROM `dintable` WHERE `username`='".$username."'"),0) > 0) { echo "Det valgte brugernavn er optaget."; } else { // her skal oprettelse så foregå. }
Den vil så vidt jeg kan se virke, men det er en alt for besværlig proces, du lægger ALLE brugernavne ind i et array for herefter at tjekke om det valgte er i ARRAYET. Tænk dig hvis du blot har 1.000 brugernavne!
Den nemmeste (min metode) er at tjekke direkte i tabellen og se om der er nogle ens, den hiver ikke noget ud af tabellen, den tæller blot de antal poster hvor det indskrevne brugernavn forekommer.
Jamen jeg har har kolonne "id", hvor der står auto_increment. Er det primær nøgle? Du siger hvis jeg sætter den til navnet, kommer der en fejl for brugeren...? Kan du komme med noget kode jeg kan indsætte?
Lav et unique index på feltet brugernavn og lad PHP koden der INSERT'er håndtere fejl ved duplicate.
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.