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

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

BlueNosE 01-03-07 16:32

האם אתם -באמת- מתכנתים כמו שצריך?
 
שלום, אני רוצה לדבר איתכם על נושא בתכנות שנראה לכם כמובן מאליו.
במקרה הזה אני אדבר על PHP, אבל זה תקף לכל השפות באינטרנט - JS, ASP וכו'.

לפני משהו כמו שנה, הכנתי אתר. עבדתי הרבה, ובסוף יצא משהו לא רע.
השרת בשלב מסויים נפל ואני עם הגיבוי הגעתי לשרת אחר.

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

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

קוד בPHP שיראה כך:
PHP קוד:

if ($_GET['id'] == 3)
echo 
"addfh"

אם אין ID בכתובת, הקוד לא יעלה בשרת שלי. כלומר יעלה, אבל אני לא חושב שהגולשים כל כך ישמחו לדעת מה הנתיב המלא לקובץ בגלל השגיאה שתיווצר.

הסינטקס הנכון הוא
PHP קוד:

if ((!empty ($_GET['id'])) and ($_GET['id'] == 3))
/*OR*/
if ((isset ($_GET['id'])) and ($_GET['id'] == 3)) 

ואני שואל - האם אתם באמת מתכנתים ככה?
כדי לבדוק את זה, תכתבו בתחילת הקוד
error_reporting (E_ALL);

RS324 01-03-07 16:37

חשבת להגדיר EROR_REPORTING במערכת ? ככה שבכל אופן גם אם יש NOTICE
הוא יתעלם מהם ?

BlueNosE 01-03-07 16:38

ציטוט:

נכתב במקור על ידי RS324 (פרסם 430914)
חשבת להגדיר EROR_REPORTING במערכת ? ככה שבכל אופן גם אם יש NOTICE
הוא יתעלם מהם ?

חשבתי, והחלטתי שהרבה יותר חכם ונכון לתכנת בסינטקס נכון.

Derey22 01-03-07 16:44

לא הבנתי כל כך מה אתה רוצה באשכול אבל חשוב גם לחסום html
$_GET['id'] .
ותודה

BlueNosE 01-03-07 16:47

^^^
לא מדבר על HTML בהקשר כלשהו.
ציטוט:

נכתב במקור על ידי RS324 (פרסם 430914)
חשבת להגדיר EROR_REPORTING במערכת ? ככה שבכל אופן גם אם יש NOTICE
הוא יתעלם מהם ?

אגב, תעשה סקר ותברר מי מאלה שלא כותב בסינטקס נכון משתמש בERROR_REPORTING, ותגיע לסכום ששואף ל0.

x-ray 01-03-07 17:03

מעטים מאוד האנשים שכותבים בצורה נכונה,
אני אישית שאני עובד למטרות פרטיות שלי לא כותב כך..

Derey22 01-03-07 17:09

עכשיו שאני מבין יותר תהודעה שלך,אני ישתמש בזה,

RS324 01-03-07 17:20

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 430923)
^^^
לא מדבר על HTML בהקשר כלשהו.


אגב, תעשה סקר ותברר מי מאלה שלא כותב בסינטקס נכון משתמש בERROR_REPORTING, ותגיע לסכום ששואף ל0.

ותעשה סקר כמה אנשים פה מתמודדים ע register_globals ועם magic_qoutes ותגיע גם לסכום השואף ל 0

בכל מקרה כל העניין של כתיבה נכונה הוא חשוב אבל הכתיבה שאתה מציין דיי מסורבלת
אם אני עושה
PHP קוד:

if($_GET['id'] == 3)
{
echo 
'hey fucker';


זה יעבוד בכל שרת... מניסיון...

x-ray 01-03-07 17:20

ציטוט:

נכתב במקור על ידי derey22 (פרסם 430945)
עכשיו שאני מבין יותר תהודעה שלך,אני ישתמש בזה,

זו הייתה רק דוגמא,יש עוד 1001 אפשרויות כאלה..

BlueNosE 01-03-07 17:25

ציטוט:

נכתב במקור על ידי RS324 (פרסם 430952)
אם אני עושה
PHP קוד:

if($_GET['id'] == 3)
{
echo 
'hey fucker';


זה יעבוד בכל שרת... מניסיון...

http://www.hill.4save.net/Huh.php
הקוד שלך מועתק 1:1, עם הוספת תווי <?php ?>.

אגב, בקשר לREGISTER_GLOBALS:
המודעות לדעתי עלתה קצת בקשר לזה, בכל מקרה אני אף פעם לא מאתחל משתנה GET משום מקום.

בקשר לMAGIC QUOTES, אני משתמש במשהו אחר בשביל לבצע פעולת סינון.

עידן: אתה זה סבבה, אם אתה בטוח ב100% שאין סיכוי לשגיאות אז אין בעיה. אבל תחשוב עלי, אני מכרתי לך את המערכת, והיו בעיות תאימות מסד גם ככה, תאר לעצמך מה היה קורה אם היו גם בעיות תאימות קוד..

בכללי:
אני חושב שקוד יותר אסתטי ומסודר גם כל יותר לערוך.. וזה חלק מהעניין..

RS324 01-03-07 17:33

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 430957)
http://www.hill.4save.net/Huh.php
הקוד שלך מועתק 1:1, עם הוספת תווי <?php ?>.

אגב, בקשר לREGISTER_GLOBALS:
המודעות לדעתי עלתה קצת בקשר לזה, בכל מקרה אני אף פעם לא מאתחל משתנה GET משום מקום.

בקשר לMAGIC QUOTES, אני משתמש במשהו אחר בשביל לבצע פעולת סינון.

עידן: אתה זה סבבה, אם אתה בטוח ב100% שאין סיכוי לשגיאות אז אין בעיה. אבל תחשוב עלי, אני מכרתי לך את המערכת, והיו בעיות תאימות מסד גם ככה, תאר לעצמך מה היה קורה אם היו גם בעיות תאימות קוד..

בכללי:
אני חושב שקוד יותר אסתטי ומסודר גם כל יותר לערוך.. וזה חלק מהעניין..

1. לא ביטלת את ה ERROR_REPORTING שיתעלם מ NOTICE
כי NOTICE זה לא בעצם שגיאה זה רק אומר לך שעשית שימוש במשהו שהוא לא קיים...
2. לגבי ה REGISTER_GLOBAS לא הבנתי מה הקשר לאתחול המשתנה של ה GET
3. אם זה באמת חשוב לך אני משתמש ב ERROR_HANDLER משלי...ככה שזה לא משפיע עלי בכל מקרה...

HighA 01-03-07 17:41

ציטוט:

נכתב במקור על ידי RS324 (פרסם 430952)
ותעשה סקר כמה אנשים פה מתמודדים ע register_globals ועם magic_qoutes ותגיע גם לסכום השואף ל 0
[/PHP]

זה יעבוד בכל שרת... מניסיון...

עדיין לא הבנתי מה זה magic_qoutes
אבל על register_globals אני מתמיד

NitroPHP 01-03-07 19:42

magic_qoutes זו אפשרות ב-PHP (שכנראה תבוטל ב-PHP 6) שמבריחה (קרי: מוסיפה לוכסנים) מחרוזות שמגיעות מהמשתמש.

Tomer 01-03-07 19:51

אני אישית מתכנת ככה בגלל שאני עובד עם שרתים ש register_globals Off - אז זה הכרחי, ואני שונא לבטל את ה error_reporting

nevo 01-03-07 20:34

תמיד מבצע בדיקה לGET
קוד:

$Id = (isset( $_GET['Id']))?intval( $_GET['id']):0;

Derey22 01-03-07 20:35

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 430915)
חשבתי, והחלטתי שהרבה יותר חכם ונכון לתכנת בסינטקס נכון.

בסינטקס נכון,אסור לך להשתמש בסוג של הif המרובה
PHP קוד:

if  )(
}


אז איך אני יכול להחליף אותו?

WebProject 01-03-07 20:37

אני כותב בסינטקס נכון, כי ככה הכריח אותי לכתוב זה שלימד אותי לפני כמה שנים טובות :P

Derey22 01-03-07 20:42

ציטוט:

נכתב במקור על ידי WebProject (פרסם 431093)
אני כותב בסינטקס נכון, כי ככה הכריח אותי לכתוב זה שלימד אותי לפני כמה שנים טובות :P

אז אתה יכול לענות לי על השאלה?

BlueNosE 01-03-07 21:39

ציטוט:

נכתב במקור על ידי derey22 (פרסם 431092)
בסינטקס נכון,אסור לך להשתמש בסוג של הif המרובה
PHP קוד:

if  )(
}


אז איך אני יכול להחליף אותו?

מה?? לא הבנתי. תסביר.

ציטוט:

1. לא ביטלת את ה ERROR_REPORTING שיתעלם מ NOTICE
כי NOTICE זה לא בעצם שגיאה זה רק אומר לך שעשית שימוש במשהו שהוא לא קיים...
2. לגבי ה REGISTER_GLOBAS לא הבנתי מה הקשר לאתחול המשתנה של ה GET
3. אם זה באמת חשוב לך אני משתמש ב ERROR_HANDLER משלי...ככה שזה לא משפיע עלי בכל מקרה...
1. נו ברור שלא, בגלל זה אני אומר שכדאי לא להסתמך על זה.
2. אמרתי שאני אף פעם לא משתמש ב$var אלא תמיד ב$_GET['var'].
3. איך יצרת ERROR HANDLER? אפילו בSQL לא הצלחתי ליצור אחד שנותן יותר מmysql_error().
הייתי שמח לפירוט / הסבר קטן.

null 01-03-07 21:51

http://php.net/set_error_handler

;)

BlueNosE 01-03-07 22:51

ציטוט:

נכתב במקור על ידי null (פרסם 431159)

תודה, חידשת לי.

אבל זה מעפן, אי אפשר לשלוט בE_ERROR - כלומר אי אפשר לשלוט בשגיאות פטאליות |דמעות|

Udi 01-03-07 23:12

אני מנסה לכתוב כמה שיותר נכון, תיקני ומאובטח.

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

Derey22 02-03-07 06:55

ציטוט:

נכתב במקור על ידי RS324 (פרסם 430952)
ותעשה סקר כמה אנשים פה מתמודדים ע register_globals ועם magic_qoutes ותגיע גם לסכום השואף ל 0

בכל מקרה כל העניין של כתיבה נכונה הוא חשוב אבל הכתיבה שאתה מציין דיי מסורבלת
אם אני עושה
PHP קוד:

if($_GET['id'] == 3)
{
echo 
'hey fucker';


זה יעבוד בכל שרת... מניסיון...

רותם אמר אם זה השם שלו שככה כותבים בכל שרת מניסיון שלו,אבל הבאת דוגמא שלא כותבים ככה,אז איך כותבים?

בניה 02-03-07 12:58

אפשר לשלוט בכל שגיאה אם שים @ לפני השורה שעלולה לעשות שגיאה אז השרת יתעלם ממנה ולמי שמכיר את המבנה של try catch
http://www.php.net/manual/en/language.exceptions.php

BlueNosE 02-03-07 13:02

ציטוט:

נכתב במקור על ידי בניה (פרסם 431462)
אפשר לשלוט בכל שגיאה אם שים @ לפני השורה שעלולה לעשות שגיאה אז השרת יתעלם ממנה ולמי שמכיר את המבנה של try catch
http://www.php.net/manual/en/language.exceptions.php

מכיר, אבל בכל זאת - אי אפשר לנטרל שגיאות במבני בקרה, רק בפונקציות.

link 02-03-07 21:14

אני תמיד מתכנת בצורה נכונה. אחרי שגילו לי את error reporting בהתחלה אני כותב נכון. רצוי לכתוב נכון כי אתה לא נתקע בבאגים מוזרים שאתה לא מצליח לפתור לך.

חוץ מזה - אם יש לך באג שתלוי בכתיבה לא נכונה של סיטנקס ואתה לא משתמש בerror reporting אתה די תתקשה למצוא את הבאג בעצמך.

BlueNosE 02-03-07 21:50

ציטוט:

נכתב במקור על ידי link (פרסם 431729)
אני תמיד מתכנת בצורה נכונה. אחרי שגילו לי את error reporting בהתחלה אני כותב נכון. רצוי לכתוב נכון כי אתה לא נתקע בבאגים מוזרים שאתה לא מצליח לפתור לך.

חוץ מזה - אם יש לך באג שתלוי בכתיבה לא נכונה של סיטנקס ואתה לא משתמש בerror reporting אתה די תתקשה למצוא את הבאג בעצמך.

צודק, זה עוד יתרון של כתיבה נכונה.

RS324 02-03-07 21:57

ציטוט:

נכתב במקור על ידי link (פרסם 431729)
אני תמיד מתכנת בצורה נכונה. אחרי שגילו לי את error reporting בהתחלה אני כותב נכון. רצוי לכתוב נכון כי אתה לא נתקע בבאגים מוזרים שאתה לא מצליח לפתור לך.

חוץ מזה - אם יש לך באג שתלוי בכתיבה לא נכונה של סיטנקס ואתה לא משתמש בerror reporting אתה די תתקשה למצוא את הבאג בעצמך.

בגלל זה לפני שאני מספק מערכת,
אני מדליק את ה ERROR_REPORTING
ומעלה אותה ל 7 שרתים בעלי מפרט שונה והגדרות שונות
ורואה איך המערכת מגיבה... מתקן אם יש שגיאות
ומכבה...

WebProject 02-03-07 21:59

ציטוט:

נכתב במקור על ידי RS324 (פרסם 431749)
בגלל זה לפני שאני מספק מערכת,
אני מדליק את ה ERROR_REPORTING
ומעלה אותה ל 7 שרתים בעלי מפרט שונה והגדרות שונות
ורואה איך המערכת מגיבה... מתקן אם יש שגיאות
ומכבה...

לא לכולם יש 7 שרתים ;) אני מקסימום בודק על השרת עליו אני מעלה את המערכת, כי לא תמיד המערכת היא למספר אנשים אלא פרטית :)

RS324 03-03-07 02:36

ציטוט:

נכתב במקור על ידי WebProject (פרסם 431755)
לא לכולם יש 7 שרתים ;) אני מקסימום בודק על השרת עליו אני מעלה את המערכת, כי לא תמיד המערכת היא למספר אנשים אלא פרטית :)

גם לי אין

אבל לא בעיה להרשם לכמה סוגי שירותים חינמיים
ועוד כמה חסויות
ועוד כמה שרתים של חברים...


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

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