06. juni 2004 - 12:18Der er
27 kommentarer og 1 løsning
Brugersystem hvor et navn kun kan bruges engang
Hejsa..
På mit brugersystem er der en bruger som hedder "admin", men jeg vil jo ikke have andre også opretter en bruger som hedder admin med fx. stort N!! Så hvad skal jeg indsætte for at man kun kan oprette et brugernavn engang?? // Når jeg logger ind som admin, kan jeg fx. skrive det sådan: AdmIn, og så står bogstaverne sådan, jeg vil gerne have at det bare står som "admin" lige meget om man skriver med stort/småt!!!
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Der er to løsninger - du kan tjekke det med php eller lade din database tjekke det:
(1) Med php: <? # forbindelse til database $result = mysql_query("SELECT * FROM tabel WHERE brugernavn='$_POST[brugernavn]'"); $count = mysql_num_rows($result)
Dette forudsætter at du gemmer dine brugernavne som små bogstaver. Dette er dog ikke noget problem, da du kan bruge strtolower(brugernavn) på de brugernavne du vil gemme. Husk bare at når folk skal logge ind skal du også lave et strtolower() på deres login.
-> dennismp: Du sparer da ikke mysqls arbejde fordi du spørger på den måde. Der løber du da også alle poster igennem for at finde antallet af poster hvor navn = $navn, gør du ikke?!?
jakob: "Det hele"? Orv, hvordan får du valideret brugernavnet så det ikke indholder ulovlige tegn - og hvordan får du apache til at snakke med mysql, så vi ikke behøver php.. :o)
steines: Jo det gør. Om du tæller antal rækker der opfylder dine betingelse(r) eller om du skal finde returnere alt information på de rækker der opfylder det samme betingelser.
Det første kan den bruge index'es til.. det andet bliver den nød til at hive fat i hele rækken og giver ikke mysql samme mulighed for kun at gøre brug af indexes = ekstra arbejde.
Hvis jeg forstår jakob ret, så mener han at man kan bruge "navn" som unikt felt, og derved få mysql til at styre det. Problemet er, at fortælle brugeren at navnet er brugt når denne skriver fx. AdMiN hvis man ikke bruger php.... hvad siger du jakob?
steines >> hvis du ved oprettelse af ny bruger, indtaster et navn der i forvejen er taget, vil der opstå en mysql fejl og man kan f.eks. ved en error udskrive at brugernavnet er optaget. Vil lige pointere at dette kun er til at tjekke om navnet er taget - så helt at undgå php kan man ikke, men det kan mindskes.
jakob: Ok.. det var bare fordi du skrev at det kunne gøres uden php.
dennis: Jeg skrev i mit første indlæg at han skulle gemme sine brugernavne som små bogstaver "Dette forudsætter at du gemmer dine brugernavne som små bogstaver", så det har du ret i.
Undskyld, har ikke været her i lang tid.. Men har ikke alt for meget styr på det med PHP :) HVor skal jeg indsætte det i siger henne? Der hvor man opretter bruger / logger ind eller noger? Er der nogle af php-koderne i vil se?
CREATE TABLE minichat3 ( id int(4) unsigned NOT NULL auto_increment, nick varchar(20) NOT NULL default '', pass varchar(20) NOT NULL default '', status int(1) NOT NULL default '1', onlinetid int(15) NOT NULL default '0', credits int(4) NOT NULL default '0', chatlines int(5) NOT NULL default '0', age char(2) NOT NULL default '', email varchar(40) NOT NULL default '', free_text longtext NOT NULL, PRIMARY KEY (id,id) ) TYPE=MyISAM;
Skal jeg så bare lave en: INSERT INTO minichat3 (nick) VALUES(lover('$nick'), ??
Forklaring: Ved at sætte Unique på din kolonne, kan man ikke oprette samme værdi to gange. Og i din sql bruger du lower(), til at lave det om til små bogstaver - så AdMiN = admin, og kan derfor ikke oprettes.
Du skal bruge denne sql på den side, der skal oprette brugere i databasen: INSERT INTO minichat3 (nick) VALUES(lower('".$_POST['nick']."'))";
$_POST['nick'] er navnet på det felter hvor brugeren taster det ønskede brugernavn - har du valgt at kalde den noget andet skifter du blot det ud med "nick"
Men hvor skal jeg indsætte dette: INSERT INTO minichat3 (nick) VALUES(lower('".$_POST['nick']."'))";
??
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.