php / ניווט באתר בעזרת PHP / סודות נחשפים
סודות נחשפים
הדרך להגיע לסיפור מסוים מורכבת משם האגף, מספר הסיפור ומספר העמוד.
משתמשים ייכנסו לאגפים ולסיפורים ע"י קריאה לעמוד הראשי netsloth.html/
ומעבר לאגף או לסיפור הרלוונטי במשתנה הסביבה PATH_INFO. (זו, דרך אגב,
דרך פופולרית מאוד לניווט גם ב-XSSI). הרשו לי להשחיל אזהרה קצרה: הימנעו
משימוש במשתנים שלא הוכרזו. לא מספיק לבדוק אם המשתנה ריק או לא, חשוב
גם לבדוק אם אי פעם הוכנס בו ערך. אם לא הוכנס בו כלום, תיאלצו להתמודד
עם הודעת שגיאה, וזה עסק לא נעים. הפונקציה ()isset תדע להגיד לנו אם משתמש
מסויים הוכרז כראוי ומכיל ערך בתוכו.
זה יראה עכשיו בערך ככה:
list($null,$section,$storyid,$pg) = $dirs;
if (!isset($section) || $section == "") {section = $sections[0]; }
if (!isset($storyid) || !$storyid ({ $storyid = 0; }
if (!isset($pg) || !$pg) { $pg = 1; }
include("$docroot/meta/ads.htmlf");
מהכתובת אנו שולפים שם אגף, מספר סיפור ומספר עמוד. אם לא צוין שום אגף,
אנחנו משתמשים בראשון הערכים במחרוזת section$ המכילה את שמות האגפים.
באותה מידה, ברירת המחדל למספר הסיפור היא 0, ומספר העמוד יהיה 1 אלא
אם כן צוין אחרת. בשלב הזה אנו קוראים להצהרת ה-HTML שתציג את הבאנרים.
אנו ממתינים עד שנדע באיזה אגף אנחנו נמצאים ואיזה סיפור אנחנו מציגים
(אם בכלל). המידע הזה יכול להשפיע על בחירת הבאנר להצגה.
המבנה של האתר מאוד פשוט (הי, זו רק דוגמה). יש באנר בחלק העליון של העמוד,
מתחת לבאנר יש קישור לניווט באתר. התוכן בצד שמאל, מודגש מעט. אם אנחנו
קוראים סיפור, ישנה טבלה בצד ימין מלמטה שמראה את רשימת שאר הסיפורים
באגף. אם אנחנו לא באמצע קריאת סיפור, רשימת הסיפורים באגף מופיעה
במקום השמור לתוכן. שימו לב לכך שאנחנו תמיד נמצאים בתוך אגף כלשהו,
מכיוון שזוהי ברירת המחדל בה אנחנו משתמשים אם לא צוין שום דבר אחר ע"י
המשתמש.
בתחילה הבאנר מורכב מ-HTML נקי:
print "<table border=0 cellspacing=0 cellpadding=0\<n";
print "<tr>\n"; print "<td bgcolor=blue rowspan=2> </td>\n";
print "<td bgcolor=blue rowspan=2><img width=100
src$=\root/meta/netsloth.gif\"><br><br></td>\n";
print "<td bgcolor=blue rowspan=2> </td>\n";
print "<td width=\"100%\" bgcolor=blue><font face=code
size=10 color=red><b>NET";
print "<font color=yellow>SLOTH</td></tr>\n";
print "<tr><td width=\"100%\" bgcolor=blue><table><tr>\n";
השלב הבא הוא בניית האגפים השונים באתר ע"י מעבר חוזר ונשנה על מערך
ה-sections$ פונקצית ה ()each עוברת על מערך, ומחזירה שני ערכים עבור כל
כניסה. הערך הראשון הוא מספר האינדקס של התא במערך. ( 0 לראשון, 1 לשני
וכן הלאה). הערך השני הוא הערך שמצורף לאינדקס. פעולה בסיסית על מערך,
באמת.
אנחנו לא רוצים קישור לאגף שבו אנחנו נמצאים, לכן נציג את שם האגף כטקסט
ולא כקישור. לכל שאר האגפים, נספק קישור הכולל את שם האתר ושם האגף.
לדוגמא, קישור לאגף בשם barney יראה ככה:
http://www.netsloth.com/netsloth/barney
הקו האלכסוני האחרון לא הכרחי, אבל הוא עוזר להבהיר למשתמש שמדובר
בספרייה ולא בקובץ.
$key = "";
$value = "";
while (list($key,$value) = each($sections))
{
$value = trim($value);
print "<td bgcolor=blue><font face=sans-serif size=3
color=white>";
if ($value == $section)
{
print "<b>$value</b>\n;
}
else
{
print "<a href=\"$root/netsloth/$value/\"><font
color=white>$value</font></a>\n";
}
print "</td>\n";
}
print "</tr></table>\n";
print "</td></tr></table>\n";
print "</p>\n";
נראה טוב? עכשיו נמשיך עוד קצת ונשכלל את הניווט באתר.
עמוד הבא: על מה אני מסתכל? >>
|