Autor Zpráva
MagicPowa
Profil
Zdravim, mam udelanou diskuzi, tzn formular kam nekdo zada udaje a ty se odeslou do databaze a zobrazi se v diskuzi, proste normalni gbook. Tedkon chci u tech lidi co zadali do policka treba Email: slovo "mail" a do policka Jméno: "Novák" tak chci aby jim to vyhodilo hlasku pres echo treba "Ahoj." Kdyz by zadali neco jinyho tak aby jim to vyhodilo druhy echo Nejmenuješ se Novák...."

Mam tohle, na databazi a tabulku jsem prihlaseny.

<?
$dotaz = mysql_query("SELECT jmeno FROM navstevnikniha WHERE email LIKE('mail')");
$zaznam = mysql_fetch_assoc($dotaz);
if($zaznam["jmeno"] == "Novák"){
echo "Ahoj.";
}
else {
echo "Nejmenuješ se Novák a nezadal si do políčka email slovo mail.";
}
?>

Kde je tu chyba? Vždycky mi to vyhodí, echo Ahoj i když zadá dotyčný jiný údaje nebo je nezadá vůbec.
Akacko
Profil
MagicPowa
SELECT jmeno FROM navstevnikniha WHERE email LIKE '%mail%'
MagicPowa
Profil
Díky za reakci, ale nepomohlo to :/
Akacko
Profil
MagicPowa
zkus si vypsat proměnnou $zaznam["jmeno"]. Jestli opravdu obsahuje co potřebuješ.
MagicPowa
Profil
j obsahuje to co ten uživatel zadal
Akacko
Profil
MagicPowa
Tak v čem je problém? Když z databáze se vybere to co potřebuješ v ověřování nevidím žádnou chybu => musí to fungovat.
MagicPowa
Profil
Dobře uvedu daný příklad. Koukni se sem.
1. Prvni komentar napsal bezny uzivatel proste prijde a neco rekne.
2. Druhy komentar napsal nekdo kdo si hraje na ADMINA ale nevi ze musi dat do kolonky mailu slovo mail, aby se mu za jmeno dalo ze to napsal admin.

- zatim maji vsichni za jmenem echo2"tohle napsal bezny uzivatel" ale jakmile prijde

3. Pravy admin odepsal vyplnil spravne kolonku mail. Tudiz by se mu melo zmenit za jmenem v komentari na echo1"tohle napsal admin"
ale zmeni se to u vsech. Proc jak je to mozny?

Tady prikladam screen z databaze. Odkaz

Ja vim nijak to zatim neni zabezpeceny cely formular ale to se doladi casem. S timhle si tu lamu hlavu uz jakou dobu dneska tak by me to zajimalo co tam mam spatne.
MagicPowa
Profil
Zapomel jsem uvest kod konkretne k tehle veci co jsem postnul naposled. Tak tady je. Jedna se jenom o tu podminku ktera by mela zobrazovat za Jmenem kdo to napsal. Samotna kniha funguje.

<?
$dotaz = mysql_query("SELECT jmeno FROM navstevnikniha WHERE email LIKE '%mail%'");
$zaznam = mysql_fetch_assoc($dotaz);
if($zaznam["jmeno"] == "Admin"){
echo "tohle napsal admin";
}
else {
echo "tohle napsal bezny uzivatel";
}
?>
Akacko
Profil
MagicPowa
Dočetl jsem se že by se při porovnáváni dat vypsaných z db a odeslaných z formuláře mela používat f-ce stripslashes() u dat odeslaných z formuláře.
Kajman_
Profil *
Spíš ten dotaz vždy najde náhodně něco, kde je mail, ne ten poslední. Musíte to ještě omezit na ten konkrétní příspěvěk. Případně kontrolujte $zaznam["mail"].
Klinki
Profil *
Akacko:
1) zalezi jestli ma data z formulare osetrene proti SQL injection (to by spravne mel mit vzdycky...)
2) nemyslim si ze by zrovna u jmena melo escapovani nejakej vliv na porovnavani (pokud se ve jmenu nevyskytuji znaky jako ' apod. coz pochybuju)
Jeste pro uplnost dodam co dela fce stripslashes:
Z retezce, kterej je ulozenej v db v bezpecne podobe odstrani escapovaci znak \
tzn. ze z retezce
Retezec obsahujici  \'text\'  v uvozovkach
udela retezec
Retezec obsahujici  'text'  v uvozovkach

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: