Autor | Zpráva | ||
---|---|---|---|
staco Profil |
#1 · Zasláno: 14. 6. 2013, 23:08:59
Dobry den!
Mam problem s vkladanim skopirovaneho textu z ineho zdroja (napr.z inej stranky)do prvku textarea =text sa mi neukaze pole je prazdne ale ak tam napisem normalne text cez klavesnicu tak je vsetko oK Vsimol som si ze ak to textarea vlozim napr.skopirovany text z zdrojoveho kodu tak mi normalne vyhodi chybu Mysql dotaz ako akeby to bol kod na mojej stranke?Skusal som experimentovat s nastavenim unicode v databaze ale nepomohlo mi to. Nerozumiem tomu kde mam hladat chybu? Dakujem za akukolvek odpoved! |
||
Tori Profil |
staco:
V čem je problém - neukládají se data z textarea do databáze, anebo je problém s tím, aby při načtení formuláře byla textarea předvyplněná nějakými daty? (omlouvám se, ale z popisu mi to nebylo úplně jasné) |
||
staco Profil |
#3 · Zasláno: 14. 6. 2013, 23:24:25
Tori:
Pozeral som to a prispevok v databaze ulozeny je ,ale mi ho neukaze na stranke = prispevok je prazdny |
||
Kajman Profil |
#4 · Zasláno: 14. 6. 2013, 23:33:51
Ukažte kód, který nedělá to, co očekáváte.
|
||
staco Profil |
Kajman:
echo '</p><p>' . bbcode($db, nl2br(htmlspecialchars($body))) . '</p>'; Tu je vlozenie noveho prispevku do databazy if (isset($_REQUEST['action'])) { switch (strtoupper($_REQUEST['action'])) { case 'ODOSLAT PRISPEVOK': if (isset($_POST['subject']) && isset ($_POST ['body']) && isset($_SESSION['user_id'])) { $sql = 'INSERT INTO frm_posts (id, topic_id, forum_id, author_id, update_id, date_posted, date_updated, subject, body) VALUES ( NULL, ' . $_POST['topic_id'] . ', ' . $_POST['forum_id'] . ', ' . $_SESSION['user_id'] . ', 0, "' . date('Y-m-d H:i:s') . '", 0, "' . $_POST['subject'] . '", "' . $_POST['body'] . '")'; mysql_query($sql, $db) or die(mysql_error($db)); $postid = mysql_insert_id(); $sql = 'INSERT IGNORE INTO frm_post_count (user_id, post_count) VALUES (' . $_SESSION['user_id'] . ',0)'; mysql_query($sql, $db) or die(mysql_error($db)); $sql = 'UPDATE frm_post_count SET post_count = post_count + 1 WHERE user_id = ' . $_SESSION['user_id']; mysql_query($sql, $db) or die(mysql_error($db)); } $topicid = ($_POST['topic_id'] == 0) ? $postid : $_POST['topic_id']; header('Location: frm_view_topic.php?t=' . $topicid . '#post' . $postid); exit(); break; |
||
Tori Profil |
#6 · Zasláno: 14. 6. 2013, 23:47:22
staco:
Co dělá funkce bbcode? Vrací to co má? Když ji vyhodíte a necháte jen data z databáze (ošetřené tím htmlspecialchars), zobrazí se něco? |
||
staco Profil |
#7 · Zasláno: 14. 6. 2013, 23:53:16
Tori:
Opakujem ze nemam problem z zobrazenim prispevku ktory uzivatel normalne napise priamo do textarea - ten sa mi vzdy zobrazi! Ale ak skusim vlozit skopirovany text napr.z ineho clanku tak vystup je prazdny S tou funkciou bbcode to vyskusam a uvidim = inak ma na starosti formatovacie znacky- cody v texte |
||
Tori Profil |
#8 · Zasláno: 14. 6. 2013, 23:58:46
Chybí vám escapování dat, která vkládáte do DB (mysql_real_escape_string pro řetězce, nebo přetypování na int u čísel) - takhle vám to rozbije každý apostrof, který se ve vkládaných datech objeví.
|
||
staco Profil |
#9 · Zasláno: 15. 6. 2013, 00:03:27 · Upravil/a: staco
Odstranenie bbcode sa nijak neprejavilo
Dakujem za rady.Skusim to opravit zajtra a dam vediet Dakujem! |
||
staco Profil |
staco, staco:
Dobry den ,Tak som to takto upravil,chybu pri vkladani mi to sice nevyhodi ,ale v databaze to nemam ani ulozene - pokial ide o text s apostrofom a inymi znackami,ostatne - obycajne texty sa mi ulozia v Db ale uzivatel ich nevidi Tu je kod Tucnym pismom je zvyraznena zmena: case 'ODOSLAT PRISPEVOK': if (isset($_POST['subject']) && isset ($_POST ['body']) && isset($_SESSION['user_id'])) { $sql = 'INSERT INTO frm_posts (id, topic_id, forum_id, author_id, update_id, date_posted, date_updated, subject, body) VALUES ( NULL, ' . $_POST['topic_id'] . ', ' . $_POST['forum_id'] . ', ' . $_SESSION['user_id'] . ', 0, "' . date('Y-m-d H:i:s') . '", 0, "' . $_POST['subject'] . '", "' . mysql_real_escape_string($body) .'")'; mysql_query($sql, $db) or die(mysql_error($db)); $postid = mysql_insert_id(); $sql = 'INSERT IGNORE INTO frm_post_count (user_id, post_count) VALUES (' . $_SESSION['user_id'] . ',0)'; mysql_query($sql, $db) or die(mysql_error($db)); $sql = 'UPDATE frm_post_count SET post_count = post_count + 1 WHERE user_id = ' . $_SESSION['user_id']; mysql_query($sql, $db) or die(mysql_error($db)); } $topicid = ($_POST['topic_id'] == 0) ? $postid : $_POST['topic_id']; header('Location: frm_view_topic.php?t=' . $topicid . '#post' . $postid); exit(); break; Moderátor Kajman: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na
![]() |
||
Tori Profil |
$sql = 'INSERT INTO frm_posts (id, topic_id, forum_id, author_id, update_id, date_posted, date_updated, subject, body) VALUES ( NULL, ' . intval($_POST['topic_id']) . ', ' . intval($_POST['forum_id']) . ', ' . $_SESSION['user_id'] . ', 0, "' . date('Y-m-d H:i:s') . '", 0, "' . mysql_real_escape_string($_POST['subject']) . '", "' . mysql_real_escape_string($_POST['body']) .'")'; „obycajne texty sa mi ulozia v Db ale uzivatel ich nevidi“ Tj. z databáze se nic nenačte? A hledá se správně (= vypsal jste si SQL dotaz, jestli se tam vkládá správné ID apod.)? Předpokládám, že to asi bude jiný problém. |
||
staco Profil |
#12 · Zasláno: 17. 6. 2013, 18:36:00
Tori:
Dakujem za odpoved! Skusal som aj kod ktory napisali aj Vy,ale nepomaha Tento kod , echo '</p><p>' . bbcode($db, nl2br(htmlspecialchars($body))). '</p>'; potom mi skopirovany text pekne nacita na fore. A co sa tyka dotazu do SQL vsetko mam v Db nahrate,vsetko sedi,iba skopirovany text do textarea sa neukaze na stranke fora ,rucne napisany je OK a opakujem ak odstranim ochr.funkciu htmlspecialchars tak je vsetko OK. Tak neviem na angl.forach som cital o probleme s nastavenim unicode ale aj to mam ok ,teda aspon si myslim |
||
_es Profil |
#13 · Zasláno: 17. 6. 2013, 19:04:54
staco:
> Tento kod , echo '</p><p>' . bbcode($db, nl2br(htmlspecialchars($body))). '</p>'; „Ochránenie“ textu má prebehnúť pri ukladaní do databázy, nie pri jeho výpise. „ak to textarea vlozim napr.skopirovany text z zdrojoveho kodu“ Aký to má zmysel? Do tej textarey predsa patrí BBCode (asi, keďže používaš metódu bbcode ) a nie (asi) HTML kód (zdrojový kód).
|
||
staco Profil |
#14 · Zasláno: 17. 6. 2013, 20:20:51
_es:
echo '</p><p>' . bbcode($db, nl2br(htmlspecialchars($body))). '</p>'; -$body = je text ulozeny v db a chcem ho zobrazit uzivatelom htmlspecialchars - skor ako ho zobrazim najprv prevediem vsetky formatovacie znacky HTML na znakove sady,tym zabranujem vlozeniu skodliveho kodu HTML ,ktory moze uskodit stranke N12br - vsetky konce riadkov budu nahradene znacko <br> bbcode - funkcia mi vyhlada vsetky nahrady podla vzoru - formatovacie znacky Ak aj vynecham funkciu Bbcode nic sa nezmeni,ak vsak vynecham htmlspecialchars tak mi tam moze ktokolvek vlozit skodlivy kod |
||
Tori Profil |
#15 · Zasláno: 17. 6. 2013, 20:28:48
staco:
Koukněte se ještě sem: htmlspecialchars()bez všech parametrů "sežere" delší řetězec |
||
staco Profil |
#16 · Zasláno: 17. 6. 2013, 21:49:14 · Upravil/a: Moderátor (editace znemožněna) 18. 6. 2013, 10:36:01
Toto zabralo uz mi to funguje tak ako chcem ,dakujem vsetkym za vsetky odpovede!
Vlozenie do db : case 'ODOSLAT PRISPEVOK': if (isset($_POST['subject']) && isset ($_POST ['body']) && isset($_SESSION['user_id'])) { $sql = 'INSERT INTO frm_posts (id, topic_id, forum_id, author_id, update_id, date_posted, date_updated, subject, body) VALUES ( NULL, ' . $_POST['topic_id'] . ', ' . $_POST['forum_id'] . ', ' . $_SESSION['user_id'] . ', 0, "' . date('Y-m-d H:i:s') . '", 0, "' . $_POST['subject'] . '", "' . mysql_real_escape_string($_POST['body']) .'")'; mysql_query($sql, $db) or die(mysql_error($db)); Vystup do prehliadaca: echo '</p><p>' . bbcode($db, nl2br( html_entity_decode($body,ENT_QUOTES, "UTF-8"))). '</p>'; |
||
Časová prodleva: 12 let
|
0