Autor | Zpráva | ||
---|---|---|---|
studentt Profil * |
#1 · Zasláno: 3. 10. 2012, 12:46:37
Dobrý den, vytvořil jsem velice jednoduchý kód pro registraci, ale potřebuji poradit jak mám porovnat nicky v databázi s nově zapisovaným aby se neschodovali náhodou (uživatelská jména). Předem děkuji za odpověď. studentt
$nick = $_REQUEST["nick"]; $heslo = $_REQUEST["heslo"]; $jmeno = $_REQUEST["jmeno"]; $primeni = $_REQUEST["primeni"]; $email = $_REQUEST["email"]; $pravidla = $_REQUEST["pravidla"]; if ($nick=="" || $heslo=="" || $jmeno=="" || $primeni=="" || $email=="" || $pravidla==""){ echo '<p>*Vyplnění všech údajů a přijetí pravidel je povinné!</p>'; } else { require "db.php"; $sql="INSERT INTO uzivatele (nick, heslo, jmeno, primeni, email) VALUES ('$_POST[nick]','$_POST[heslo]','$_POST[jmeno]','$_POST[primeni]','$_POST[email]')"; if (!mysql_query($sql,$con)){ die('Error: ' . mysql_error()); } echo '<p class="trureg">Jste registrován! Nyní se můžete přihlásit.</p>'; mysql_close($con); } echo '<a href="?stranka=hlavni-stranka">Zpě na hlavní stránku</a>'; |
||
Sir Tom Profil |
#2 · Zasláno: 3. 10. 2012, 12:55:18
studentt:
Také dobrý den, před insertem do databáze musíš projít všechny řádky v databázi a porovnat sloupec nick s $nick: $result = mysql_query("SELECT * FROM uzivatel WHERE nick = '".$nick."'"); Jestliže tento dotaz vrátí nula řádků (žádný řádek), tak $nick se v db nenachází a teprve poté můžeš použít funkci insert. |
||
studentt Profil * |
#3 · Zasláno: 3. 10. 2012, 13:08:05 · Upravil/a: studentt
Sir Tom: Děkuji za odpověď, funguje.
Tak jsem asi předčasně jásal, někde jsem asi nechal chybu nebo vás nepochopil protože pro změnu všechna jména již existují: $nick = $_REQUEST["nick"]; $heslo = $_REQUEST["heslo"]; $jmeno = $_REQUEST["jmeno"]; $primeni = $_REQUEST["primeni"]; $email = $_REQUEST["email"]; $pravidla = $_REQUEST["pravidla"]; if ($nick=="" || $heslo=="" || $jmeno=="" || $primeni=="" || $email=="" || $pravidla==""){ echo '<p>*Vyplnění všech údajů a přijetí pravidel je povinné!</p>'; } else { require "db.php"; $result = mysql_query("SELECT * FROM uzivatele WHERE nick = '".$nick."'"); if ($result == ""){ $sql="INSERT INTO uzivatele (nick, heslo, jmeno, primeni, email) VALUES ('$_POST[nick]','$_POST[heslo]','$_POST[jmeno]','$_POST[primeni]','$_POST[email]')"; if (!mysql_query($sql,$con)){ die('Error: ' . mysql_error()); } echo '<p class="trureg">Jste registrován! Nyní se můžete přihlásit.</p>'; mysql_close($con); } else { echo'Uživatelské jméno již exiastuje'; } } |
||
martin1312 Profil |
tak to veru neviem, či bude dobre fungovať. Riadok 13 nahraď
if(mysql_num_rows($result) == 0) { PS: používaj radšej mysqli, mysql je deprecated EDIT: prečo na začiatku používaš $_REQUEST["nick"] a v sql dotaze $_POST[nick] ? Okrem toho, že by si mal mať na začiatku rovno $nick = $_POST["nick"] , nechápem, prečo zase v sql dotaze nepracuješ s $nick
|
||
studentt Profil * |
#5 · Zasláno: 3. 10. 2012, 13:48:39 · Upravil/a: studentt
po 13 riadku uz to vcelku chodi
obcas to vyhodi chybu z require "db.php"; na 2 riadku a ohledne esitu ja nejsem prilis zdatny phpckar ____ asi to takhle snad bude chodit a mohu se vrhnut na spousta dalsich funkci díky za rady |
||
Sir Tom Profil |
#6 · Zasláno: 3. 10. 2012, 13:53:06
studentt:
Áha - očekával jsem, že znáš funkci mysql_num_rows(). |
||
martin1312 Profil |
a uloži sa ti do DB to, čo chceš? pretože sa mi nechce veriť, že
('$_POST[nick]','$_POST[heslo]','$_POST[jmeno]','$_POST[primeni]','$_POST[email]')"; funguje. Narážam nato, že prvky v asociativnom poli maju byt v uvodzovkach. Každopádne, nahraď jednotlivé premenné tými, čo si si inicializoval na začiatku kódu ($nick ,...).
A ošetri si do proti sql injection (ak nevieš, hoď to do googlu). |
||
studentt Profil * |
#8 · Zasláno: 3. 10. 2012, 14:05:36 · Upravil/a: studentt
promene se ulozi do db a to co navrhujes zkusim googlit, dik
martin1312: Dival jsem se jak na programujme tak na wikipediu asi to kompletne nechapem muzes mi napasat jak by to vypadalo a nejak polopate vysvetlit prosim |
||
panther Profil |
#9 · Zasláno: 3. 10. 2012, 14:51:55
martin1312:
„nechce veriť, že [...] funguje“ funguje. Priste si to zkus, nemusis se divit na diskusnim foru. To, ze by tam apostrofy/uvozovky byt mohly (a mely), je vec druha. studentt: nastuduj si neco o escapovani. |
||
jenikkozak Profil |
#10 · Zasláno: 3. 10. 2012, 15:13:19
panther:
„To, ze by tam apostrofy/uvozovky byt mohly (a mely), je vec druha.“ Uvozovky by tam být nemohly, protože ty pole jsou uvnitř řetězce; tam se konstanta použít nedá. |
||
martin1312 Profil |
#11 · Zasláno: 3. 10. 2012, 15:15:14
panther:
ok, mal som to v plane, ale som v skole. |
||
panther Profil |
#12 · Zasláno: 3. 10. 2012, 15:17:57
jenikkozak:
„Uvozovky by tam být nemohly, protože ty pole jsou uvnitř řetězce“ nemyslel jsem v konkretnim pripade, bylo to mysleno obecne. martin1312: priste zkousej, pak pis, kdyz si nejsi jisty. Akorat zanasis do diskuse bludy, byt neumyslne. |
||
martin1312 Profil |
panther:
Ospravedlňujem sa. Nabudúce si dám pozor. Aspoň som o niečo múdrejší. |
||
Časová prodleva: 12 let
|
0