אבל עד כמה שהבנתי זה גם בערך הצורה של MVC או Layered Architecture, לא?
eido
-
בדיקת קלט בשני עמודים שהאחד מעביר ארגומנטים לשני - האם כפולה? וצורת עובדה נכונה -
בדיקת קלט בשני עמודים שהאחד מעביר ארגומנטים לשני - האם כפולה? וצורת עובדה נכונהדי כמו MVC או Layered Architecture
-
בדיקת קלט בשני עמודים שהאחד מעביר ארגומנטים לשני - האם כפולה? וצורת עובדה נכונהאנסה להסביר.
בהתחלה (אני מדבר על פרויקט קודם, שממנו התחלתי ככה לעבוד) הקוד היה רק העמוד שתכל'ס מבצע דברים, בדוגמא שלנו העמוד deleteAds.php, כשניסיתי לגשת אליו מהדפדפן כדי להשתמש בו (לדעתי במקור הקובץ שלף מידע מהמסד נתונים) קיבלתי שגיאה, בדיקה העלתה שהשגיאה היא שצריך לתת הרשאות גבוהות לuser (הרי בשביל לגשת למסד נתונים צריך לפתוח user עם סיסמא, לא מספיק רק השם של המסד נתונים), ולהשתמש ב% כדי שיוכלו לגשת למסד נתונים גם מחוץ לשרת.
זה לא מצא חן בעיני אז החלטתי להפריד בין המקום שיש למשתמש קצה גישה אליו למקום שמבצע דברים, כך לדעתי הרווחתי 2 דברים:- אני לא צריך להשתמש ב%, יש למסד נתונים גישה רק מהשרת עצמו.
- יש פחות סיכוי לנזק לשרת, כי הקובץ שהמשתמש מגיע אליו לא יודע או יכול לעשות כלום, אין מצב שמשחילים לי DROP ALL TABLE ושאר מרעין בישין. וכן כשהמשתמש הזדוני מכיר את הקובץ שפועל בשרת ויכול לגיע אליו, לדעתי כבר יש לו רגל בפנים, כשהוא מכיר רק את הקובץ המתווך, הוא צעד אחד אחורה.
מקווה שיותר מובן.
-
בדיקת קלט בשני עמודים שהאחד מעביר ארגומנטים לשני - האם כפולה? וצורת עובדה נכונהערכתי את ההודעה הקודמת
לדוגמא, הנה 2 קבצים (חלקיים לא צריך את כל הקוד הארוך).
זה המתווך -
main.php
זה המבצע -
deleteAds.phpאני מכיר מחלקות, אבל אני לא רואה איך זה עוזר להפרדת המשתמש מהלוגיקה הפנימית. או שמחלקות בPHP זה שונה מC#?
-
בדיקת קלט בשני עמודים שהאחד מעביר ארגומנטים לשני - האם כפולה? וצורת עובדה נכונה@dovid לא מכיר תורות מוכנות, אם יש מושגי בסיס שאוכל לחפש אשמח לכמה.
השיקול שלי הוא, שהקוד מורץ בתור API, ואם כל אחד יכול לגשת לAPI בעצמו, זה יצא שגם אצטרך לתת הרשאות גישה למסד נתונים לכל אחד, לא? זה בעצם הסיבה שמלכתחילה התחלתי עם זה, ניסיתי לגשת ישר לAPI וקיבלתי שגיאה של גישה לא מורשית למסד הנתונים, אז אם זה מגיע דרך עמוד מתווך. א. אף אחד לא יודע מה הנתיב של העמוד שעושה בפועל, וככה לא יצליחו לשחק איתו יותר מידי (כמובן שאם יריצו סריקה על השרת יוכלו למצוא הכל, בכל זאת א"א למנוע הכל), וגם אם כן ימצאו עושים עליו הגבלת גישה רק מהIP של השרת עצמו, כך מונעים התקפות עליו ישירות (ברעיון, לא ניסיתי). ב. הגישה היא מהשרת ולא מהמשתמש, ככה לא צריך לפתוח הרשאות מיותרות. -
בדיקת קלט בשני עמודים שהאחד מעביר ארגומנטים לשני - האם כפולה? וצורת עובדה נכונהמבחינתי זה נטו בשביל אבטחה.
איזה מבנה לא יעיל? של העמוד חיצוני שמנתב או זה שיש בדיקות בשניהם?
-
בדיקת קלט בשני עמודים שהאחד מעביר ארגומנטים לשני - האם כפולה? וצורת עובדה נכונהיש לי שני עמודי PHP אחד שניגש למסד נתונים ולא אמור להיות נגיש מחוץ לשרת, ואחד שמקבל נתונים מהמשתמש ומעביר אותם לעמוד הפנימי לפי הנתונים שהוכנסו.
בעמוד הפנימי כמובן יש בדיקה מלאה של הקלט, השאלה אם גם בעמוד החיצוני צריך לבצע את אותן הבדיקות, לכאורה זה סתם קוד כפול, לא? -
באג: בינה מלאכותית, או לשבור את הראש חצי שעה@avi-rz אני חושב שכל מה שכתבת זה טוב ויפה, פרט לעובדה שאני לא מכיר בינה מלאכותית שיודעת לעשות דברים כמו שצריך.
משהו נקודתי - כן, אבל מערכת מורכבת ממש לא. וגם הנקודתי זה רק משהו קטן, הבינה מלאכותית פשוט בנויה ככה, אני לא מאמין שיבוא יום וזה יהיה במקום מתכנת.
אני נעזר המון בבינה מלאכותית, מצד אחד זה מקל עלי כי אני מתעסק בשפה שאני לא מכיר, ולא כ"כ רוצה ללמוד לעומק. ומצד שני, אני שורף המון זמן על טעויות של הבינה מלאכותית.
בקיצור, זה כלי עזר מצוין, לא מעבר! חשוב שיזכרו את זה! -
ניהול מודעות בSQLזו הצעה של GPT
SELECT M.* FROM Modaot M WHERE NOT EXISTS ( SELECT 1 FROM ModhaToPhone MT WHERE MT.ModhaId = M.Id AND MT.Phone = ? ) AND EXISTS ( SELECT 1 FROM UserPreference PR WHERE PR.phone = ? AND (M.city = PR.city OR PR.city IS NULL) AND (M.region = PR.region OR PR.region IS NULL) AND (M.room = PR.room OR PR.room IS NULL) )מה אומרים?
-
באג: בינה מלאכותית, או לשבור את הראש חצי שעה@Mordechai-0 מסכים איתך.
אני לא יודע מה לגבי 100,000 שורות קוד, אני לא חושב שהגעתי לזה אי פעם... אף פעם לא הוצרכתי להגיע לכזה דבר, וגם אני די מחלק את זה לקבצים קטנים לדוגמא עכשיו אני בונה מערכת קטנה וחמודה שבה אני צריך לנהל לפחות 3 מסדי נתונים שונים, בכל אחד מהם צריך לקרוא/למחוק/לעדכן/להוסיף שורות למסד נתונים ולמצוא התאמות. אני לא יודע מה מקובל לעשות בתעשיה, אבל לכל פעולה כזו עשיתי קובץ נפרד (PHP) מה שיצר לי כרגע 10 קבצים רק בשביל פעולות אלו חוץ מקובץ לפונקציות עזר וקובץ לקבצי הגדרות. כך שהכי הרבה הגעתי ל150 שורות. בתוכנה אחרת בC# הגעתי ל940 שורות שזה המון בעיני, וגם את זה אפשר בקלות מאוד לחלק לחלקים שהוא יכול לבדוק.לענינינו, במקרה דנן,לדעתי די קל לבודד את החלקים שיכולים להיות חשודים.
אבל אני מסכים, וגם כתבתי בהודעה הקודמת, צריך להזהר בשימוש בבינה מלאכותית.
-
ניהול מודעות בSQLהענין הוא שיכולות להיות כמה העדפות, כמו בדוגמא, דירה בירושלים 4 חדרים ובביתר 3 חדרים, זה שתי שורות שונות במסד נתונים.
-
באג מוזר עם גלילה באפליקציית אנדרואיד עם WebViewאם מעניינת אותך תשובת gpt תוכל לראות כאן https://chatgpt.com/s/t_68dafdd51e6081919532a3ac6416e08c
כמובן הוא מחרטט לפעמים אז... -
ניהול מודעות בSQLז"א שאני קודם עושה בקוד
SELECT * FROM ********** WHERE phone = ?ואז לפי ההעדפות שקבלתי אני עושה AND, לדוגמא אם ההעדפות נשמרות בresult והם דירה בירושלים בשכונה X 4 חדרים ודירה בביתר עילית 3 חדרים אז אני עושה:
SELECT * FROM Modaot WHERE NOT EXISTS ( SELECT 1 FROM ModhaToPhone WHERE ModhaToPhone.ModhaId = Modaot.Id AND ModhaToPhone.Phone = ? ) AND ( (Modaot.city = ? AND Modaot.region = ? AND Modaot.room = ?) OR (Modaot.city = ? AND Modaot.room = ?) )?
-
באג: בינה מלאכותית, או לשבור את הראש חצי שעה@dovid כתב בנתקלתי אתמול בבאג חמוד:
@eido כתב בנתקלתי אתמול בבאג חמוד:
יפה.
רק פעם הבאה במקום לבדוק חצי שעה, תכניס את הקוד בGPT, חצי דקה יכתוב בטבעיות את הענין.ההבדל הוא שמי שבודק חצי שעה יהיה מפתח X10.
מי שבודק בGPT הוא בבעיה, כי כשאתה מקבל הכל עם כפית לפה אתה מתקשה להזיז אחר כך את שרירי הלשון, וזה גם בהנחה שכל האוכל הוא טעים ובריא.מסכים חלקית.
אומרים שללמוד גמרא עם ביאור (לא אנקוב בשמות, זה גם לא משנה, אני חושב שכולם אותו דבר בענין זה, רק אגיד שלא מדובר על רש"י ותוס'. כמובן אני לא מזלזל בזה, לפעמים זה נצרך על אף שלא מומלץ, ההכרח לא יגונה) זה כמו לנסוע עם תוכנת ניווט (כנ"ל) - מגיעים ליעד אבל לא יודעים את הדרך... שזה חבל מאוד, בשתי הדוגמאות...כאן לדעתי זה שונה, אני לא מתכנת X10 וגם לא שואף לשם, וכל פעם שאני מסיים לכתוב קוד אני נותן לבינה מלאכותית אחת או יותר לעבור על הקוד, אולי פספסתי משהו, אולי טעיתי בהקלדת ושימוש במשתנה (בPHP יש 0 אכיפה ואזהרה לגבי זה אתה יכול לטעות באות אחת ואף אחד לא ידע, בשונה משפות אחרות), או כל בעיה אחרת. אם יש בעיה היא מעדכנת אותי (לפעמים מעדכנת סתם גם כשאין...), ומזה לומדים - אם יש מה ללמוד וזו לא טעות הקלדה - יודעים להבא לא לעשות ככה.
מצד שני, לשאול אותה מראש על כל דבר איך לעשות זה פחות טוב כי ככה באמת לא לומדים, אא"כ שואלים וחופרים מה כל דבר אומר, וגם אז, כמו שאתה אומר לא רגילים לחשוב על דרך פעולה בעצמך שזה גרוע מאוד בעיני.בקיצור לדעתי צריך לדעת מתי כן ומתי לא, וכמובן מה המטרה שלך, אם המטרה היא רק לסיים את זה ולא להתפתח הלאה אז אפשר לשאול חופשי, חוןץ מלבזבז המון זמן על טעויות שהיא עושה לא תפסיד כלום.
-
ניהול מודעות בSQLטוב, יש עוד פרט.
אני צריך גם שיהיה סינון ולא כל ההודעות יושמעו, יש עוד טבלה שבה ההעדפוץ של כל אחד, לפי עיר/עיר+שכונה/עיר+שכונה+רחוב.
איך משלבים את כל הסיפור הזה ביחד?
יש לי קוד מושך את כל ההעדפות של המאזיןSELECT * FROM ********** WHERE phone = ?(כמובן זה קובץ בפני עצמו יש בדיקות לפני ואחרי, וכל שאר המימוש, זה רק הקוד הרלוונטי).
האם צריך לקרוא לזה ולפי מה שמתקבל לבנות שאילתות או שיש דרך לשלב הכל בבת אחת.
-
באג: בינה מלאכותית, או לשבור את הראש חצי שעהיפה.
רק פעם הבאה במקום לבדוק חצי שעה, תכניס את הקוד בGPT, חצי דקה יכתוב בטבעיות את הענין. -
חיבור וניתוק נכון למסד נתוניםמצוין, תודה רבה!
-
חיבור וניתוק נכון למסד נתוניםוואי, זה מעיק כל הענין של אישורי הפוסטים.
מתי מסיימים עם זה? -
חיבור וניתוק נכון למסד נתוניםתודה.
אז אם אני מבין נכון, כל עוד זה לא מערכת גדולה ומורכבת, הסגירה הזו בסדר? -
חיבור וניתוק נכון למסד נתוניםקיבלתי.
ולעצם הענין, האם יש טעם בטענה שסגירה כזו:
if (isset($stmt)) {
$stmt->close();
}
$conn->close();
עלולה להוות בעיה או לא?