קוד נכנס לDB ע"י משפט SQL מעובד ולא כמות שהוא
-
אני משער שזה כלים אוטומטיים של ניקוי קלט.
תתבונן בשלבי הבעיה: תבדוק איך נראה הטקסט בדפדפן בשליחה של הrequest, ותדפיס אותו לטסט בזמן התקבלותו לPHP. אם הבעיה היא רק בהכנסה למסד כפי שאתה חושד אז תביא פה את הקוד של ההכנסה + דוגמת צנזור כפי שביקש @yossiz -
- המעבר שורות מתבצע כבר בPHP. אבל הטקסט עצמו חוזר.
- הבעיה השניה היא שהוא לא מוכן להכניס את התו '#' - שמשמש להערות.
הDB הוא PostgreSql
קוד לדוגמא
נשלח:$id_mode = (new mode)->get_id($_REQUEST["Mode"]); //בחירת נתון //$id_to_update = (new mode)->get_id_mode($id_mode,$_REQUEST["mod_mode"]); //echo $_REQUEST["mod_mode"],$_REQUEST["name"];die; //סתם הערות בקוד $id_to_update = (new mode)->get_id_mode($id_mode,$_REQUEST["mod_mode"]); # $id_update = (new manege)->get_id($_REQUEST["mode"],$_REQUEST["name"]);
מתקבל (לתוך הDB):
$id_mode = (new mode)->get_id($_REQUEST["Mode"]);//בחירת נתון//$id_to_update = (new mode)->get_id_mode($id_mode,$_REQUEST["mod_mode"]);//echo $_REQUEST["mod_mode"],$_REQUEST["name"];die;//סתם הערות בקוד$id_to_update = (new mode)->get_id_mode($id_mode,$_REQUEST["mod_mode"]);
-
@yossiz המעברי שורות נעלמים (והכל משורשר בשורה אחת)
אבל ה# עדיין לא קוטעת.השלב הזה של הקטיעה ע"י ה# נהיה רק בהכנסה לDB.(וכמדו' שהסיבה שהוא קוטע מכאן והלאה את הכל, ולא רק שורה אחת, כיון שאחרי שהוא נהיה לשורה אחת כשהגיע לPHP, אז ה# קוטעת את כל שאר השורה. אבל אם יתוקן המעברי שורות אז רק אותה השורה תיקטע...)עריכה:
גם ה# קוטעת כבר אז.במילים אחרות: לא תקין.
-
אם זה יעניין מה עשיתי בסוף.
בצד קליינט לפני השליחה:
let arr_code = func.code .replaceAll(String.fromCharCode(10),"~") .replaceAll(String.fromCharCode(13),"~");
- (ה'סולמית' עבור ההערות של PHP הוחלפה ל-// )
php:
$code = str_replace("~",chr(13), $code);