לאחר עשית REDIRECT

  • פותח הנושא IceL
  • פורסם בתאריך

IceL

New member
לאחר עשית REDIRECT

אני משתמש במשפט:
header("Location: http://localhost/login.php?bad=1");​
כדי להחזיר ערך מסוים לדף אחר לצורף הצגת הודעת שגיאה ע"י משפט תנאי. הבעיה היא שלאחר השימוש במשפט הערכים לא מתאפסים והודעות השגיאה ממשיכות להופיע. לדוגמה, בדף התחברות, במקרה ששם המשתמש או הסיסמא שגויים, דף הפעולה (action) מחזיר ערך bad=1 דרך הURL, ובדף ההתחברות מופיע המשפט:
if ($bad=1) echo "invalid user or password";​
הבעיה היא שגם אם אני אחזור לדף הזה פעם אחרי פעם, ההודעה עדין תשאר שם. איך אני יכול לאפס את הערכים הללו? אני משתמש במשתנה $_GET כדי לקבל אותם מה-url.
 

זאינאל

New member
גם אם אתה קורא ל-login.php

בלי שום פרמטרים ? לא יתכן. $_GET תמיד מחזיר את מה שעכשיו ולא מה שהיה פעם. אם אתה עדיין רואה את ההודעה, אז זה בעיה בדפדפן שלך - תשכנע אותו למחוק את זכרון המטמון או תעבור לדפדפן אחר (אני מבין שאתה משתמש ב-IE ? נסה את מוזילה - הוא יותר מוצלח לאנשים שמפתחים אתרים). חות מזה, אני הייתי נמנע משימוש בשם המחשב בפקודה header location - זה יחייב אותך לשנות את כל העמודים לכשתעבור לשרת אחר. אלטרנטיבה אחת היא לשלוף את שם השרת המקומי מתוך SERVER_$ , או - יותר טוב - לא לכתוב את השם כלל - להשתמש רק בנתיב אבסולוטי:
header("location: /login.php?bad=1")​
ו-PHP כבר יסדר לך את שם השרת הנכון באופן אוטומטי.
 

IceL

New member
אז ככה...

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