Autor | Zpráva | ||
---|---|---|---|
Petr84 Profil * |
#1 · Zasláno: 19. 10. 2009, 12:30:34
Při výpisu vždy používám funkci htmlspecialchars(), ale pokud použiju BB kódování, tak se nevypíše např. tučný text ale jen <strong>text</strong>. Jak se tedy ošetřuje takovýto výpis novinek?
|
||
martindeveloper Profil |
#2 · Zasláno: 19. 10. 2009, 12:33:51 · Upravil/a: martindeveloper
Pokud to chápu dobře tak novinka obsahuje jak HTML tak BBCode, nu tak nejdříve provědte htmlspecialchars(), tím se ošetříte HTML tagy a BB tagů se to nedotkne a posléze parsujte BBCode.
|
||
Petr84 Profil * |
#3 · Zasláno: 19. 10. 2009, 12:46:58
martindeveloper
Díky |
||
Petr84 Profil * |
#4 · Zasláno: 19. 10. 2009, 13:21:55
Ještě bych se rád zeptal na to jestli mám správně ošetřené vkládání a výpis textu z databáze.
function dbPut($value) { if (get_magic_quotes_gpc() == 0) { return addslashes($value); } return $value; } if (isset($_POST['odeslat'])) { $nadpis = $_POST['nadpis']; $uvod = $_POST['uvod']; $text = $_POST['text']; $sql = "INSERT INTO `tabulka`(`nadpis`, `uvod`, `text`) VALUES (\"" . dbPut($nadpis) . "\", \"" . dbPut($uvod) . "\", \"" . dbPut($text) . "\")"; ....... $sql2 = "SELECT * FROM tabulka"; ....... echo htmlspecialchars($row['text']); |
||
tiso Profil |
#5 · Zasláno: 19. 10. 2009, 13:28:05
|
||
Petr84 Profil * |
#6 · Zasláno: 19. 10. 2009, 13:34:39
Abych se přiznal tak ten článek mi nic extra neřekl...
Hlavně mi jde o ošetření vstupů, jestli stačí fce dbPut, popř. jestli něco chybí. Díky |
||
martindeveloper Profil |
#7 · Zasláno: 19. 10. 2009, 13:36:16
Zkuste se ještě podívat na mysql_real_escape_string .
|
||
Petr84 Profil * |
#8 · Zasláno: 19. 10. 2009, 13:38:54
martindeveloper
Ano, přesně o téhle fci jsem si říkal jestli nechybí... Takže navíc ještě takto: $nadpis = mysql_real_escape_string($_POST['nadpis']); $uvod = mysql_real_escape_string($_POST['uvod']); $text = mysql_real_escape_string($_POST['text']); Díky |
||
Petr84 Profil * |
#9 · Zasláno: 19. 10. 2009, 13:55:57
function dbPut($value) { if (get_magic_quotes_gpc() == 0) { return addslashes($value); } return $value; } if (isset($_POST['odeslat'])) { $nadpis = mysqli_real_escape_string($connection, $_POST['nadpis']); $uvod = mysqli_real_escape_string($connection, $_POST['uvod']); $text = mysqli_real_escape_string($connection, $_POST['text']); } $sql = "INSERT INTO `tabulka`(`nadpis`, `uvod`, `text`) VALUES (\"" . dbPut($nadpis) . "\", \"" . dbPut($uvod) . "\", \"" . dbPut($text) . "\")"; ....... $sql2 = "SELECT * FROM tabulka"; ....... echo htmlspecialchars($row['nadpis']); echo htmlspecialchars($row['uvod']); echo htmlspecialchars($row['text']); Mohlo by to tedy takto být? A není tam teď zbytečná fce dbPut? |
||
martindeveloper Profil |
#10 · Zasláno: 19. 10. 2009, 13:58:39
if (isset($_POST['odeslat'])) { (...) }
Pokud byl formulář odeslán tak se pouze ošetří proměnné, ale INSERT do DB jde vždy z toho co vidím. Odeslání INSERTu bych přehodil do té podmínky. "A není tam teď zbytečná fce dbPut?" Je |
||
Petr84 Profil * |
#11 · Zasláno: 19. 10. 2009, 14:20:12
martindeveloper
Po vymazání fce dbPut a přidání BB kodování pro tučný text mám nasledující chybu: 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 'color: green'>You have an error in your SQL syntax; check the manual that corres' at line 1 if (isset($_POST['odeslat'])) { $nadpis = mysqli_real_escape_string($connection, $_POST['nadpis']); $uvod = mysqli_real_escape_string($connection, $_POST['uvod']); $text = mysqli_real_escape_string($connection, $_POST['text']); $text = Str_Replace("[b]","<strong style='color: green'>",$text); $sql = "INSERT INTO `tabulka`(`nadpis`, `uvod`, `text`) VALUES ('$nadpis','$uvod','$text')"; ....... $sql2 = "SELECT * FROM tabulka"; ....... echo htmlspecialchars($row['nadpis']); echo htmlspecialchars($row['uvod']); echo htmlspecialchars($row['text']); |
||
Petr84 Profil * |
#12 · Zasláno: 19. 10. 2009, 14:22:13
Oprava: ještě jeden řádek:
$text = Str_Replace("","<strong style='color: green'>",$text); $text = Str_Replace("","</strong>",$text); |
||
Časová prodleva: 14 let
|
0