elikkäs nettisivullani voi rekisteröityä monta käyttäjää samalla käyttäjänimellä ja ei siin oo mitään järkee miten voin estää sen? :D
ja sivun osote on superwebsite.ml
Sulla on nyt ollut päivän sisään jo kolme täysin helposti itse ratkaistavissa olevaa kysymystä. Yritä nyt miettiä ensin.
Vinkki: Kun käyttäjä rekisteröityy, pitäsikö tarkistaa jotain nimeen liittyvää?
Katoin netistä ja yhes ohjees oli et pitäs laittaa se username sielt tietokannasta uniqueks, mut ei toiminu.
oisko php:ssä jotain juttuu mil se tarkistais sen tietokannannan, vai miten sen vois tehä?
Hae tietokannasta:
SELECT COUNT(*) FROM kayttajat WHERE nimi = 'Matti'
Esimerkkisyntaksi PDO:lla:
$sql = $pdo->prepare("SELECT COUNT(*) FROM kayttajat WHERE nimi = ?"); $sql->execute(array($_POST["nimi"])); $rivi = $sql->fetch();
Katso, mitä tuli tulokseksi. Jos rivien määrä on 0, ei käyttäjää kyseisellä nimellä ole. Jos se taas on 1, sellainen on jo olemassa
Nämä pitäisi pystyä päättelemään ihan itse.
Edit: Ja miten niin tietueen muuttaminen UNIQUE
ksi "ei toiminut"?
Eki++ kirjoitti:
Edit: Ja miten niin tietueen muuttaminen
UNIQUE
ksi "ei toiminut"?
Kenties kannassa oli testimielessä jo >=2 samaa nimeä, ja mysql heitti virheen. (Tai kyllähän se jo varmaan sinulle mieleen tuli...)
Sitä on vaan aina vähän vaikea rueta arvailemaan, kun jokin asia "ei toimi".
Eki++ kirjoitti:
Pitäiskö tässä olla virheherkkyyden sijaan tarkistaa vain, ettei määrää ole enempää kuin 0, ei suoraan == 1.
Lebe80: Hyvä huomio. Kuitenkin jos järjestelmä on jo alusta asti tehty oikein, ei tuollaista tilannetta tule.
Eki++ kirjoitti:
Lebe80: Hyvä huomio. Kuitenkin jos järjestelmä on jo alusta asti tehty oikein, ei tuollaista tilannetta tule.
Mutta kun se ei ollut. :D
Pakkohan tuo on kuitenkin huomioida jossain muuallakin kuin vain myskylän päässä asettamalla unique-rajoite. Sovellus ei voi rekisteröitymisen yhteydessä vain kaatua mystiseen tietokannan heittämään virheilmoitukseen tai valkeaan sivuun. Vaikkei tietokanta tukisi mitään uniquea, niin sinun pitäisi silti tarkistaa nimien ainutlaatuisuus omassa koodissasi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.