TinyMCE encode-decode

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
heavyaris
Δημοσιεύσεις: 295
Εγγραφή: 15 Απρ 2008 21:31

TinyMCE encode-decode

Δημοσίευση από heavyaris » 19 Δεκ 2010 19:24

παιδιά, έχω ενσωματώσει τον συγκεκριμένο editor, αλλά όπως λέει

Κώδικας: Επιλογή όλων

	<!-- remember HTML in a textarea should be encoded -->
και όπως είναι φυσικό η μορφοποίηση του κειμένου δεν μεταφέρετε, τι μπορώ να κάνω;
ευχαριστώ πολύ.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

TinyMCE encode-decode

Δημοσίευση από Apostolis_38 » 19 Δεκ 2010 21:59

Τι εννοείς "η μορφοποίηση του κειμένου δεν μεταφέρετε";

heavyaris
Δημοσιεύσεις: 295
Εγγραφή: 15 Απρ 2008 21:31

TinyMCE encode-decode

Δημοσίευση από heavyaris » 20 Δεκ 2010 00:21

τα html tags για χρώματα, bold κλπ..

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

TinyMCE encode-decode

Δημοσίευση από Apostolis_38 » 20 Δεκ 2010 08:35

Αν πατήσεις το κουμπί που λέει HTML στο παράθυρο που εμφανίζει δεν υπάρχουν τα tags στο κείμενο;

heavyaris
Δημοσιεύσεις: 295
Εγγραφή: 15 Απρ 2008 21:31

TinyMCE encode-decode

Δημοσίευση από heavyaris » 20 Δεκ 2010 14:40

ναι υπάρχουν και απο ότι βλέπω μεταφέρονται και στην επόμενη σελίδα με το submit, απλά μάλλον πρέπει να βρώ κάποια συνάρτηση να τα διαβάζει και αυτά, γιατί μόνο το κείμενο απεικονίζεται:
http://www.pieria-its.gr/dreambet/admins/input.html

τελικά μόνο στο χρώμα είναι το πρόβλημα..

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

TinyMCE encode-decode

Δημοσίευση από Apostolis_38 » 20 Δεκ 2010 14:57

Απ' ότι είδα το πρόβλημα είναι οτι τα καταχωρεί έτσι:

Κώδικας: Επιλογή όλων

<p><span style=\"color&#58; #ff0000;\">test</span></p>
ενώ θα έπρεπε να είναι έτσι:

Κώδικας: Επιλογή όλων

<p><span style="color&#58; #ff0000;">test</span></p>
.

Δηλαδή χωρίς τις escape slashes (\)

Μήπως έχεις βάλει κάποια περίεργη ρύθμιση στο printext.php;

Δηλαδή και addslashes και mysql_real_escape_string και (πιθανός) ενεργοποιημένο το magic_quotes_gpc στο php.ini;

Κάτι τέτοιο πρέπει να παίζει.

heavyaris
Δημοσιεύσεις: 295
Εγγραφή: 15 Απρ 2008 21:31

TinyMCE encode-decode

Δημοσίευση από heavyaris » 20 Δεκ 2010 15:02

ο κώδικας της σελίδας που διαβάζει και δείχνει, είναι:

Κώδικας: Επιλογή όλων

<?php echo html_entity_decode&#40;$text&#41;;?>
<?php echo $text; ?>
και οι 2 το ίδιο html δείχνουν..

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

TinyMCE encode-decode

Δημοσίευση από Apostolis_38 » 20 Δεκ 2010 15:10

Γιατί χρησιμοποιείς το html_entity_decode;

Απενεργοποίησέ το και (το encode φυσικά) και βάλε στο tinyMCE.init αυτό:

Κώδικας: Επιλογή όλων

entity_encoding &#58; "raw",
να δούμε πως τα καταχωρεί.

heavyaris
Δημοσιεύσεις: 295
Εγγραφή: 15 Απρ 2008 21:31

TinyMCE encode-decode

Δημοσίευση από heavyaris » 20 Δεκ 2010 15:11

το πρόβλημα το έλυσα προσωρινά με stripslashes()
δεν ξέρω όμως αργότερα, όταν αυτό το κείμενο θα ανεβαίνει σε πεδίο τις βάσης αν θα προκαλέσει πρόβλημα, πόσο μάλλον όταν έρθει η ώρα ο editor να ανοίξει ένα τέτοιο πεδίο για να κάνει edit ένα άρθρο..

heavyaris
Δημοσιεύσεις: 295
Εγγραφή: 15 Απρ 2008 21:31

TinyMCE encode-decode

Δημοσίευση από heavyaris » 20 Δεκ 2010 15:15

Apostolis_38 έγραψε:Γιατί χρησιμοποιείς το html_entity_decode;
με μπέρδεψε το παρακάτω σχόλιο στον κώδικα, αλλά τώρα κατάλαβα οτί μιλούσε για έναν γενικό κανόνα..

Κώδικας: Επιλογή όλων

   <!-- remember HTML in a textarea should be encoded -->

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

TinyMCE encode-decode

Δημοσίευση από Apostolis_38 » 20 Δεκ 2010 15:22

Γενικώς, έναν από τους τρείς τρόπους που σου ανέφερα (addslashes/mysql_real_escape_string/magic_quotes_gpc) πρέπει να τον χρησιμοποιείς για λόγους ασφαλείας.
Εναν όμως από όλους γιατί αλλιώς γίνεται μπάχαλο.

Βάλε και την ρύθμιση που σου έδωσα για το tinyMCE.init ώστε να μην καταχωρεί html entities και θα είσαι μια χαρά.
Οσον αφορά βέβαια το τελευταίο εξαρτάται και από την κωδικοποίηση που χρησιμοποιείς.
Με iso-8859-7 ή utf-8 είσαι εντάξει.

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

TinyMCE encode-decode

Δημοσίευση από cpulse » 20 Δεκ 2010 18:35

Υπάρχουν HTML tags, για παράδειγμα

Κώδικας: Επιλογή όλων

<p>Κείμενο</p>
Όταν γράφεις με οποιοδήποτε rich text editor το αποτέλεσμα βγαίνει σε HTML. Αλλά όμως και αυτό το HTML πρέπει να μεταφερθεί μέσα από μια HTML σελίδα.

Μια απλή σκέψη δηλαδή για να μεταφέρεις κείμενο είναι κάτι σαν κι αυτό

Κώδικας: Επιλογή όλων

<form name="frm" method="post" action="">
    <textarea name="txt">
        <p>Κείμενο</p>
    </textarea>
</form>
Εδώ όμως μπλέκεται το HTML του περιεχομένου με το HTML του περιβάλλοντος. Οπότε ο παραπάνω τρόπος είναι λάθος. Ο σωστός θα ήταν

Κώδικας: Επιλογή όλων

<form name="frm" method="post" action="">
    <textarea name="txt">
        &lt;p&gt;Κείμενο&lt;/p&gt;
    </textarea>
</form>
Αντικαταστούμε τους ειδικούς χαρακτήρες με τα αντίστοιχα HTML entities, για παράδειγμα το < με το &lt;, το > με το &gt;, το " με το &quot; και το & με το &amp;.

Αυτό εννοεί όταν λέει <!-- remember HTML in a textarea should be encoded -->

Με την PHP αυτό απλά γίνεται με την εντολή htmlspecialchars()

Αντίστροφα, όταν έχουμε ένα HTML entity και θέλουμε να το γυρίσουμε στην κανονική του μορφή, τότε είναι που χρησιμοποιούμε την html_entity_decode(). Σε αυτή την περίπτωση όμως αυτό δεν το χρειαζόμαστε.

Σε γενικές γραμμές αυτό που πρέπει να εφαρμόσεις στον κώδικα σου είναι αυτό

Κώδικας: Επιλογή όλων

<form name="frm" method="post" action="">
    <textarea name="txt"><?php

if &#40;isset&#40;$_POST&#91;'txt'&#93;&#41;&#41; &#123;
    echo htmlspecialchars&#40;$_POST&#91;'txt'&#93;&#41;;
&#125;
else &#123;
    ... διάβασμα από την βάση δεδομένων για υπάρχων κείμενο ...
    echo htmlspecialchars&#40;$keimeno_apo_tin_basi&#41;;
&#125;

?></textarea>
</form>
Τα <?php και ?> επίτηδες τα κολλάμε στο <textarea>..</textarea> γιατί τα line feeds τα παίρνει σαν κανονικό κείμενο.

Και κάνε κι αυτό που σου λέει ο Αποστόλης με το entity_encoding raw γιατί χωρίς αυτό ο TinyMCE παίρνει τους Ελληνικούς χαρακτήρες σαν μαθηματικά σύμβολα και τα αποθηκεύει σαν HTML entities.

heavyaris
Δημοσιεύσεις: 295
Εγγραφή: 15 Απρ 2008 21:31

TinyMCE encode-decode

Δημοσίευση από heavyaris » 20 Δεκ 2010 20:02

σας ευχαριστώ για τις απαντήσεις.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης