2 שאלות

idan zaguri

New member
2 שאלות

1) בניתי טופס של העלאת קבצים בPHP שמשתמש בפונקצייה COPY, ניסתי אותו על השרת שלי בבית והוא עבד מצויין, העלתי אותו לשרת באינטרנט וזה לא עבד, ביררתי בתמיכה ואמרו לי שזה בגל לשהשרת במצבן מוגן ולכן אין אפשרות לעשות את זה, אם אני ישתמש בשיטה החדשה של PHP של העלאת קבציםף זה יעבוד? 2)(קשור להעלאת הקבצים) העלאת קבצים היא בעצם לפורום שבניתי, אבל אני לא רוצה שכל אחד יעלה קבצים וישים אותם בשרת אחר, אני רוצה שאם שמים לינקים בשרת אחר, זה הופך ללינק לבאנר של האתר שלי, איך אני עושה את זה? הנה דוגמה(לא תמיד עובד) זה קובץ שהעלתי לאתר FRESH.CO.IL, ותרא מה רואים במקום: http://uploaded.fresh.co.il/3f433c7a02353ecb.txt הקובץ המקורי הוא קובץ טקסט
 

N i X

New member
בקשר ל2...

עושים את זה עם mod_rewrite של אפאצ'י, וזה לא קשור לPHP, חפש בגוגל דוגמאות.
 

זאינאל

New member
אל תשתמש ב-COPY,

קודם כל - זה לא משמש להעלאת קבצים אלא ל-DAV. אם אתה רוצה לעלות קבצים, תשתמש ב-PUT או ב-HTTP multipart Form upload. האחרון עדיף מכיוון שבהרבה שרתים לא מאפשרים אף פעולה מלבד GET או POST, בגלל שרוב הפעולות האחרות יכולות להיות מפגע בטיחותי אם לא נזהרים בתצורה. ל-PHP יש תמיכה מובנית ב-HTTP multipart form upload. בקשר ל- 2, אתה יכול לעשות את זה בעזרת mod_rewrite באפאצ'י, כמו ש-NIX הציע, אבל אפשר לעשות את זה גם ב-PHP: דבר ראשון צריך לשים את הקבצים בספריה שלא נגישה מהאינטרנט דרך השרת. עכשיו שים קובץ PHP בשרת וגש אליו כמו לספריה : http://uploaded.fresh.up.co.il/uploads.php/filename.txt הקובץ הזה יכול לבדוק את ה-referrer ועוד דברים ואז להשתמש ב-path info בשביל להבין איזה קובץ המשתמש רוצה, לאתר אותו בספריה של ה-uploads (או במסד נתונים - אני אוהב לשים קבצים ב-MySQL) ולשלוח אותו למשתמש (שים לב לשלוח את ה-content type המתאים). אפשר גם להשתמש ב-mod_rewrite פשוט לשכתב את http://uploaded.fresh.up.co.il/filename.txt ל- http://uploaded.fresh.up.co.il/uploads.php?filename=filename.txt בצד השרת בלי שהמשתמש ירגיש, ואז אתה לא צריך את path info וזה גם נראה יותר יפה. בכל מקרה, הבאג העיקרי אצלך זה שאם אין referrer אתה נותן את הקובץ : שגיאה חמורה !
זה מאפשר לאנשים פשוט להעתיק את ה-URL ולשים אותו בשורת הדפדפן בשביל לראות את הקובץ, או אפילו - יש כל מיני טריקים של JavaScript שהורסים את ה-referrer לפני ההפניה.
 
למעלה