Autor Zpráva
Chuck
Profil
Mám 2 stránky. Na první z ní se zobrazuje nástěnka a je tam formulář pro přidání. Druhá stránka vyhodnoocuje zaslaný formulář, ukládá do databáze a přesměrovává zpět.
Za předpokladu, že normálně vyplním jméno a obsah a správně opíšu kontrolní kód, tak se mi příspěvek do databáze normálně uloží a na nástěnce zobrazí.
Jenže když je do příspěvku vložen text, který má být za pomoci str_replace změněn (např. smajlík), tak uložení do databáze neproběhne, nevypíše se žádný chybový kód, prostě se normálně přesměruje stránka, jako by se nic nestalo. Neví někdo, v čem je problém?

Kód celého 2. souboru:

<?

$jmeno = $_POST["jmeno"];
$barva = $_POST["barva"];
$prispevek = $_POST["prispevek"];
$key = $_POST["key"];
$kod = $_POST["kod"];

$rok = Date("y");
$mesic = Date("m");
$den = Date("j");
$hodina = Date("H");
$minuta = Date("i");


switch ($key){
case "dfthzjz":
$img = "dfdidfd8";
break;
case "asdfged":
$img = "p57fhi7";
break;
case "wrtrztu":
$img = "f77fd774";
break;
case "errrrrr":
$img = "dffdg98";
break;
case "fztgzik":
$img = "srddg7sf";
break;
case "rghtadr":
$img = "gf78hfr8";
break;
case "dfhzbth":
$img = "5gdeg9t";
break;
case "sderfgt":
$img = "f58d787";
break;
};


if ($jmeno !== ""){

if ($prispevek !== ""){

if ($kod !== "") {

if ($kod == $img) {

if ($jmeno !== "sexmachine") { if ($prispevek !== "You are being spammed;)") {


$co = array("<", ">", ":-)", ":-(", ":-U", ":=(", ":-P", ";-)", "(►()", "(►O)", "(?)", "(!)", "(.:)", "(¡:)", "
");
$cim = array("&lt;", "&gt;", "<img src='http://g.idnes.cz/u/disk/smile8.gif' class='smile'>", 
"<img src='smile5.gif' class='smile'>",
"<img src='smile4.gif' class='smile'>",
"<img src='smile7.gif' class='smile'>",
"<img src='smile1.gif' class='smile'>",
"<img src='smile2.gif' class='smile'>",
"<img src='nosmile1.gif' class='smile'>",
"<img src='rvoun.gif' class='smile'>",
"<img src='otaznik.gif' class='smile'>",
"<img src='krik1.gif' class='smile'>",
"<img src='rukaon.gif' class='smile'>",
"<img src='rukaoff.gif' class='smile'>", "<br>");
$vys = str_replace($co, $cim, $prispevek);


$db="tym_efuv";
$tb="nasa";
$spojeni=mysql_connect("mysql.tym.cz","tym_efuv","**************");
mysql_select_db($db, $spojeni);
mysql_query("INSERT INTO $tb values ('$jmeno', '$vys', '$barva', '$rok', '$mesic', '$den', '$hodina', '$minuta')", $spojeni);

header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.efuv.tym.cz/kvarta/nastenka");
header("Connection: close");

} } }

else {echo("Špatně jsi opsal kód z obrázku"); };

}

else {echo("Nezadal jsi antispamový kód"); };

}

else {echo("Nenapsal jsi žádný vzkaz"); };

}

else { echo("Nezadal jsi jméno"); };

?>
yFang
Profil
Chuck
Zkus zakomentovat přesměrování a místo toho napiš echo mysql_error(); a uvidíš co ti to vypíše.
Chuck
Profil
hlásí to tuto chybu: Parse error: syntax error, unexpected '}', expecting ',' or ';' in /home/free/tym.cz/e/efuv/root/www/kvarta/nastenka/pridat.php on line 80

řádek 80 je:

...ho mysql_error()

} } }

else {echo("Špa...
yFang
Profil
Chuck
Chybí ti středník na konci toho echa.
Chuck
Profil
opraveno. tady je ten chybový kód:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'http://g.idnes.cz/u/disk/smile2.gif' class='smile'>', 'modrá', '08', '08', '26',' at line 1
YoSarin
Profil
používej mysql_real_escape_string() (http://cz.php.net/manual/en/function.mysql-real-escape-string.php)
yFang
Profil
Chuck
Nebo nahrať apostrofy('') uvozovkami ("") v zápisu src a class u obrázků.
Chuck
Profil
při použití mysql_real_escape_string() se nevypsal žádný mysql chybový kód, ale do databáze se to opět nevložilo
Chuck
Profil
yFang
Nebo nahrať apostrofy('') uvozovkami ("") v zápisu src a class u obrázků.
jako prohodit apostrofy a uvozovky v celé té array?
Chuck
Profil
už se nevkládají ani normální příspěvky - tj. bez smajlíků
yFang
Profil
Chuck
'<img src="smile5.gif" class="smile">',

Ale nevím jistě, zda to bude fungovat.
Chuck
Profil
prohodil jsem apostrofy s uvozovkama a použil mysql_query: funguje to

děkuji všem
Chuck
Profil
ono už to zase nefunguje


nechápu to
yFang
Profil
Chuck
a použil mysql_query: funguje to
Tys před tím nepoužíval mysql_query?

ono už to zase nefungujenechápu to
My taky ne. Zkus to upřesnit.
Chuck
Profil
nepřidá se žádný příspěvek - ani když je se smajlíkem, ani když je bez něk, ani když použiji mysql_real_escape_string, ani když mysql_query...
peta
Profil
Chuck
V prvni rade ti musi pridavat text typu aaa. Potom ma smysl resit smajliky.
Zkus na zacatek scriptu dat tyto 3 radky:
@ini_set('error_reporting', E_ALL);
@ini_set("display_errors", "on");
error_reporting(E_ALL);

Zkus SQL prikaz prepsat pomoci funkce jako:
function sq($query,$text='') {$res = mysql_query($query) or die("<hr>MySQL Err".$text.": $query<hr>".mysql_error()); return $res;} //debug mode

mysql_query("INSERT INTO $tb values ('$jmeno', '$vys', '$barva', '$rok', '$mesic', '$den', '$hodina', '$minuta')", $spojeni);
-> za ->
$dotaz = "INSERT INTO $tb values ('$jmeno', '$vys', '$barva', '$rok', '$mesic', '$den', '$hodina', '$minuta')";
sq($dotaz);

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: