ugrás a tartalomhoz

Formázások MYSQL-ben

rentip · 2009. Okt. 31. (Szo), 14.56
Sziasztok.
Nemrég beleütköztem egy problémába. Csak úgy próbaképpen kipróbáltam a CKEditort. Mysql adatbázisba akartam feltölteni vele dolgokat, minden ment is szépen, de a formázásokat nem töltötte fel megfelelően. Aztán arra már rájöttem, hogy nem a CKEditor hibája.
Hogy érthetőbb legyek:

Ezt akarom feltölteni például (CKEditorral vagy bármivel):
<font color="red">ez itt piros</font>
Ehelyett ez kerül az adatbázisba:
<font color=\"red\">ez itt piros</font>
Ezzel az a gond, hogy amikor le akarom kérdezni és ki akarom iratni, akkor a formázások nem érvényesülnek.

Be lehet valahol állítani esetleg a Phpmyadminba? Vagy hogy tudnám úgy lekérdezni, hogy azok a "\" jelek ne jelenjenek meg? Vagy egyéb ötlet?
Már próbáltam rákeresni több helyen, de azt se nagyon tudom, hogyan lehetne erre keresni.
Előre is köszönöm.
 
1

feloldó jel

ironwill · 2009. Okt. 31. (Szo), 15.51
Szia!

OFF
Nem ismerem a CKEeditor-t, de annyit el tudok mondani, hogy azok feloldó jelek. Nem tudom mennyire ismered, a lényeg az, hogy olyankor szoktuk alkalmazni, amikor egy jelet nem szeretnénk, hogy értelmezzen a fordító.

pl.
<?php print "<a href='javascript:sgDo(\"oneParam\")'"; ?>

A macskakörmökön belül csak idézőjelet használhatsz, viszont szükséged lenne még egy szintre. Ilyenkor tudod használni a feloldó jelet és így figyelmen kívül hagyja a php fordító. (különben úgy értelmezné, hogy a oneParam előtt vége a string-nek és a "oneParam" egy php változó)

ON
Ki kellene íratnod, hogy a küldés előtt (kliens oldalon) milyen formában van és megnézni, hogy küldés után a szerver oldalon hogy néz ki a kód. Szerintem maga az editor tárolja így, "előre látásból" és már eleve így küldi át.

(Esetleg megpróbálhatnád a TinyMCE-t. Az egyik, ha nem a legismertebb felületi szerkesztő)

üdv, Gábor
2

én azt szeretném ha értelmezné a fordító :)

rentip · 2009. Okt. 31. (Szo), 16.23
Köszi, most már legalább tudom mire való. De én azt szeretném ha a fordító értelmezné azokat. De mint irtam ez nem a CKEditor hibája.
Ha egy sima text areaból töltöm fel az adatbázisba például ezt:
<font color="red">ez itt piros</font>
akkor is így kerül be az adatbázisba, hogy:
<font color=\"red\">ez itt piros</font>
És ha lekérdezem ugye, ki akarom iratni például, akkor a fordító nem értelmezi, ahogy írtad. Biztos, hogy a MYSQL a ludas, mert ő teszi valamiért oda. De én azt szeretném, hogy ne úgy illessze be, hanem úgy ,hogy lekérésnél a fordító értelmezni is tudja (azokat a "\" jeleket ne tegye be az adatbázisba). Ezért nem működik pl. a CKEditor sem.
Remélem érthető :)
Szóval: miért alakítja át a MYSQL a feltöltött programkódot, úgy hogy a fordító ne tudja értelmezni, és ki lehet-e ezt kerülni?
3

Tárolás

Poetro · 2009. Okt. 31. (Szo), 16.24
Anélkül, hogy tudnánk hogyan tárolod az adatot, és mik a FORM-ból jövő adatok, elég nehéz válaszolni. Én a magic quotes-ra gyanakszom.
4

Megoldva

rentip · 2009. Okt. 31. (Szo), 17.19
Poetro hozzászólása alapján a magic quotes-ra kezdtem keresgélni. phpinfo()-val megnéztem, hogy a tárhelyen ez be van kapcsolva, így ez okozza a problémát. HTTP kéréseknél (GET,POST) escapel bizonyos dolgokat, hogy a fordítók ne értelmezzék (elvileg alapértelmezetten mindenhol be van kapcsolva, ha jól tudom biztonsági okokból).

A megoldás: stripslashes.
Ha be van kapcsolva a magic quotes ezzel a függvénnyel ki lehet kerülni.

egy példa annak aki nem tudná hogyan lehet alkalmazni:
szoveg = '" .  stripslashes($_POST['szoveg']) . "'");
egyébként meg: stripslashes

Köszönöm mindenkinek a segítséget.
5

jönnek majd a kezdők ..

randomly · 2009. Okt. 31. (Szo), 20.38
Helló!

Jönnek majd a kezdők, másolnak és nem működik.
 szoveg = '" .  stripslashes($_POST['szoveg']) . "'");
Talán helyesen:
 $szoveg = stripslashes($_POST['szoveg']);
rand
6

Magicquotes-ről

gphilip · 2009. Nov. 2. (H), 16.23
Hali!

Szerintem jóval értelmesebb kikapcsolni a magic-quotes-t. Ha nincs hozzáférésed a webszerver konfigurációjához (vagy több site-ot is hosztol a szerver), akkor a legkönnyebben htaccess fájllal teheted ezt meg:

php_flag magic_quotes_gpc off
SetEnv MAGIC_QUOTES 0


Nem mellékes ilyenkor megemlteni, hogy a magicquotes kikapcsolása csak abban az esetben javasolt, ha tisztában vagy ennek következményeivel, és a kódod védve van az injection tÍpusú sebezhetőségektől.
7

Mysql-ből visszakapott szöveg formázása

geewizard · 2009. Dec. 4. (P), 00.05
Sziasztok!
Nekem egy olyan problémám lenne a CKeditorral, hogy az általa megformázott szöveget szeretném módosítani, amit Mysql-ban tároltam el előtte, de nem az egész szöveget dobja be a textareába és nem is formázottan.
Ha Mysql-ből íratom ki így, akkor jól megjelenik a formázott szöveg:
<?= $sor["text"] ?>

Ha a módosító részben a CK editorba illesztem be akkor az elején leírt problémába ütközöm :<textarea name="text" ><?= $text?></textarea> <script type="text/javascript"> CKEDITOR.replace( 'text' ); </script>

Nem értem miért nem működik. Ha egy bármelyik weboldalról jelölök ki bármekkora szöveget és akár képet, linket és vágúlappal bemásolom a CKeditorba, akkor azt úgy illeszti be, mint a kimásolt weboldalon van , formázva és a linkek is és képek is működnek. Akkor amit a CKeditor csinált előtte , miért nem tudja értelmezni?
Ha tud valaki segíteni kérem válaszoljon.
Köszi
Gábor