קוד נכנס לDB ע"י משפט SQL מעובד ולא כמות שהוא
-
אני מנסה להכניס קוד PHP (שהתקבל מהקליינט) לתוך המסד נתונים באמצעות משפט SQL בPHP.
איך אני מטמיע אותו כטקטס מוחלט שהוא לא יעבד אותו בכלל. כי כרגע הוא מסנן כל מיני דברים, וכמו"כ הוא מבטל את מעבר השורות.תודה
-
@chagold אמר בקוד נכנס לDB ע"י משפט SQL מעובד ולא כמות שהוא:
כי כרגע הוא מסנן כל מיני דברים
השאלה היא מי מסנן? PHP או MYSQL?
וגם, איזה "כל מיני דברים"?אפשר קוד לדוגמה?
-
לגבי מעברי השורות: https://stackoverflow.com/a/4972522
-
אני משער שזה כלים אוטומטיים של ניקוי קלט.
תתבונן בשלבי הבעיה: תבדוק איך נראה הטקסט בדפדפן בשליחה של ה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"]);
-
chagoldהשיב לyossiz ב 11 בנוב׳ 2020, 21:03 נערך לאחרונה על ידי chagold 11 בנוב׳ 2020, 21:07
@yossiz המעברי שורות נעלמים (והכל משורשר בשורה אחת)
אבל ה# עדיין לא קוטעת.השלב הזה של הקטיעה ע"י ה# נהיה רק בהכנסה לDB.(וכמדו' שהסיבה שהוא קוטע מכאן והלאה את הכל, ולא רק שורה אחת, כיון שאחרי שהוא נהיה לשורה אחת כשהגיע לPHP, אז ה# קוטעת את כל שאר השורה. אבל אם יתוקן המעברי שורות אז רק אותה השורה תיקטע...)עריכה:
גם ה# קוטעת כבר אז.במילים אחרות: לא תקין.
-
אם זה יעניין מה עשיתי בסוף.
בצד קליינט לפני השליחה:
let arr_code = func.code .replaceAll(String.fromCharCode(10),"~") .replaceAll(String.fromCharCode(13),"~"); - (ה'סולמית' עבור ההערות של PHP הוחלפה ל-// )
php:
$code = str_replace("~",chr(13), $code);
13/17