Oprettet søn. d. 07. september 2003 kl. 18:37:44

heavybreezer
heavybreezer (13.568 point. Point ude: 1.270)

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?

Skrevet søn. d. 07. september 2003 kl. 18:43:04| #1

spunk13
spunk13 (22.606 point)
$brugernavn = $_POST['brugernavn'];
$users = mysql_query("select brugernavn from `database`");
while ($usernames = mysql_fetch_array($users)) {
$userarray[] = $usernames['brugernavn'];
}
if (in_array($brugernavn, $userarray)) {
echo "<center>Brugernavnet er optaget.<br>Vælg venligst et andet";
return false;
}

Skrevet søn. d. 07. september 2003 kl. 18:45:49| #2

arne_v
arne_v (1.005.658 point)
Det gør du ikke fordi det virker ikke.

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.

Skrevet søn. d. 07. september 2003 kl. 18:47:14| #3

ahv
ahv (85.283 point)
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å.
}

Skrevet søn. d. 07. september 2003 kl. 18:47:46| #4

ahv
ahv (85.283 point)
$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å.
}

Skrevet søn. d. 07. september 2003 kl. 18:49:10| #5

spunk13
spunk13 (22.606 point)
Virker det da ikke?

Skrevet søn. d. 07. september 2003 kl. 18:51:12| #6

ahv
ahv (85.283 point)
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.

Skrevet søn. d. 07. september 2003 kl. 18:51:51| #7

arne_v
arne_v (1.005.658 point)
Hverken dit eller ahv's forslag er 100% sikre i tilfælde af mere
end en samtidig bruger.

Skrevet søn. d. 07. september 2003 kl. 18:51:58| #8

heavybreezer
heavybreezer (13.568 point)
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?

Skrevet søn. d. 07. september 2003 kl. 18:54:13| #9

arne_v
arne_v (1.005.658 point)
id er uden tvivl primær-nøgle.

Lav et unique index på feltet brugernavn og lad PHP koden der
INSERT'er håndtere fejl ved duplicate.

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

php problem få en kode fra en anden side

Oprettet den 11. februar 2012 kl. 23.53
jesperkaae95 giver 30 point for svar | Giv et svar »

Udtræk af enkelte felter fra bestemte kolonner i mysql

Oprettet den 11. februar 2012 kl. 19.27
hrole giver 30 point for svar | Giv et svar »

Procentregning

Oprettet den 11. februar 2012 kl. 11.26
sevinding giver 60 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger