מבוא
בעת עיצוב יישומי אינטרנט, מפתחי אתרים זקוקים לפעמים לגישה למידע על משתנה שאינו מועבר דרך כתובת URL, אך זמין ביישום. לדוגמה, יישום אינטרנט של לוח שנה יכול לבקש מהמבקרים את אזור הזמן המועדף שלהם. לאחר מכן, הוא יכול להציג תאריך ושעה באותו אזור זמן בכל דפי היישום. משתני מופע יכולים לספק פונקציונליות זו.
למרות שמשתני מופע הם כלי רב עוצמה בארגז הכלים של מפתחי האינטרנט, Dreamweaver לא מייצר אוטומטית את כל הקוד הדרוש להם כדי לפעול. מסמך זה מתאר את משתני המופע ומספק שלבים לשימוש בהם בדגמי השרתים השונים הנתמכים על ידי Dreamweaver.
דרישות מקדימות
הבנת מסמך זה והשימוש בו מחייבים שהמפתח יעבוד עם דגם שרת כמו ASP או ColdFusion. המפתח נדרש להיכרות מעשית של המושגים הבאים. כמו כן, עליו להשתמש בגרסה של Dreamweaver התומכת בפיתוח דינמי (Dreamweaver MX או Dreamweaver MX 2004). לקבלת מידע נוסף, עיין בסעיפים הרלוונטיים במדריך השימוש ב-Dreamweaver או במערכת העזרה.
- הכנה לבניית אתרים דינמיים
- הפיכת דפים לדינמיים
כיצד משתני מופע פועלים
משתני מופע מאפשרים למפתחים לאחסן מידע על המבקרים על ידי הגדרת משתנה שנגיש ליישום למשך המופע של המבקר.
למשתני מופע יש התכונות הבאות:
- אלא אם צוין אחרת, תוקפם של משתני המופע פג 20 דקות לאחר שמבקר עוזב את האתר.
- אם לא זוהתה פעילות באתר של אותו מבקר ספציפי במשך 20 דקות, תוקפם של משתני המופע פג. תוקפם פג גם אם המבקר יוצא מדפדפן האינטרנט שלו.
- כדי שמשתני המופע יפעלו, הדפדפן של המבקר צריך לאפשר קבלת קובצי Cookie.
- חשוב שכל דפי האתר יהיו ממוקמים בתיקייה יחידה בשרת האינטרנט.
- המידע המאוחסן במשתני המופע הוא ספציפי למבקר באתר. מבקרים שונים באתר אינם יכולים לגשת למידע משתני המופע של מבקרים אחרים.
בדרך כלל, מפתחים נותנים למבקר למלא טופס ביישום האינטרנט כדי לקבל את הנתונים עבור משתני המופע. משתנה המופע מקבל את הערך של שדה טופס. הדוגמאות ב-TechNote זה משתמשות במידע מרכיב בטופס כדי להגדיר את ערכו של משתנה המופע.
בכל דגמי השרתים מלבד ASP.NET, ל-Dreamweaver יש תכונה המופעלת מתפריט לכתיבת משתני מופע בדף לאחר יצירת משתנה המופע. עם זאת, Dreamweaver לא מספק תכונה המופעלת מתפריט להקצאת ערך למשתנה מופע (פעולה המכונה גם יצירת משתנה מופע). יש להקצות ערך למשתנה מופע באופן ידני בתוך קוד המקור.
יצירת משתנה מופע ביישומי ASP, ColdFusion, JSP או PHP
הערה: הדוגמה של ASP.NET שונה באופן מהותי מדגמי השרתים האחרים, שכן ASP.NET משתמשת בדרך כלל בטופסי אינטרנט במקום בטופסי HTML מסורתיים. אם הנך משתמש במודל שרת ASP.NET, ראה דוגמה של ASP.NET בסוף מסמך זה.
-
הגדרת אתר ASP, ColdFusion, JSP או PHP.
-
צור שלושה דפים דינמיים בתוך האתר. הדף הראשון מכיל טופס HTML (מתואר בשלב הבא) שנשלח לדף השני. בדף השני, צור היפר-קישור המפנה לדף השלישי.
הערה: הסיבה לכך שדוגמה זו משתמשת בשלושה דפים היא כדי להדגים שמשתנה המופע זמין לדף השני, השלישי והבאים אחריו. משתני בקשה, שהם חלופה למשתני מופע, ניתנים להעברה מדף אחד לשני. עם זאת, הם אינם זמינים לדף השלישי או לבאים אחריו.
-
בדף הראשון, צור טופס המכיל רכיב טופס של שדה טקסט ולחצן "שלח". ודא שמאפייני בקרת הטופס מוגדרים באופן הבא:
- בחר את שדה הטקסט וקרא לו "txtFirstName" באמצעות מנהל המאפיינים.
- בחר את תג הטופס (לחץ על הקו המקווקו האדום שמקיף את פקדי הטופס או לחץ על תג הטופס בבורר התגים). הגדר את הדף השני כ-action של הטופס במנהל המאפיינים. ציין post כשיטה של הטופס. שיטת get משמשת גם היא לעתים קרובות עם משתני מופע, אך דוגמה זו משתמשת בשיטת post ליתר פשטות.
-
בדף השני, הפעל את תצוגת הקוד ("תצוגה" > "קוד"). מעל התג הפותח <html>, הקלד את הקוד עבור דגם השרת שלך מתוך הרשימה להלן:
קוד זה מקבל את התוכן מרכיב הטופס "txtFirstName" שיצרנו בדף הראשון. לאחר מכן הוא יוצר משתנה מופע בשם "sessFirstName" עם ערך זהה לתוכן רכיב הטופס. במילים אחרות, קוד זה יוצר משתנה מופע שמכיל את המידע שהמשתמש הזין בדף הטופס.- ASP (VBScript) (ודא שהקוד רשום בשורה יחידה, ללא תווי שורה חדשה)
<%session("sessFirstName")=Request.Form("txtFirstName")%> - ASP (VBScript) (ודא שהקוד רשום בשורה יחידה, ללא תווי שורה חדשה)
<%Session("sessFirstName")=String(Request.Form("txtFirstName"))%> - ColdFusion
<cfset Session.sessFirstName = #Form.txtFirstName#>
כדי להשתמש במשתני מופע, ColdFusion מחייב ליצור גם קובץ Application.cfm בשורש האתר, אם באתר שלך אין עדיין קובץ כזה. הקובץ Application.cfm חייב להכיל את הקוד הבא:
<CFAPPLICATION NAME="Name" SESSIONMANAGEMENT="Yes">
הערה: במערכות UNIX, שמות קבצים הם תלויי רישיות. ודא ששם הקובץ Application.cfm נפתח באות A רישית. עיין בתיעוד של ColdFusion כדי לקבל מידע על הגדרות נוספות של Application.cfm. - JSP (ודא שהקוד רשום בשורה יחידה, ללא תווי שורה חדשה)
<%session.setAttribute("sessFirstName", request.getParameter("txtFirstName"));%>
גם הקוד הבא יעבוד, אך נוסח זה הוצא משימוש במפרטי Java האחרונים:
<%session.putValue("sessFirstName", request.getParameter("txtFirstName"));%> - PHP
<?php session_start(); session_register("sessFirstName"); $sessFirstName = $HTTP_POST_VARS['txtFirstName']; ?>
אם אירעה שגיאת PHP בדפדפן ב-Windows, ייתכן שהתקנת ה-PHP לא כוללת תיקיית שמירה חוקית לנתוני מופע. פרמטר זה נקרא session.save_path בקובץ PHP.ini וכן בקובץ httpd.conf. מיקום התיקייה הוא אופציונלי, אך ההגדרה הבאה אמורה לעבוד:
session.save_path = c:\php\sessiondata
בהתאם לתצורת PHP שלך, לפעמים יש צורך להפעיל ידנית ניהול מופע בכל הדפים הקשורים למופע. הצב את שורת הקוד הבאה בראש כל דף:
<?php session_start();?>
במקום לקרוא לפונקציה session_start() בכל דף, ניתן להתחיל הפעלות של PHP באופן אוטומטי על ידי הפעלת האפשרות session.auto_start בקובץ php.ini.
- ASP (VBScript) (ודא שהקוד רשום בשורה יחידה, ללא תווי שורה חדשה)
-
עדיין באותו דף, פתח את החלונית Bindings, על ידי בחירת Window > Bindings. מתפריט הפלוס (+), בחר "משתנה מופע". בתיבת הדו-שיח "משתנה מופע", הזן "sessFirstName" (ללא המרכאות) בשדה השם ולחץ על "אישור".
-
הרחב את סמל משתנה המופע שמופיע בחלונית Bindings. גרור את הסמל "sessFirstName" אל חלון המסמך. תוכן משתנה המופע מועתק לדף זה.
-
פתח את הדף השלישי וחזור על שלבים 4 ו-5. שוב, ודא שבדף השני מופיע קישור לדף השלישי.
-
שמור, פרסם ובדוק את כל שלושת הדפים. אם לא קיבלת את התוצאות הצפויות, בדוק את גודל האותיות והאיות של רכיב הטופס, משתנה המופע ומשתנה הבקשה. סמל המופע מופיע כעת בחלונית Bindings עבור כל דף באתר זה.
יצירת משתנה מופע ב-ASP.NET
-
הגדר אתר ASP.NET.
-
צור שני דפים דינמיים בתוך האתר. הדף הראשון מכיל טופס אינטרנט של ASP.NET שקורא לעצמו בחזרה ואז מפנה לדף השני.
הערה: הסיבה לכך שדוגמה זו משתמשת בשני דפים היא כדי להדגים שמשתנה המופע זמין לדף השני, השלישי והבאים אחריו. משתני בקשה, שהם חלופה למשתני מופע, לא ניתנים להעברה מטופס אינטרנט של ASP.NET בדף אחד לדף שני.
-
הדף הראשון חייב להכיל טופס אינטרנט של ASP.NET המכיל פקד שרת אחד מסוג <asp:textbox> ופקד שרת מסוג <asp:button>. הגדר את המאפיין "id" של פקד תיבת הטקסט ל-"txtFirstName". הקוד המלא עבור הדף הראשון מובא להלן. בחר C# או VB, בהתאם לשפה שבחרת עבור אתר ה-ASP.NET שלך:
קוד זה מקבל את התוכן מפקד השרת <asp:textbox> ששמו "txtFirstName". לאחר מכן הוא יוצר משתנה מופע בשם "sessFirstName" אשר מוגדר עם ערך זה לתוכן פקד השרת. במילים אחרות, קוד זה יוצר משתנה מופע שמכיל את המידע שהמשתמש הזין בדף הטופס.
- ASP.NET (VB) - דף 1 <%@ Page Language="vb"%><script runat="server"> Sub Button1_Click(ByVal s As Object, ByVal e As EventArgs) Session("sessFirstName") = Request("txtFirstName") Response.Redirect("session2.aspx") End Sub</script><html><head><title>Session Page 1</title></head><body> דוגמה למשתנה מופע של ASP.NET VB וטופס אינטרנט - דף 1 - page 1 <form id="Form1" method="post" runat="server"><p>first name:<asp:TextBox id="txtFirstName" runat="server" /></p><p><asp:Button id="Button1" runat="server" Text="Submit" onClick="Button1_Click" /></p></form></body></html>
- ASP.NET (C#) - דף 1 <%@ Page Language="C#" %><script runat="server"> void Button1_Click(object sender, EventArgs e) { Session["sessFirstName"] = Request["txtFirstName"]; Response.Redirect("session2.aspx"); }</script><html><head><title>Session Page 1</title></head><body> משתנה מופע של ASP.NET C# ודוגמה לטופס אינטרנט - page 1<form id="Form1" method="post" runat="server"><p>first name:<asp:TextBox id="txtFirstName" runat="server" /></p><p><asp:Button id="Button1" runat="server" Text="Submit" onClick="Button1_Click" /></p></form></body></html>
-
בדף השני, גש לתצוגת קוד על ידי בחירה ב"תצוגה" > "קוד", והזן את הקוד הבא כדי להעתיק את תוכן משתנה המופע לדף. שוב, בחר C# או VB, בהתאם לשפה שבחרת עבור אתר ה-ASP.NET שלך:
- ASP.NET (VB) - דף 2 <%@ Page Language="vb" %><html><head><title>Session Page 2</title></head><body><p>דוגמה למשתנה מופע של ASP.NET VB וטופס אינטרנט - דף 2</p><p>first name: <%= session("sessFirstName") %></p></body></html>
- ASP.NET (C#) - דף 2 <%@ Page Language="C#" %><html><head><title>Session Page 2</title></head><body><p>דוגמה למשתנה מופע של ASP.NET C# וטופס אינטרנט - דף 2</p><p>first name: <%=Session["sessFirstName"]%></p></body></html>
-
שמור, פרסם ובדוק את שני הדפים. אם לא קיבלת את התוצאות הצפויות, בדוק את גודל האותיות והאיות של פקדי השרת, משתנה המופע ומשתנה הבקשה.
מידע נוסף
לקבלת פרטים נוספים על משתני מופע, עיין במאמרים הבאים: