שלום לכולם!

amitgold

New member
שלום לכולם!

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

shanor

New member
מממ...

זה בעיקר תלוי בשרת עליו אתה מאכסן את האתר שלך. בגדול זה תלוי האם יש לך הרשאה לעשות את זה (רוב החברות נותנות אפשרות כזו) ובנוסף זה תלוי בסוג השרת שעליו אתה מריץ (השרת שעליו יושב האתר). באפצ´י למשל צריך לערוך את קובץ ה- htaccess. ולהוסיף את השורה הבאה: ErrorDocument 404 /errors/custom404.html כאשר כאן מדובר על פקודת שגיאה, מספר השגיאה, והדף שאליו תופנה השגיאה. (זה נכון לגבי APACHE, אני לא יודע מה הנוהל לגבי שרתים אחרים). עכשיו זה טוב לגבי דף של HTML, אבל במקביל, תן את השם של קובץ ה- PHP, שלך והוא יועבר כאילו היה קובץ PHP רגיל. בתוך קובץ ה- PHP, תשתמש בקטע של
$_SERVER[´REMOTE_ADDR´];​
אבל גם זה לא מבטיח תמיד תוצאות ולא תמיד תוצאות נכונות. כדאי שתקרא על זה קצת במדריך של PHP. בהצלחה שנאור.
 

amitgold

New member
תודה שנאור!

אבל נתקלתי בבעיה... דף ה-404 אצלי מוגדר כ-html ולפי מה שידוע לי, אינו ניתן לשינוי ל-php, ולכן אני לא יכול להפעיל בו את הקוד הזה. חשבתי לנסות ליצור הפניה אוטומטית מדף ה-404 לקובץ php שבו יהיה הקוד, אבל אז הוא יזהה את הדף האחרון שהייתי בו בתור דף ה-html!!! יש למישהו הצעה?
 

nirdagan

New member
אפשר להגדיר את 404 כ-PHP

תכתוב ב .htaccess של הספריה הראשית:
ErrorDocument 404 /my404page.php​
ותדאג שבאמת יהיה דף כזה ביחס לשורש של האתר שלך.
 

Raful

New member
ממ.

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

shanor

New member
מממ...

טוב אם אין לך את האפשרות לשנות את הדברים, אפשר לנסות משהו קצת אחר, היות ובתכלס אין לך אפשרות להשתמש בPHP כי אתה לא יכול לשנות את קובץ שלך מ- HTML ל- PHP (למרות שלא אמורה להיות בעיה כזו, זה בסה"כ לשנות את השם של הקובץ בהפנית השגיאה 404 כמו שכתבתי בהודעה הקודמת) בוא נשתמש ב- JS, למרות שעכשיו אנחנו מורידים את הסבירות שזה יעבוד, ושזה יעבוד נכון...
<script> MyLocation=´myErrorPage.php?Ref=´.document.referrer; document.location=MyLocation; </script>​
עכשיו, תזכור שמדובר כאן בדוק צד לקוח (JS), שאין ביטחון שהוא יעבוד מהרבה מאוד סיבות (דפדפן, הגדרות ועוד). תשים את הקוד הזה בדף ה- HTML כקוד JS. מה שזה עושה הוא ראשית לקחת את הנתון שדף השגיאה שלך קיבל כ"הדף המפנה" = REFERER, ואז לטעון דף חדש שהוא דף ה- PHP שבתוכו אתה שם את הסקריפט שלך, כאשר הנתון של הדף המפנה מועבר בצורה של GET, על כן אותו אתה צריך לקרא בצורה של [´GET[´Ref_$ מכאן כל מה שיש לעשות זה לשלוח את הדברים במייל אליך, כמו ש- UVAL כתב בפורום של בוני האתרים (על פי הלינק ש- RAFUL נתן קודם). לא בדקתי את זה ככה שיכול להיות שיש לי כמה טעויות ושגיאות כאן אבל זה העיקרון שאני מצליח לחשוב עליו כרגע אם אתה אומר שדף השגיאה שלך חייב להיות HTML. בכל אופן תזכור זה לא יעבוד בכל המקרים! אה, ועוד דבר, אולי כדאי באמת לשים לב להערה שנתנה כאן, שיהיו לך הצפות של מיילים על ליניקים שבורים (אפילו אם יהיה רק אחד כזה...), אולי כדאי לשלב את זה בתוך מאגר נתונים כל שהוא ולא לשלוח אליך כל פעם הודעת מייל. ככה בעצם למנוע כפילויות והצפה כללית של המייל שלך. מקווה שעזרתי ולו במעט. בהצלחה שנאור. מקווה שעזרתי
 

amitgold

New member
אני רואה שהאות מממ מאוד אהובה עליכם

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

shanor

New member
מממ...

אמרתי שלא בדקתי את הקוד נכון...??? אז הסתכלתי שוב, אמנם גם הפעם לא בדקתי אותו אבל מצאתי טעות בקוד SCRIPT שכתבתי קודם: הנה הגרסה המתוקנת:
<script> MyLocation="myErrorPage.php?Ref="+document.referrer; document.location=MyLocation; </script>​
בקוצור, מה שצריך לשנות זה את הגרשיים הבודדים שפותחים את הטקסט שורה של MYLOCATION צריך לשנות למרכאות, ואת הנקודה שלפני ה- DOCUMENT, באותה שורה, צריך לשנות לפלוס +. זהו. שנאור.
 
למעלה