09-11-2010, 20:31
|
|
|
|
חבר מתאריך: 02.10.05
הודעות: 2,355
|
|
בתגובה להודעה מספר 1 שנכתבה על ידי אלון סאקס הגבר שמתחילה ב "PHP| העברת קובץ לתיקייה זמנית למטרת הורדה"
נראה לי רעיון רע.
לכל הורדה אתה רוצה להעתיק את הקובץ למקום פיזי אחר בהארד-דיסק, לקבצים גדולים רק ההעברה יכולה לקחת חצי דקה (ויותר, תלוי כמה גדולים) וזה כשרק מישהו אחד מוריד קובץ.
אם אתה מתעקש על פתרון מבוסס מערכת קבצים, תקרא על Symbolic Linkֿ, אבל גם זה, פתרון עקום.
הכי פשוט זה לעשות ככה:
את כל ההעלאות אתה שם בתיקייה שלא ניתן להגיע אליה דרך http, ב- apache אני חושב שעושים את זה על ידי יצירת קובץ .htaccess שתוכנו:
קוד:
Order Deny,Allow
Deny from all
אבל אני לא בטוח כמה זה מדויק
אחר כך תעשה טבלה של הורדות שאפשר לבצע כרגע, נקרא לה download_tickets
במימוש הכי פשוט יהיה לטבלה 3 עמודות: id, requestTime,fileId ו- ipAddress
id זה מחרוזת זיהוי ל-"כרטיס"
requestTime זה הזמן שבו "ביקשו" את הכרטיס, מה שחשוב זה שהשדה לא יכיל רק שעה, אלה גם תאריך, שלא יעבור יום ואז פתאום הכרטיס יהיה תקין
בהנחה שאתה רושם במסד נתונים את הקבצים שמועלים לאתר, fileId זה ה- id של הרשומה של הקובץ שהמשתמש רוצה להוריד, צריך את זה בשביל שאחר כך יהיה אפשר להוציא מהבקשה את הנתיב של הקובץ
ו- ipAddress זה הכתובת ip...
כמשתמש רוצה להוריד משהו אתה מקשר אותו לקובץ עם פרמטר של הבקשה, הוא מוודא שהבקשה קיימת ואם היא קיימת שהיא עדיין תקפה, אם כן הוא מוציא את הנתיב של הקובץ ושולח אותו להורדה
רצוי גם להריץ עם cron כל כמה זמן סקריפט שמנקה את כל הבקשות שפגו תוקף
_____________________________________
|