עוגיות בשפת PHP

אני בטוח שכל אחד מכם כבר שמע על המושג הזה, אז נכון, יש לזה קצת שם מוזר אבל זה מה יש. מה הם העוגיות? עגיות הם קבצי text רגילים לחלוטין, רק שהנתונים שבתוכם משמעותיים לאתרי אינטרנט. העוגיות נשמרות בשמות האתרים שהם קשורים אליהם. העוגיות נשמרות במחשב הלקוח, כמובן אם הדפדפן שלכם מאשר אותם. ( רובנו מאשרים אותם ).
כאשר אתם גולשים לאתר מסויים, אז הדפדפן שולח בקשה לשרת ומצרף את קובץ העוגייה המתאימה לשרת אליו פניתם.

… הצג עוד

העלאת קבצים בשפת PHP

העלאת קובץ לשרת, מתבצעת על ידי טופס אשר מה שמיוחד בו זה:

המאפיין הזה בטופס נותן לנו את האפשרות לשלוח קובץ.
אנו נשתמש ב input מסוג file ולבסוף בעזרת המשתנה הגלובאלי $_FILES[].

בעזרת הפונקציה move_uploaded_file(), מתבצע כל תהליך העלאת הקובץ לשרת.
תפקידה של הפונקציה move_uploaded_file:
לפונקציה ישנם שתי ארגומנטים, הארגומנט הראשון הוא המשתנה הזמני שבתוכו נמצא הקובץ, והארגומנט השני הוא שם הקובץ החדש שאנו רוצים לקרוא לו בשרת שלנו.

דוגמא של העלאת קובץ

הכל ידוע לנו חוץ משהגדרנו,

 זה אומר שאפשר להעביר קבצים (בעברית פשוטה), ללא זה הטופס לא יוכל להעביר שום קובץ.

הגדרנו סוג input חדש מסוג file, ושם המפתח של המשתנה הגלובאלי $_FILES[], הוא my_file.

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

במשתנה $dir, אנו רואים עוד פונקציה חדשה, getcwd(), תפקידה הוא לתת את המיקום הראשי, של הקובץ הנוכחי שאתם מריצים אותו, ולכן במצב הזה, הקובץ שתעלו אותו לשרת שלכם, יהיה בספרייה של הקובץ שתריצו את התוכנית הזו.
על הפונקציה move_uploaded_file, הרחבנו כבר בהתחלה, אבל חשוב לציין שבאורגמנט השני, אנו קובעים את המיקום שהקובץ יעלה אליו בשרת, ואת שמו החדש. במקרה שלנו השארנו את אותו השם שהיה לקובץ לפני שעלה לשרת.
חשוב לציין שאת מיקום הקובץ החדש שהעלנו אפשר לשנות באמצעות שינוי המשתנה של $dir, פשוט להוסיף ספרייה אחרי ה "/".

דוגמת להעלאת מספר רב של קבצים

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

למספר הקבצים שאנו רוצים מקסימום להעלות לשרת.

דוגמת מחיקת קובץ

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

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

יצירת טופס פשוט בשפת PHP

PHP מאפשר לשלוח או לקבל נתונים דרך מחשב הלקוח ( client ), דרך השרת ( server ), וגם דרך כתובת העמוד עצמו ( address bar ).
כשיוצרים טופס ב-PHP, חייב ידע בסיסי ב html, כי אנו נעזרים בתגי html על מנת ליצור את הטופס שלנו.
בעבודה עם טופס צריך ליצור input , ולקרוא לו בשם. השם הזה ישמש אותנו כמשתנה ב- PHP. לטופס form, ישנה שיטה method שאיתה אנו עובדים, post/get , ה get , הוא לקבלת או שליחת נתונים מהכתובת( address bar ) , ואילו ה post, לא מוצג כלל ואיתו נהוג להשתמש ברוב המקרים.
יתרון של get הוא שדווקא ישנם פעמים שאנו רוצים לקבל את הנתונים שלנו לכתובת ולהשתמש בהם כלינק או דברים מסוג זה.
יתרון של post הוא שכאשר אנו רוצים ליצור טופס רישום עם סיסמא ושם משתמש, אנו לא נרצה כמובן לחשוף את זה לכתבות
( address bar ), ולכן נשתמש ב post.

צד השרת (PHP):

צד הלקוח (HTML):

הטופס שלח שלושה נתונים לאותו דף, ואז הציג אותם.
נתחיל דווקא עם ה html שבתחתית הקוד, יצרנו טופס form שיש לו מאפיין ששמו action, שהוא שולח את הטופס לאן שנרצה. במקרה שלנו שלחנו אותו לעצמו בעזרת המשתנה הגלובאלי PHP_SELF$ .

הטופס נשלח בשיטת post, כפי שלמדנו להכיר. לאחר מכן יצרנו ארבעה inputs עם שמות, שלושה מהם מסוג text ואחד מסוג submit.
כאשר לחצנו על הכפתור send, נשלחו הנתונים, והדף חזר על עצמו שוב ( כי זה מה שכיוונו – action ). בדקנו בעזרת PHP, האם באמת נלחץ הכפתור send, ונפגשנו בפונקציה חדשה ששמה isset ( תפקידה של הפונקציה היא לבדוק אם אכן המשתנה הזה נמצא כרגע בזכרון, אפילו אם הוא ריק ).
ראינו שיש עוד משתנה גלובאלי ששמו POST_$, ואת שמות ה inputs שמנו כמפתח למשתנה POST_$.
לאחר מכן בדקנו באותו if , תנאי שבדק האם יש למשתנה הקיים ערך שבשם send, שזוהי עוד בדיקה שאכן נלחץ הכפתור send.
בתוך ה if, הוצגו הנתונים וכך הסתיימה לה בדיקת הטופס.

Break & Continue בשפת PHP

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

Continue, משתמשים בפקודה זו, רק בלולאות, כאשר אנו רוצים לא להמשיך באיטרציה ( סיבוב בלולאה ), ולהמשיך באיטרציה הבאה, אנו נשתמש ב Continue.

תחביר ה break

יקרה פה בעצם דבר פשוט, הלולאה תרוץ וכשה $i -, יהיה שווה ל-3, אז התנאי יתקיים, והפקודה Break, תצא בכלל מלולאת הfor, ולא תמשיך ל$i הרביעי והחמישי.

תחביר ה continue

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

Include & Require בשפת PHP

באופן כללי, הפקודות הללו נועדו לספח קובץ, לפרוייקט שלנו.
הפקודות require() ו-include() זהות בכל האפשרויות שלהן, אך ישנו הבדל אחד מהותי בינהם.

הפקודה include מציגה כפלט אזהרה שלא נמצא הקובץ שרצינו להוסיף, והפקודה require, דורשת שהקובץ אכן ימצא, במקרה שהקובץ לא נמצא, זה שולח fatal error למסך ותוקע את המסמך.

תחביר הפקודות

שורה 3 – פשוט נרשום את שם הקובץ שאותו נרצה לקשר.

שורה 4 – ניתן לקשר גם בצורה הזאת, ללא סוגריים.

יש לשים לב שקישור הקובץ בדרכים אלו (שורה 3 ו 4) יציגו אזהרה במידה והקובץ לא נמצא.

שורה 6 – גם כאן פשוט נרשום את שם הקובץ שאותו נרצה לקשר.

שורה 7 – ניתן לקשר גם בצורה הזאת, כמו בשורה 4, ללא סוגריים.

יש לשים לב שהקישור בדרכים אלו (שורה 6 ו 7) ישלחו fatal error במידה והקובץ לא נמצא.

פונקציות בשפת PHP

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

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

ארגומנטים

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

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

דוגמאת פונקציית כפל

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

הפונקציה cefel שיצרנו זה עתה, מכפילה שתי פרמטרים שמכניסים לפונקציה. שימו לב שיצרנו את הפונקציה, קראנו לה cefel, ואז הגדרנו בה, שתי ארגומנטים שהוכפלו אחד בשני. לבסוף פגשנו בפקודה חדשה ששמה return, שהיא מחזירה את הערך שיצא מהפונקציה.
לאחר מכן הצגנו את הפונקציה כפל, עם שתי פרמטרים 9 ו- 6.
הפרמטרים נכנסו לפי הסדר שלהם לארגומנטים $number2 , $number1 , ורק בסוף הוחזר מהפונקציה מספר 54, שהוא התוצאה של פעולותיה של הפונקציה. כמובן שכפי שאנו מכירים את הפקודה echo, היא הציגה לבסוף את המספר 54, וכך מסתיימת לה התוכנית הזו.

דוגמא עם משתנה גלובאלי

כפי שאתם יכולים לראות, הפעם השתמשנו במשתנה $number1 והשוונו אותו ל 10, אך מכיוון שבתוך הפונקציה המשתנה $number1, היה מוגדר כגלובאלי, אז גם בפונקציה הוא נחשב כ-10 והתוצאה יצאה בסופו של דבר 90.
אם לא היינו מגדירים את $number1, בתור משתנה גלובאלי, הפונקציה לא הייתה מזהה את המשתנה, והייתה שולחת הודעת הערה שהמשתנה לא הוגדר.

לולאת Foreach בשפת PHP

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

array_expression = מהו שם השתנה שהמערך שלך נמצא בו.
$value = הוא הערך שיש בתוך תא ותא שבמערך.
$key = האינדקס ( מפתח ) של התאים עצמם.

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