הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   עבודה תקינה עם עורך טקסט עשיר בPHP (https://hosts.co.il/forums/showthread.php?t=105832)

איציק ברבי 02-12-13 18:52

עבודה תקינה עם עורך טקסט עשיר בPHP
 
היי,
בעבר יצא לי להסתבך עם עורכי טקסט כמו JSNICE EDITOR
CKEDITOR..
עם השילוב שלהם בPHP כלומר הכנסה למסד וכ'ו.

עכשיו נניח ומיקמתי את עורך הטקסט CKEDITOR(יש עורך אחר שאתם ממליצים עליו?)
ישנם הגדרות מיוחדות שאני אצטרך להגדיר לו ?

ובמקרה של הכנסה\שליפה מהמסד מה אני צריך לעשות ?
ישנו תהליך סינון מיוחד שהוא אמור לעבוד? מכוון ואם כתוב ' השאילתה בורחת, ואם אני עושה htmlspecialchars זה לא יוחזר כמו שצריך(למרות ההגיון שאחרי זה אני אעשה htmlspecialchars_decode) אבל משום מה עושה תקלה.

אשמח לשמוע ממכם איך אתם מסתדרים בנושאים האלו.

בניה 02-12-13 19:26

אם תכניס למסד באמצעות prepared statements/ bind params לא תהיה שום בעיה
אם אתה לא עובד עם PDO/MYSQLI
לפני שאתה מכניס למסד תעשה mysql_real_escape_string וזהו. רק תוודא שאיו לך בטעות את הדינוזאור שמסרב להכחד magic quotes עובד בשרת

htmlspecialchars עושים כשרוצים לשפוך את הטקסט מהDB לתוך הEDITOR

* זה לא מתייחס לטיפול בXSS אם הHTML מגיע ממשתמשים מזדמנים
זו כבר בעיה אחרת והטיפול בה הוא אחר.

איציק ברבי 02-12-13 19:56

ציטוט:

נכתב במקור על ידי בניה (פרסם 884530)
אם תכניס למסד באמצעות prepared statements/ bind params לא תהיה שום בעיה
אם אתה לא עובד עם PDO/MYSQLI
לפני שאתה מכניס למסד תעשה mysql_real_escape_string וזהו. רק תוודא שאיו לך בטעות את הדינוזאור שמסרב להכחד magic quotes עובד בשרת

htmlspecialchars עושים כשרוצים לשפוך את הטקסט מהDB לתוך הEDITOR

* זה לא מתייחס לטיפול בXSS אם הHTML מגיע ממשתמשים מזדמנים
זו כבר בעיה אחרת והטיפול בה הוא אחר.

שאתה מדבר על prepared statements \ bind params
על מה אתה מדבר?
מחלקות ?
תוכל להפנות אותי ?

אדיר 02-12-13 20:07

http://php.net/manual/en/book.pdo.php

בניה 03-12-13 07:22

מאוד מומלץ לעבור לעבוד עם PDO/MYSQLI,
אבל הכנתי דוגמת קוד עם mysql
http://pastebin.com/NqhDAqtN
לא הרצתי את הקוד הזה אז יכולות להיות שגיאות.

איציק ברבי 11-12-13 18:51

ציטוט:

נכתב במקור על ידי בניה (פרסם 884555)
מאוד מומלץ לעבור לעבוד עם PDO/MYSQLI,
אבל הכנתי דוגמת קוד עם mysql
http://pastebin.com/NqhDAqtN
לא הרצתי את הקוד הזה אז יכולות להיות שגיאות.

הייתי עושה ככה כל הזמן,
הרצתי בדיקות על הmagic quate והוא כבוי,
אבל עדיין אני רואה במסוף בfirebug שהתוכן שנשלח הוא אותו דבר(תקין, לא חסר כלום).
אבל בPHP נתתי לו echo והוא נשבר מאותו הרגע שהוא זיהה " או '.

בשתי המצבים אחד רגיל, והשני mysql_real_escape_string()

Haimz 11-12-13 23:28

במידה ויש לך magic quotes, אז תכבה אותו (אפשר דרך הHTACCESS גם אני חושב, או דרך קבצי הPHP עצמם)
במידה ואתה לא מצליח לכבות אותו, תריץ stripslashes על כל המערכים הגלובאלים שקולטים משתנים מהגולש.

ממליץ על CKEDITOR..

איציק ברבי 12-12-13 01:30

ציטוט:

נכתב במקור על ידי Haimz (פרסם 884884)
במידה ויש לך magic quotes, אז תכבה אותו (אפשר דרך הHTACCESS גם אני חושב, או דרך קבצי הPHP עצמם)
במידה ואתה לא מצליח לכבות אותו, תריץ stripslashes על כל המערכים הגלובאלים שקולטים משתנים מהגולש.

ממליץ על CKEDITOR..

הבעיה לא הייתה בmagic_quotes
הכל היה מכובה, ניסיתי לבצע את מה שאתה אומר לי עם array_walk_recursive()(אם ככה קראו לפוקנציה אני לא זוכר במדוייק).
הבעיה הייתה ספציפית בקוד JS שכתבתי שמעביר את הנתונים,
לאחר ש-בניה התותח מהפורום עזר לי בדקנו את זה והוא הבין שצריך להגדיר את המשתנה כל עוד הוא לא מוגדר כ serialize()

הקוד התקין,

PHP קוד:

$("form#updateInfo").submit(function(){
        $(
"div#loading").html('<img class="loading" src="img/loading.gif" alt="" />');
        var 
content CKEDITOR.instances['editor1'].getData();        
        $.
ajax({
            
url"Sources/Ajax.php?act=updateInfo",
            
type"POST",
            
data: {
                
page: $("input[name=page]").val(),
                
contentcontent
            
},
            
success: function(callback){
                $(
"div#loading").html('');
                if(
callback != "OK"){
                    $(
"span#cke_editor1").addClass("err");
                    $(
"div#loading").html(error(callback));
                }else{
                    $(
"div#loading").html(ok("המידע עודכן בהצלחה!"));
                    $(
"div.n_error").remove();
                    $(
"span#cke_editor1").removeClass("err");
                    $(
"span#cke_editor1").val("");
                }
            }
        });
        return 
false;
    }); 



כל הזמנים הם GMT +2. הזמן כעת הוא 12:18.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ