PracticU

קורס PHP - הרצאה 7

בלי כתוביותעם כתוביות
PracticU › קורס PHP - פרויקט מעשי › קורס PHP - הרצאה 7
מילון מושגים:
PHP - שפת תכנות לצד השרת, נפוצה בבניית אתרים דינמיים ומערכות ניהול תוכן כמו WordPress.
תמונה - קובץ גרפי המוצג על המסך. בהקשר של וירטואליזציה או Docker, תבנית מוכנה שממנה יוצרים מכונה או קונטיינר.
טופס - אזור בממשק שבו המשתמש מזין נתונים בשדות ושולח אותם, למשל טופס הרשמה או התחברות.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.
רשומה - שורה בטבלת מסד נתונים שמרכזת את כל השדות של פריט אחד, למשל כל הפרטים של לקוח יחיד.
שאילתה - בקשה למסד נתונים לשלוף, להוסיף, לעדכן או למחוק נתונים, לרוב בשפת SQL.
JavaScript - שפת תכנות שרצה בעיקר בדפדפן ומוסיפה אינטראקטיביות לדפי אינטרנט. רצה גם בצד השרת באמצעות Node.js.

קורס PHP - הרצאה 7
ההרצאה ממשיכה את מסך העלאת המוצרים: העלאת קבצים לשרת, פירוק שם הקובץ לשם מוצר ושם חברה, ושמירת התמונה בתיקייה הנכונה לפי התפריט. בסוף כל מוצר נכנס למסד הנתונים עם התייחסות לשם הקובץ שהועלה, והמרצה מדגים זאת על מסך שבו המשתמש בוחר תפריט ומעלה כמה תמונות בבת אחת.
העלאת קובץ לשרת
1. טופס קובץ: הטופס צריך enctype="multipart/form-data", ושדה מסוג file. בלי התכונה הזו הקובץ לא נשלח.
2. מערך $_FILES: מכיל את שם הקובץ, הסוג, הגודל והנתיב הזמני שבו השרת שמר אותו. המרצה מדגים את הערכים האלה בהדפסה.
3. move_uploaded_file: מעביר את הקובץ מהנתיב הזמני ליעד בשרת. ביעד מציינים את התיקייה, למשל ../imagep/a/, כשהנקודות מציינות יציאה מתיקייה.
4. שדה מוסתר: שומר ערכים מהטופס, כמו מזהה התפריט והשם הזמני של הקובץ, כדי שלא יאבדו כשהדף נטען מחדש. השדה לא נראה למשתמש.
פירוק שם הקובץ
1. מבנה השם: בשם הקובץ מפרידים בין שם המוצר לשם החברה בנקודה, כך שהשם מתחלק לשני חלקים ולסיומת.
2. explode: הפונקציה מפרקת מחרוזת לפי מפריד ומחזירה מערך. האיבר הראשון הוא שם המוצר, השני הוא שם החברה, והשלישי הוא הסיומת כמו jpg.
3. משתנה גלובלי: מערך שצריך להיות זמין בתוך פונקציה מוכרז עם המילה global, כי ב-PHP משתנה חיצוני לא נראה בתוך פונקציה בלי ההכרזה.
4. שינוי השם: השם המקורי לא נכנס למסד הנתונים כמו שהוא. הקובץ נשמר בשם מספרי לפי המזהה הבא, כדי שיהיה קל לעבוד איתו בקוד.
לולאה על חמישה קבצים
1. מגבלה: הטופס מאפשר להעלות עד חמישה קבצים בכל פעם, ולכן הלולאה רצה עד מספר זה.
2. בדיקה לכל קובץ: בכל סיבוב בודקים אם השדה לא ריק. אם הוא ריק, מדלגים עליו.
3. בניית השם: השם של הקובץ הבא מורכב מהמזהה האחרון שנוסף אחד, והסיומת המקורית של התמונה.
4. מערכים לכל הקבצים: שם המוצר, שם החברה, הסיומת והמזהה נשמרים במערכים נפרדים, ואחר כך מכניסים אותם למסד.
הכנסה למסד הנתונים
1. הרשומה האחרונה: פונקציה שמביאה את המזהה האחרון בטבלה, כדי לדעת איזה מספר להשתמש בו הבא.
2. INSERT מרובה: מכניסים כמה שורות בפקודה אחת, כמו בשיעור הקודם.
3. בתוך לולאה: בכל איטרציה נוספת שורת ערכים, והפסיק חסר בשורה האחרונה.
4. ביצוע השאילתה: השאילתה מורצת על המסד רק אחרי שכל הערכים נבנו.
שימו לב
המרצה ממליץ לכתוב את השאילתה למשתנה ולהדפיס אותה לפני ההרצה, כדי לראות את השגיאות לפני שהן פוגעות במסד. השם המפוצל מועבר גם ל-JavaScript, כדי למלא שדות מוסתרים בדף. בסוף השיעור המוצרים מופיעים באתר, והתמונות נשמרות בתיקיות לפי התפריט.
השיעור הבא בקורס: קורס PHP - הרצאה 8

פרקי ההרצאה: קורס PHP - הרצאה 7

  1. 00:00

    העלאת מוצרים ותמונות לשרת

  2. 01:00

    טעינת מוצרים עם AJAX

  3. 03:21

    טופס עם action להעלאת קובץ

  4. 05:06

    תווית וקלט מסוג file

  5. 06:29

    קבלת פרטי הקובץ מ-$_FILES

  6. 08:36

    העברת הקובץ עם move_uploaded_file

  7. 11:15

    טופס הזנת מוצר ושם הקובץ

  8. 12:57

    שמירת נתיב התמונה במסד הנתונים

תמלול ההרצאה: קורס PHP - הרצאה 7

הטקסט המלא של הדקות הראשונות בהרצאה «קורס PHP - הרצאה 7» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:06

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

  2. 00:36

    אוקיי, זה המסך להעלאת המוצרים לאיזשהו תת-תפריט שיש, כן? שבעצם זה התת-תפריט שאתם רואים, האבות הראשי.

  3. 00:46

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

  4. 00:55

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

  5. 01:11

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

  6. 01:24

    אז זה בעצם המסך שיגרום להזין את הנתונים למסד הנתונים. בואו בינתיים נדבר בכלליות על העלאת קבצים לשרת. אוקיי, יש לי פה קובץ, יש לי פה קובץ שקראתי לו Upload File, בואו נראה איך עובדים, אוקיי, הנה זה הקובץ הזה, הוא שמור ב-TQ עד וירטואל, בואו נעשה דבר כזה, אוקיי, דבר ראשון, PHP,

  7. 01:51

    בכדי לעבוד עם עברית, פרים, הדר, כן, פתוח גרש, גרש, ואז, content, פאי, עודותיים, טקסט, port/HTML,

  8. 02:00

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

  9. 02:13

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

  10. 02:26

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

  11. 02:42

    אני רוצה את הכותרת באמצע, בואו נעבוד על ה-Inline Style של CSS, זוכרים? Style שווה, Align אותה, Align אותה, לא Align, טקסט-אליין אותה, כן?

  12. 02:55

    טקסט-אליין סנטר. שימו לב, בגלל שה-H1 הוא אלמנט מסוג בלוק, אז הוא יכול לקבל את המאפיין הזה, טקסט-אליין סנטר, כן? רק אלמנטים מסוג בלוק יכולים לקבל את זה. דוגמה, אם היא אלמנט מסוג אינליין אלמנט, שזה תמיד באותה שורה, לא יוכל לקבל את הדבר הזה, טקסט-אליין-סנטר.

  13. 03:19

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

  14. 03:37

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

  15. 03:51

    מחמטיים של PHP, ו-thrin, דולר, PHP, PHP cell, אוקיי? זה אומר שברגע שיהיה לחיצה על כפתור submit, אותו הטופס עצמו, אותו הקובץ הזה עצמו, ה-HTML, ה-PHP הזה, יופעל.

  16. 04:09

    לא קובץ אחר, אוקיי? המתודה, זה אומר שאני לא אראה בשורת הכתובת את הארגומנטים שאני שולח בשאילתה.

  17. 04:21

    והדבר האחרון שהוא בעצם מאפשר לי את הפעולה עם קבצים, את הפעילות סליחה עם קבצים, נקרא ink type וזה multi-partform-data. בואו ניצור פה label, פור שווה, שימו לב, המאפיין הזה של פור זה אומר למי אני הולך לעשות את התווית הזאת, הלייבל הזאת, אז אם אני פה לדוגמה יוצר כרגע, אני קודם כל אסגור את התווית לייבל ואני אמצוא פה input time שווה פייל וזה אומר אלמנט קלט

  18. 05:04

    משוג של העלאת קובץ, בואו ניתן לו את ה-name, name שווה בוא נאמר user file ובואו אז אותו שם שרשמתי פה יצטרך להיות בתווית זה for user file אז אני בעצם יודע שהלייבל הזה שייך ל input בואו רק נרשום פה באנגלית בואו נעשה פה שבירת שורה ואת הכפתור submit שלנו שהוא בעצם מפעיל את הטופס

  19. 05:40

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

  20. 06:10

    סתם הנה יש לי פה קובץ של תמונה אז הנה בעצם הוא פה מוכן ומופנה ומקושר לקובץ הזה של התמונה. איך אני בעצם רואה את כל המעטיינים של הקובץ הזה? עכשיו העליתי לתיבה, אז בואו נראה, בואו נרשום ככה אם נלחץ הכפתור send dollar request האם הוא הוטחל, זאת אומרת הופעל, נלחץ, בואו נרשום

  21. 06:43

    פה את הפקודות לטיפול בקבצית הכלוב בכדי להציג את שם הקובץ ECHO, זה הכל נמצא בתוך משתנה סופר גלובלי, נקרא $_FI. ואיך אנחנו מתייחסים לקובץ? קודם כל כאן, במרובעים הראשונים אנחנו נותנים את ה-NAME שהגדרנו בתווית ה-INPUט סייפ פאייפ, אוקיי?

  22. 07:12

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

  23. 07:34

    שנת, טקסט, וורד, פאוור פוינט, פשוט site, במידה ואני רוצה את הגודל של הקובץ, site, להציג, כן, את השם הזמני שהשרת נותן לקובץ, Name, אוקיי, בואו תראו, בואו נרפרש, אין, תהיו, אתם זוכרים את SatGuar?

  24. 07:59

    נעשה Open, ונעשה SendFile, הנה, תסתכלו, הנה שם הכובד, SatGuar.gif, הנה מאיזה צייפור, מאיזה סוג, אימג' גיו, הנה הגודל שלו בבית, 6,089, כן, והנה כיצד השרת נותן לו את השם הזמני, אז הוא שומר את זה בתיקיית טמפט, בשם לדוגמה php120.tmp, ככה השרת בינתיים נותן שם זמני לכובד. הוא עושה כל מיני פעולויות מאחורי הרקע, דברים שאנחנו לא יודעים בדיוק מה הוא עושה כרגע,

  25. 08:29

    אבל הוא נותן לזה שם זמני. בעיקרון זה כמעט כל התורה של העלאת קבצים. אבל בעצם אנחנו צריכים להשתמש כרגע בפונקציה העיקרית. כשאני בא בתור לקוח, ואני רוצה לדוגמה, כמו שלדוגמה ב-yout, אני מעלה סרטון, אז לדוגמה יש פה במקום send file יש פה upload file, נכון?

  26. 08:48

    אז בעצם הוא לוקח את הסרטון מהמחשב שלי ושם את זה בשרת של יוטיוב בתיקייה מסוימת. בעזרת איזה פונקציה הוא משתמש? אז ב-PHP יש את הפונקציה הבאה, שעכשיו אני אראה אותה, והפונקציה הזאת נקראת move uploaded file.

  27. 09:09

    תסתכלו, move uploaded file. הפרמטר הראשון, file name, ואנחנו יודעים בדיוק איך קראנו לזה, זה בעצם הדבר הזה. זה שם הקובץ, אוקיי?

  28. 09:23

    אבל בעיקרון פה, זה לא שם הקובץ צריך לתת, צריך לתת את שם הקובץ הזמני, אוקיי? שהשרפנו, שם הקובץ הזמני, אז save.tm.net. עכשיו, כן, עכשיו אני צריך לשים אותו בדסטיניישן, ביעד, איפה?

  29. 09:41

    אנחנו יודעים, כן, בעיקרון אם אנחנו נשים לב, בואו נסתכל איפה אנחנו נמצאים, אנחנו נמצאים פה, אתם רואים ב-examples, virtual, בואו ניגש רגע פה ל-one, פה בעצם מופיע הקובץ שלי, שנקרא Uploaded File. בואו נאמר שאני רוצה לדחוף אותו פה לתיקייה הזאת, ל-ImageP, אוקיי?

  30. 10:01

    אז קודם כל אני צריך לצאת מהתיקייה הזאת, נכון? אני צריך לצאת מהתיקייה הזאת. אז בואו נעשה ככה: נקודה, נקודה, forward slash, זה אומר בבקשה לצאת מהתיקייה הזאת.

  31. 10:13

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

  32. 10:33

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

  33. 10:56

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

  34. 11:27

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

  35. 12:10

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

  36. 12:40

    והסיומת של הקובץ ובעצם המסלול הזה אתם רואים נקודה נקודה port slash image p port slash והתיקייה a port slash ושם הקובץ זה בעצם הולך להופיע במסד הנטוי אם אני אבוא ואני אראה לכם פה את מסד הנתונים, בואו נלך רק לפרודקט המוצרים אז הנה יש לי פה לדוגמה מוצר חדש שהוכנס,

  37. 13:05

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

  38. 13:32

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

לקורס המלא: קורס PHP אונליין בעברית

ההרצאה הקודמת: קורס PHP - הרצאה 6

ההרצאה הבאה: קורס PHP - הרצאה 8

הרצאות קשורות מקורסים אחרים

  • סוס טרויאני בהעלאת קבצים לאתר - PHP - אבטחה ברמה נמוכה - DVWA Low

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פייתון - Python