Podešavanje tablice - onemogućavanje višestrukog unosa

Pozdrav,
napravio sam skriptu za registriranje na sajt (da se korisnici registruju) e sad zanima me kako da napravim da se nemogu korisnici registrovati sa jednim e maiom i korisnickim imenom više puta evo kako sam podesio naredbu za stvaranje tablice

CREATE TABLE korisnici (
idkorisnici int(11) NOT NULL AUTO_INCREMENT,
korisnickoime varchar(20) NOT NULL,
lozinka varchar(30) NOT NULL,
ime varchar(100) NOT NULL,
prezime varchar(200) NOT NULL,
email varchar(200) NOT NULL default ‘’,
PRIMARY KEY (idkorisnici)
);

Hvala vam unaprijed na pomoći

Trebaš napraviti 2 unique indexa, jedan na polje “email” i drugi na polje “korisnickoime”.

Za MS SQL Server bi to bilo ovako:

CREATE UNIQUE INDEX [IX_korisnici_email] ON korisnici (email)
CREATE UNIQUE INDEX [IX_korisnici_korisnickoime] ON korisnici (korisnickoime)

Napominjem da to je to samo “zadnja zona obrane”.
Potrebno je prije samog upisa provjeriti postojanje email-a i korisničkog imena i upozoriti korisnika.

dali bi mi mogli malo bolje objasniti kako da to uradim početnik sam pa ne razumjem, gdje treba ubaciti

CREATE UNIQUE INDEX [IX_korisnici_email] ON korisnici (email)
CREATE UNIQUE INDEX [IX_korisnici_korisnickoime] ON korisnici (korisnickoime)

jel u bazi?

A gdje drugo? :slight_smile:

Te naredbe izvrsis kao i CREATE TABLE, SELECT, itd.

[quote=“susok”]Pozdrav,
napravio sam skriptu za registriranje na sajt (da se korisnici registruju) e sad zanima me kako da napravim da se nemogu korisnici registrovati sa jednim e maiom i korisnickim imenom više puta evo kako sam podesio naredbu za stvaranje tablice

CREATE TABLE korisnici (
idkorisnici int(11) NOT NULL AUTO_INCREMENT,
korisnickoime varchar(20) NOT NULL,
lozinka varchar(30) NOT NULL,
ime varchar(100) NOT NULL,
prezime varchar(200) NOT NULL,
email varchar(200) NOT NULL default ‘’,
PRIMARY KEY (idkorisnici)
);

Hvala vam unaprijed na pomoći[/quote]

Dali se to odnosi na php/mysql okruženje???
Utom slučaju imam gotovo rješenje (skriptu),jer sam se nedavno bavio s tim.

evo kako sam uradio naredbu za stvaranje tablice

CREATE TABLE korisnici (
idkorisnici int(11) NOT NULL AUTO_INCREMENT,
ime varchar(100) NOT NULL,
prezime varchar(200) NOT NULL,
lozinka varchar(30) NOT NULL,
email varchar(200) NOT NULL DEFAULT ‘’,
spol varchar(100) NOT NULL,
dan decimal(10,0) NOT NULL default ‘0’,
mjesec decimal(10,0) NOT NULL default ‘0’,
godina decimal(10,0) NOT NULL default ‘0’,
PRIMARY KEY (idkorisnici),
UNIQUE KEY u_email (email)
);

a formu i upis sam uradio ovako

<?

if (!$_POST["SBunos"])

{
?>

<form method="post"  action="">
<b>Ime: </b>
<input type="text" name="ime" size="50">

<b>Prezime: </b>
<input type="text" name="prezime" size="50">

<b>Lozinka: </b>
<input type="text" name="lozinka" size="50">

<b>E-mail: </b>
<input type="text" name="email" size="50">


<b>Odaberi spol: </b>
<select name="spol">
<option>muško</option>
<option>žensko</option>
</select>


<b>Datum rodjenja: </b>
<b>Dan: </b>
<select name="dan">
<option>01</option>
<option>03</option>
<option>04</option>
<option>05</option>
<option>06</option>
<option>07</option>
<option>08</option>
<option>09</option>
<option>10</option>
<option>11</option>
<option>12</option>
<option>13</option>
<option>14</option>
<option>15</option>
<option>16</option>
<option>17</option>
<option>18</option>
<option>19</option>
<option>20</option>
<option>21</option>
<option>22</option>
<option>23</option>
<option>24</option>
<option>25</option>
<option>26</option>
<option>27</option>
<option>28</option>
<option>29</option>
<option>30</option>
<option>31</option>
</select> 
<b>Mjesec: </b>
<select name="mjesec">
<option>Januar</option>
<option>Februar</option>
<option>Mart</option>
<option>April</option>
<option>Maj</option>
<option>Juni</option>
<option>Juli</option>
<option>Avgust</option>
<option>Septembar</option>
<option>Oktobar</option>
<option>Novembar</option>
<option>Decembar</option>
</select> 
<b>Godina: </b>
<select name="godina">
<option>1992</option>
<option>1991</option>
<option>1990</option>
<option>1989</option>
<option>1988</option>
<option>1987</option>
<option>1986</option>
<option>1985</option>
<option>1984</option>
<option>1983</option>
<option>1982</option>
<option>1981</option>
<option>1980</option>
<option>1979</option>
<option>1978</option>
<option>1977</option>
<option>1976</option>
<option>1975</option>
<option>1974</option>
<option>1973</option>
<option>1972</option>
<option>1971</option>
<option>1970</option>
</select>


<input type="submit" name="SBunos" value="Registriraj se" style="margin: 5px 0px 0px 0px;">
</form>

<?

} else {

include "Postavke.php";

$imebaze="INSERT INTO korisnici (ime, prezime, lozinka, email, spol, dan, mjesec, godina)

VALUES ('$_POST[ime]', '$_POST[prezime]', '$_POST[lozinka]', '$_POST[email]', '$_POST[spol]', '$_POST[dan]', '$_POST[mjesec]', '$_POST[godina]')";


if (mysql_query($imebaze))
{

if (empty($_POST[ime]))
{
echo "[align=center]Niste upisali <b>Ime</b>! [/align]";
echo "[align=center]<a href=\"javascript:history.back()\">Nazad</a>[/align]";

}

if (empty($_POST[prezime]))
{
echo "[align=center]Niste upisali <b>Prezime</b>! [/align]";
echo "[align=center]<a href=\"javascript:history.back()\">Nazad</a>[/align]";

}

if (empty($_POST[lozinka]))
{
echo "[align=center]Niste upisali <b>Lozinku</b>! [/align]";
echo "[align=center]<a href=\"javascript:history.back()\">Nazad</a>[/align]";

}

if (empty($_POST[email]))
{
echo "[align=center]Niste upisali <b>E-mail</b>! [/align]";
echo "[align=center]<a href=\"javascript:history.back()\">Nazad</a>[/align]";

}
else{

echo "Uspješno ste se registrirali!";

}

}

else{

echo "Nastala je greška pri registraciji!
" . mysql_error();

}


}

?>

E sad dali se može uraditi kada korisnik ne popuni neko polje da ga blokira mysql baza i da opomene npr nije unio ime da mu se pojavi “Niste upisali Ime!”

Baza je jedna fina starija gospođa koju nije pametno zajeb… sa svakojakim glupostima.

To što pitaš treba odraditi aplikacija/skripta.

Pa kako da postavim kad neko unese e-mail koji je već u bazi da mu javi da “E-mail koji ste unijeli već postoji!” .Hvala na pomoći!

To svakako moraš pitati bazu.

Samo ti si pitao i ovo:
"E sad dali se može uraditi kada korisnik ne popuni neko polje da ga blokira mysql baza i da opomene npr nije unio ime da mu se pojavi “Niste upisali Ime!”

To rješavaš u samoj aplikaciji odnosno skripti.

Pozdrav,

znam da sam dosadan,a li bih vas molio da mi objasnite samo još ovo:

kako da za branim upis određene rijeći u bazu, npr kad neko se registruje pa treba da unese godinu rodjenja

Godina: 1992 1991 1990 1989 1988 1987 1986

i sad u mene u formi je prva rijec Godina: i ako korisnik nebude tu formu nista diro u bazu gdje treba da mu se upise bgoj godišta upisat ce mu se Godina: kako da ja zabranim u bazi rijec Godina: i da korisniku javi da nije izabro godinu rodjenja.

Nadam se da ste me razumjeli,

A drugo pitanje kako da napravim:

kad korisnici unose ime i prezime, i ako budu upisali prvo slovo malim da se automatski prvo slovo imena pretvori u veliko.

a to radiš opet na serveru, to se inače popularno zove validacija forme.
if(!is_int($_POST[‘godina’]))
{
echo “error”;
}

Za lozinku ti fale još dva znaka. Mislim da hash koristi minimalno 32. No nisam siguran.
Haširati ćeš password?

Kao što je već između redova na razno-razne načine naglašeno,baza zapravo ima najmanje veze s onim što tebi treba.Provjeru postojanosti korisničkog imena i emaila u bazi,zapravo rješavašv u PHP-u.
Ja sam to npr. riješio pomoću dvostruke switch-case provjere od 2 mysql queryja:
Prva switch petlja provjerava postojanost korisničkog imena u bazi.Ako ono postoji,ispisuje se poruka da to ime postoji u bazi.Ako ne postoji,pokreće se druga swich petlja kojom se provjerava postojanost email adrese.Ako postoji ispisuje se ‘email taj i taj već postoji’.Ako ne postoji,podaci se upisuju u bazu.
Znači ovo je u biti PHP skripta koja dopušta upis podataka u bazu samo u slučaju kada ‘ti’ podacu u njoj ne postoje :wink:
Naravno…ovo je moj slučaj,s mojim imenima varijabli i mojim unosom podataka u bazu,pa ti samo preimenuj šta treba i sredi insert query…i to bi trebalo raditi.

da unaprijediš svoju skriptu možda bi bilo bolje probati sa if then, i izbaciti queri iz uvjeta već na njega imati jedinstvenu provjeru sa
if($valid)
{
izvrši queri
}

ako negdje validacija ne prođe staviš $valid false.
Tako u slučaju da u budućnosti dodaš još koji uvijet za provjeru nećeš morati mjenjati postojeći kod.


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja