הורדה של קבצים בצורה מאובטחת ב- PHP

שתפו:

Share on facebook
Share on google
Share on twitter
Share on linkedin

אם השתמשתם בתוספים או שירותים כמו: amazon, woocommerce, easy digital downloads. אז בטח נתקלתם במבנה קישורים כזה, שמתמשים באתר themeforest:
https://themeforest.net/user/username/download_purchase/d894ba77-96e5-40f7-984d-32193846428b

themeforest משתמשים בשירות של Amazon S3 לאחסן את הקבצים שלהם, השירות תומך בקונספט שאני ידבר עליו במאמר זה: download proxy.

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

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

יצירת Page Template

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

לכו לעמודים –> עמוד חדש, בחרו ב- Download Proxy

דרישות מוקדמות

  • יש לכם נכס דיגיטלי להגן עליו, יכול להיות תחת Custom post type
  • תיבת Metabox עם ערך בשם download_path

כתיבת הקוד ל- Download Proxy

לצורך דוגמה זו אנחנו נעבוד עפ פרמטר חיצוני בשם code, אתם יכולים לבחור מה שבא לכם.
כדי לשמור על מבנה קישור נקי כמו בקישור של themeforest נצטרך להגדיר משתנה חיצוני בקובץ functions.php של התבנית

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

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

לצורף דוגמה נבצע שאילתא על Custom post type בשם download ומטה בשם download_code.
אחרי זה "נניח" שיש לנו meta בשם download_path לנתיב הקובץ.

נשלח לדפדפן headers שמודיעים על ההורדה הקרבה

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

מקווה שנהניתם!

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

יהודה חסין

יהודה חסין

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

יהודה חסין

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

מאמרים אחרונים

קטגוריות

Post SMTP Mailer / Email Log
Post SMTP Mailer / Email Log
קראו את הפוסט הקודם:
התממשקות לתיבת הדואר שלך ב-G Suite בעזרת Google Apps Script

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

סגור