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

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

איציק ברבי 06-01-13 19:10

magic quate בורח.
 
אני משתמש בעורך טקסט,
ckeditor..
ברגע שאני רושם גרש אחד, כל התוכן שבא אחריו כולל אותו נעלם,
עטפתי בmysql_real_escape_string..

והתצוגה באמצעות stripslash עדיין יש פה קאצ' אני לא מצליח להבין מה הבעיה.

Liorl 07-01-13 16:21

htmlspecialchars() ?

איציק ברבי 07-01-13 17:11

ניסיתי את זה..

Haimz 07-01-13 17:27

קצת קשה לעזור לך כשאין פה יותר פרטים על הבעיה, תוכל לצרף קודים שלך \ דמו.. משהו..

אדיר 07-01-13 23:13

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

AlmogBaku 18-01-13 07:41

צור קשר עם מנהל השרת שלך ותסביר לו שזו פוטנקצייה שיצאה מהחוק(=כבר לא מקובל להשתמש בה).
ושיסיר אותה.

איציק ברבי 18-01-13 13:47

ציטוט:

נכתב במקור על ידי AlmogBaku (פרסם 868452)
צור קשר עם מנהל השרת שלך ותסביר לו שזו פוטנקצייה שיצאה מהחוק(=כבר לא מקובל להשתמש בה).
ושיסיר אותה.

יצאה מהחוק? יש דרך לנסח שהפונקציה כבר לא תקפה.


ואני רוצה להסביר, htmlspecialchars ו mysql_real_escape_string
לא כאלה רלוונטים עבורי,
מכוון וזה עורך טקסט, והוא שומר בפנים טקסט בHTML אז מין הסתם שיהיו תווים לא חוקיים.

אין פתרון אחר?

חשבתי על להכניס למסד בצורה כזו: htmlspecialchars
ולהדפיס עם htmlspecialchars_decode..

AlmogBaku 18-01-13 16:26

ציטוט:

נכתב במקור על ידי איציק ברבי (פרסם 868481)
יצאה מהחוק? יש דרך לנסח שהפונקציה כבר לא תקפה.


ואני רוצה להסביר, htmlspecialchars ו mysql_real_escape_string
לא כאלה רלוונטים עבורי,
מכוון וזה עורך טקסט, והוא שומר בפנים טקסט בHTML אז מין הסתם שיהיו תווים לא חוקיים.

אין פתרון אחר?

חשבתי על להכניס למסד בצורה כזו: htmlspecialchars
ולהדפיס עם htmlspecialchars_decode..

כן נו.. הבנת את הכוונה שלי..

האמת שכבר במשך תקופה ארוכה אני לא כותב php native...
אבל לא הבנתי למה לא להכניס את הHTML למסד כHTML? איזה הגיון יש מאחורי זה?
בעיה פותרים מהשורש, ולא מהמסביב.

*אגב הפתרון המקובל במערכות שונות(symfony, wordpress, drupal) למאג'יק הוא בד"כ לסנטז מחדש כל פלט שנכנס ב-REQUEST.. ובמידה והמאג'יק מופעל לנטרל אותו..
פשוט תעשה חיפוש בקוד של וורדפרס למשל איך הם עושים את זה.. זה דיי פשוט

אדיר 18-01-13 16:36

אתם סתם זורקים כאן פתרונות בלי להבין בכלל איפה באמת הבעיה.
ציטוט:

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


BuildDream 18-01-13 17:31

ציטוט:

נכתב במקור על ידי איציק ברבי (פרסם 868481)
יצאה מהחוק? יש דרך לנסח שהפונקציה כבר לא תקפה.


ואני רוצה להסביר, htmlspecialchars ו mysql_real_escape_string
לא כאלה רלוונטים עבורי,
מכוון וזה עורך טקסט, והוא שומר בפנים טקסט בHTML אז מין הסתם שיהיו תווים לא חוקיים.

אין פתרון אחר?

חשבתי על להכניס למסד בצורה כזו: htmlspecialchars
ולהדפיס עם htmlspecialchars_decode..

אין שום קשר בין mysql_real_escape_string לבין htmlspecialchars - המטרה שלהן שונה לגמרי. אם אתה הולך להכניס את המידע לבסיס נתונים mysql - אתה עדיין צריך להשתמש בפונקציה mysql_real_escape_string כדי למנוע הזרקת קוד לשאילתה שלך.

Rebuilt 19-01-13 17:57

ציטוט:

נכתב במקור על ידי BuildDream (פרסם 868512)
אין שום קשר בין mysql_real_escape_string לבין htmlspecialchars - המטרה שלהן שונה לגמרי. אם אתה הולך להכניס את המידע לבסיס נתונים mysql - אתה עדיין צריך להשתמש בפונקציה mysql_real_escape_string כדי למנוע הזרקת קוד לשאילתה שלך.

גם בשליפה (SELECT) צריך להשתמש בmysql_real_escape_string.

אדיר 19-01-13 18:04

תתקדמו בבקשה..
http://php.net/manual/en/pdostatement.bindparam.php

BuildDream 19-01-13 18:48

ציטוט:

נכתב במקור על ידי Rebuilt (פרסם 868616)
גם בשליפה (SELECT) צריך להשתמש בmysql_real_escape_string.

זה מאוד תלוי בשאילתה שלך, אם אתה עושה שליפה שאין בה שום קלט אין לך סיבה להשתמש בmysql_real_escape_string.

וכמו שxPerfection אמר, אם אתה רוצה באמת לעבוד בטוח אז תעבוד עם מחלקה שעובדת בצורה בטוחה עם בסיסי נתונים, כמו PDO שעושה עבודה מצויינת.

איציק ברבי 20-01-13 02:00

אני שמח שזה הפך לדיון נחמד כאן בפורום אבל מצאתי פתרון בצד לקוח, שיזהה אם קיים \ וימחק אותו.
אבל מעולם לא שמעתי על המחלקה PDO ואשמח לבדוק אותה מקרוב תודה !

וראיתי שמשהו אמר שמערכות ניהול תוכן כמו JOOMLA ו WP ו DRUPAL מבטלות את ה MQ דרך PHP,
למישהו יש מושג איך הם עשו את זה? כי לפי תוצאות החיפוש שלי שום דבר לא עבד כמו שצריך.

אדיר 20-01-13 09:13

get_magic_quotes_gpc, אם הוא מחזיר 1 אז עושים stripslashes.

אתה בטוח אבל שזאת באמת הבעיה?
לאו דווקא שזה לא נכון, אבל זאת לא חייבת להיות בהכרח הבעיה - מה שאתה מתאר יכול לקרות מהמון סיבות אחרות.

בניה 20-01-13 09:57

ברוב השרתים השיתופיים אפשר לבטל אותו עם php_flag ב htaccess
לאחר מכן בקוד כמו שxPerfection כתב אפשר לבצע בדיקה ואם הוא עדיין מופעל(כי בשרת הספציפי הזה הHTACCESS לא עבד) אפשר להשתמש בstripslashes

כתבתי פעם הסבר קצר על HTACCESS
http://www.hosts.co.il/forums/showthread.php?t=86350


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

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