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

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

DCB 19-07-07 19:01

[שאלה] הפונקציה ob_start
 
תהרגו אותי... לא הבנתי כלום מההסבר של php.net
מה הפונקציה הזאת בדיוק עושה??
מסוכנת לקוד באיזה שהוא מובן? (יוצרת פרצות אבטחה לדוגמא)
מכבידה על השרת?
והכי חשוב, איך היא משפיעה על הקוד מה היא עושה?

תודה לעונים

Elad-A 19-07-07 19:35

זה כדי לבטל שגיאות של הדרים ששולחים אחרי פלט (כמו למשל ליצור עוגייה אחרי שהדפסת משהו)

DCB 19-07-07 20:35

מה יוצר את השגיאה....
עבודה חכמה אמורה לאפשר כתיבת תוכנה בלי הפונקציה הזאת לא?

בניה 19-07-07 20:50

כשאתה עושה echo בדף PHP הטקסט נשלח לדפדפן מיד.
ואם עברו נגיד 5 שניות ואז כתבת שוב echo בעצם הם הגיעו לדפדפן בהפרש של 5 שניות.
כשאתה עושה OB_START זה במקום לשלוח מייד, זה מכניס את כל ה פלט שאתה תוציא לתוך אוגר(משנה כל שהוא)
וכשנגמר הדף אז זה שולח הכל לדפדפן.

בכל קובץ שמגיע בHTTP השרת שולח קודם
(header שזה בתרגום חופשי אומר הדברים שבקדימה/ראשונים)
מידע על הקובץ, זה יכול להיות תאריך שינוי, קידוד הדף ועוד.
דוגמא לכזו פיסת מידע:

קוד:

HTTP/1.1 200 OK
 Date: Mon, 23 May 2005 22:38:34 GMT
 Server: Apache/1.3.27 (Unix)  (Red-Hat/Linux)
 Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
 Etag: "3f80f-1b6-3e1cb03b"
 Accept-Ranges: bytes
 Content-Length: 438
 Connection: close
 Content-Type: text/html; charset=UTF-8

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

Headers already sent in...
אז OB_start עוזר לנו בזה שהוא שומר את כל הפלט שאנחנו רוצים לשלוח ורק אחרי שסיימנו את הדף(ולקבוע את העוגיות שלנו)
הוא שולח את כל ההדרים והפלט.

חיים 19-07-07 20:56

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

בניה 19-07-07 21:05

אולי לוקח קצת יותר זיכרון.
אבל כן, זה טוב למקרים כאלה.

RS324 20-07-07 00:09

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

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

DCB 20-07-07 00:57

בניה תודה רבה על ההסבר המפורט

RS324 (איך קוראים לך ד"א? :P)
איך אתה יוצר עוגיה למשל בראש העמוד לפני כל פלט כל שהוא אם אתה צריך לעשות בדיקה למשל?...
אשמח לשמוע על דרכים להמנע מהפונקציה הזאת למרות שלי מה שהבנתי היא לא מזיקה כל כך

Eran-s 20-07-07 01:04

ציטוט:

נכתב במקור על ידי DCB (פרסם 525277)
בניה תודה רבה על ההסבר המפורט

RS324 (איך קוראים לך ד"א? :P)
איך אתה יוצר עוגיה למשל בראש העמוד לפני כל פלט כל שהוא אם אתה צריך לעשות בדיקה למשל?...
אשמח לשמוע על דרכים להמנע מהפונקציה הזאת למרות שלי מה שהבנתי היא לא מזיקה כל כך

קוראים לו רותם...

עוד סיבה למה לא להדפיס HTML בתוך הקובץ ולא שום הודעה,
משתמשים במערכת Templates והיא מדפיסה את התוכן בסוף ולכן השגיאה לא נוצרת.


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

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