| 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: 14 let
|
|||
0