Autor Zpráva
staco
Profil
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
Tori:
Pozeral som to a prispevok v databaze ulozeny je ,ale mi ho neukaze na stranke = prispevok je prazdny
Kajman
Profil
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>';
kde $body je obsah textarea


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
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
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
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
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']) .'")';
Data ze session by nemělo být nutné escapovat. Sloupce, do kterých vkládáte nulu, by ji mohly mít jako výchozí hodnotu a z dotazu je vynechat.

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
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>';
ktory sa mi stara o ochranenie a vypisanie textu mi funguje len v pripade ak odstranim funkciu htmlspecialchars
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
staco:
Tento kod ,
echo '</p><p>' . bbcode($db, nl2br(htmlspecialchars($body))). '</p>';
ktory sa mi stara o ochranenie a vypisanie textu
„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
_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
staco:
Koukněte se ještě sem: htmlspecialchars()bez všech parametrů "sežere" delší řetězec
staco
Profil
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>';

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: