![]() |
האם אתם -באמת- מתכנתים כמו שצריך?
שלום, אני רוצה לדבר איתכם על נושא בתכנות שנראה לכם כמובן מאליו.
במקרה הזה אני אדבר על PHP, אבל זה תקף לכל השפות באינטרנט - JS, ASP וכו'. לפני משהו כמו שנה, הכנתי אתר. עבדתי הרבה, ובסוף יצא משהו לא רע. השרת בשלב מסויים נפל ואני עם הגיבוי הגעתי לשרת אחר. נכנסתי לאתר אחרי התקנת מסד קלילה, ומה אני רואה? מלא NOTICEים, אזהרות וכמה שגיאות פטאליות פה ושם. האתר כמעט הלך. אפשרות להמשיך לתכנת קיימת, אבל איך? מה שאני רוצה להסביר לכם - זה שזה לא מספיק לכתוב קוד שירוץ על השרת שלכם. עניין התאימות לשרתים משחק, במיוחד כאשר מדובר על לקוח שקונה. קוד בPHP שיראה כך: PHP קוד:
הסינטקס הנכון הוא PHP קוד:
כדי לבדוק את זה, תכתבו בתחילת הקוד error_reporting (E_ALL); |
חשבת להגדיר EROR_REPORTING במערכת ? ככה שבכל אופן גם אם יש NOTICE
הוא יתעלם מהם ? |
ציטוט:
|
לא הבנתי כל כך מה אתה רוצה באשכול אבל חשוב גם לחסום html
$_GET['id'] . ותודה |
^^^
לא מדבר על HTML בהקשר כלשהו. ציטוט:
|
מעטים מאוד האנשים שכותבים בצורה נכונה,
אני אישית שאני עובד למטרות פרטיות שלי לא כותב כך.. |
עכשיו שאני מבין יותר תהודעה שלך,אני ישתמש בזה,
|
ציטוט:
בכל מקרה כל העניין של כתיבה נכונה הוא חשוב אבל הכתיבה שאתה מציין דיי מסורבלת אם אני עושה PHP קוד:
|
ציטוט:
|
ציטוט:
הקוד שלך מועתק 1:1, עם הוספת תווי <?php ?>. אגב, בקשר לREGISTER_GLOBALS: המודעות לדעתי עלתה קצת בקשר לזה, בכל מקרה אני אף פעם לא מאתחל משתנה GET משום מקום. בקשר לMAGIC QUOTES, אני משתמש במשהו אחר בשביל לבצע פעולת סינון. עידן: אתה זה סבבה, אם אתה בטוח ב100% שאין סיכוי לשגיאות אז אין בעיה. אבל תחשוב עלי, אני מכרתי לך את המערכת, והיו בעיות תאימות מסד גם ככה, תאר לעצמך מה היה קורה אם היו גם בעיות תאימות קוד.. בכללי: אני חושב שקוד יותר אסתטי ומסודר גם כל יותר לערוך.. וזה חלק מהעניין.. |
ציטוט:
כי NOTICE זה לא בעצם שגיאה זה רק אומר לך שעשית שימוש במשהו שהוא לא קיים... 2. לגבי ה REGISTER_GLOBAS לא הבנתי מה הקשר לאתחול המשתנה של ה GET 3. אם זה באמת חשוב לך אני משתמש ב ERROR_HANDLER משלי...ככה שזה לא משפיע עלי בכל מקרה... |
ציטוט:
אבל על register_globals אני מתמיד |
magic_qoutes זו אפשרות ב-PHP (שכנראה תבוטל ב-PHP 6) שמבריחה (קרי: מוסיפה לוכסנים) מחרוזות שמגיעות מהמשתמש.
|
אני אישית מתכנת ככה בגלל שאני עובד עם שרתים ש register_globals Off - אז זה הכרחי, ואני שונא לבטל את ה error_reporting
|
תמיד מבצע בדיקה לGET
קוד:
$Id = (isset( $_GET['Id']))?intval( $_GET['id']):0; |
ציטוט:
PHP קוד:
|
אני כותב בסינטקס נכון, כי ככה הכריח אותי לכתוב זה שלימד אותי לפני כמה שנים טובות :P
|
ציטוט:
|
ציטוט:
ציטוט:
2. אמרתי שאני אף פעם לא משתמש ב$var אלא תמיד ב$_GET['var']. 3. איך יצרת ERROR HANDLER? אפילו בSQL לא הצלחתי ליצור אחד שנותן יותר מmysql_error(). הייתי שמח לפירוט / הסבר קטן. |
|
ציטוט:
אבל זה מעפן, אי אפשר לשלוט בE_ERROR - כלומר אי אפשר לשלוט בשגיאות פטאליות |דמעות| |
אני מנסה לכתוב כמה שיותר נכון, תיקני ומאובטח.
כשאני עובר על הקוד פעמים אני מוצא הרבה "שגיאות" כאלה, וחורים לחסום, לכן לדעתי כתיבה כזאת צריכה להיות "טבעית", אבל כאלה שלמדו לכתוב את זה בלי הבדיקות ולא לכתוב קוד תקין יהיה להם קשה, לכן כל עוד יש שוונג וקוד בראש תקליד כמה שאפשר, אחר כך תתקן, תגן ותייעל. |
ציטוט:
|
אפשר לשלוט בכל שגיאה אם שים @ לפני השורה שעלולה לעשות שגיאה אז השרת יתעלם ממנה ולמי שמכיר את המבנה של try catch
http://www.php.net/manual/en/language.exceptions.php |
ציטוט:
|
אני תמיד מתכנת בצורה נכונה. אחרי שגילו לי את error reporting בהתחלה אני כותב נכון. רצוי לכתוב נכון כי אתה לא נתקע בבאגים מוזרים שאתה לא מצליח לפתור לך.
חוץ מזה - אם יש לך באג שתלוי בכתיבה לא נכונה של סיטנקס ואתה לא משתמש בerror reporting אתה די תתקשה למצוא את הבאג בעצמך. |
ציטוט:
|
ציטוט:
אני מדליק את ה ERROR_REPORTING ומעלה אותה ל 7 שרתים בעלי מפרט שונה והגדרות שונות ורואה איך המערכת מגיבה... מתקן אם יש שגיאות ומכבה... |
ציטוט:
|
ציטוט:
אבל לא בעיה להרשם לכמה סוגי שירותים חינמיים ועוד כמה חסויות ועוד כמה שרתים של חברים... |
כל הזמנים הם GMT +2. הזמן כעת הוא 02:46. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ