مقدمة
عند تصميم تطبيقات الويب، يرغب مطورو الويب في بعض الأحيان في الوصول إلى معلومات متغيرة لا يتم تمريرها عبر عنوان URL، ولكنها تكون متوفرة في التطبيق. فمثلاً، يمكن لتطبيق التقويم على الويب أن يطلب من الزائرين تفضيلات منطقتهم الزمنية. ثم يمكنهم عرض التاريخ والوقت في تلك المنطقة الزمنية عبر صفحات التطبيق. ويمكن أن توفر متغيرات جلسة العمل هذه الوظيفة.
وبالرغم من أن متغيرات جلسة العمل هي أداة قوية في مجموعة أدوات مطوري الويب، إلا أن Dreamweaver لا يقوم تلقائيًا بإنشاء جميع التعليمات البرمجية اللازمة لعملها. يصف هذا المستند متغيرات جلسة العمل ويقدم خطوات لاستخدامها في نماذج الخادم المختلفة التي يدعمها Dreamweaver.
المتطلبات الأساسية
يتطلب استخدام هذا المستند وفهمه عمل المطور باستخدام نموذج خادم، مثل ASP أو ColdFusion. ويحتاج المطور إلى المعرفة العملية بالمفاهيم التالية. كذلك يجب عليه استخدام إصدار Dreamweaver الذي يدعم التطوير الديناميكي (Dreamweaver MX أو Dreamweaver MX 2004). راجع الأقسام ذات الصلة من دليل استخدام Dreamweaver أو نظام التعليمات لمعرفة المزيد.
- التحضير لإنشاء المواقع الديناميكية
- جعل الصفحات ديناميكية
كيفية عمل متغيرات جلسة العمل
تتيح متغيرات جلسة العمل للمطورين تخزين معلومات الزائرين عن طريق تعيين متغير يمكن للتطبيق الوصول إليه طوال مدة جلسة عمل الزائر.
تتميز متغيرات جلسة العمل بالسمات التالية:
- وما لم يتم تحديد خلاف ذلك، تنتهي صلاحية متغيرات جلسة العمل بعد 20 دقيقة من مغادرة الزائر للموقع.
- تنتهي صلاحية متغيرات جلسة العمل إذا لم يتم اكتشاف أي نشاط على الموقع لمدة 20 دقيقة بواسطة زائر الموقع المحدد. وتنتهي صلاحيتها أيضًا إذا خرج الزائر من مستعرض الويب الخاص به.
- ولكي تعمل متغيرات جلسة العمل، من الضروري أن يتم ضبط مستعرض الزائر على قبول ملفات تعريف الارتباط.
- ومن الضروري أن تكون جميع صفحات الموقع موجودة في دليل واحد على خادم الويب.
- المعلومات المخزنة في متغيرات جلسة العمل خاصة بزائر الموقع. لا يمكن لزوار الموقع المختلفين الوصول إلى معلومات متغير جلسة عمل بعضهم البعض.
ويحصل المطورون في المعتاد على بيانات متغيرات جلسة العمل من خلال مطالبة الزائر بملء نموذج في تطبيق الويب. ويتم تعيين متغير جلسة العمل على قيمة حقل النموذج. تستخدم الأمثلة الموجودة في TechNote هذا معلومات من عنصر نموذج لتعيين قيمة متغير جلسة.
وبالنسبة لجميع نماذج الخوادم باستثناء ASP.NET، يحتوي Dreamweaver على ميزة قائمة على القوائم لكتابة متغيرات جلسة العمل إلى صفحة بعد إنشاء متغير جلسة العمل. وبالرغم من هذا، لا يوفر Dreamweaver ميزة قائمة على القوائم لتعيين قيمة لمتغير جلسة العمل (يُعرف أيضًا باسم بدء متغير جلسة عمل). من الضروري تعيين قيمة لمتغير جلسة عمل يدويًا في التعليمة البرمجية المصدر.
إنشاء متغير جلسة عمل في تطبيقات ASP أو ColdFusion أو JSP أو PHP
ملحوظة: يختلف مثال ASP.NET اختلافًا كبيرًا عن نماذج الخادم الأخرى، لأن ASP.NET عادةً ما يستخدم نماذج الويب بدلاً من نماذج HTML التقليدية. إذا كنت تستخدم نموذج خادم ASP.NET، فراجع مثال ASP.NET في نهاية هذا المستند.
-
حدد موقع ويب ASP أو ColdFusion أو JSP أو PHP.
-
أنشئ ثلاث صفحات ديناميكية داخل الموقع. تحتوي الصفحة الأولى على نموذج HTML (موضح في الخطوة التالية) يتم إرساله إلى الصفحة الثانية. وفي الصفحة الثانية، أنشئ ارتباطًا تشعبيًا يشير إلى الصفحة الثالثة.
ملحوظة: سبب استخدام هذا المثال لثلاث صفحات هو إثبات أن متغير جلسة العمل متوفر لصفحة ثانية وثالثة ولاحقة. ويمكن نقل متغيرات الطلب، التي تعد بديلاً لمتغيرات جلسة العمل، من صفحة إلى ثانية. وبالرغم من هذا، فهي غير متوفرة لصفحة ثالثة أو لاحقة.
-
في الصفحة الأولى، قم بإنشاء نموذج يحتوي على عنصر نموذج حقل نصي وزر إرسال. تأكد من تعيين سمات التحكم في النموذج على النحو التالي:
- حدد حقل النص وقم بتسميته "txtFirstName" باستخدام عارض الخصائص.
- حدد علامة النموذج (انقر فوق الخط الأحمر المتقطع المحيط بعناصر تحكم النموذج أو انقر فوق علامة النموذج في محدد العلامات). عيّن الصفحة الثانية كإجراء النموذج في عارض الخصائص. حدد post على أنه أسلوب النموذج. يتم أيضًا استخدام الأسلوب "get" بشكل متكرر مع متغيرات جلسة العمل، ولكن هذا المثال يستخدم الأسلوب post من أجل البساطة.
-
في الصفحة الثانية، قم بتشغيل طريقة عرض Code (View> Code). فوق علامة الفتح <html>، اكتب التعليمات البرمجية لنموذج الخادم من القائمة أدناه:
تحصل هذه التعليمات البرمجية على المحتويات من عنصر النموذج المسمى "txtFirstName" الذي تم إنشاؤه في الصفحة الأولى. ثم ينشئ متغير جلسة عمل يسمى "sessFirstName" والذي تم تعيينه مساويًا لمحتويات عنصر النموذج. بمعنى آخر، تنشئ هذه التعليمات البرمجية متغير جلسة عمل يحتوي على المعلومات التي يُدخلها المستخدم في صفحة النموذج.- ASP (VBScript) (تأكد من أن التعليمات البرمجية موجودة في سطر واحد، بدون فواصل أسطر)
<%session("sessFirstName")=Request.Form("txtFirstName")%> - ASP (JavaScript) (تأكد من أن التعليمات البرمجية موجودة في سطر واحد، بدون فواصل أسطر)
<%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. من قائمة الإضافة (+)، اختر Session Variable. في مربع الحوار Session Variable، أدخل "sessFirstName" (بدون علامتي اقتباس) في حقل الاسم، وانقر فوق OK.
-
قم بتوسيع أيقونة متغير جلسة العمل في اللوحة Bindings. اسحب أيقونة "sessFirstName" إلى النافذة Document. تتم كتابة محتويات متغير جلسة العمل على هذه الصفحة.
-
افتح الصفحة الثالثة وكرر الخطوتين 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) - Page 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 session variable and web form example - 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#) - Page 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# session variable and web form example - 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>
-
في الصفحة الثانية، قم بالوصول إلى طريقة عرض Code من خلال اختيار View> Code، وأدخل التعليمات البرمجية أدناه لكتابة محتويات متغير جلسة العمل إلى الصفحة. مجددًا، اختر إما C# أو VB، بناءً على اللغة التي اخترتها لموقع ASP.NET:
- ASP.NET (VB) - Page 2 <%@ Page Language="vb" %><html><head><title>Session Page 2</title></head><body><p>ASP.NET VB session variable and web form example - page 2</p><p>first name: <%= session("sessFirstName") %></p></body></html>
- ASP.NET (C#) - Page 2 <%@ Page Language="C#" %><html><head><title>Session Page 2</title></head><body><p>ASP.NET C# session variable and web form example - page 2</p><p>first name: <%=Session["sessFirstName"]%></p></body></html>
-
احفظ كلا الصفحتين وانشرهما واختبرهما. إذا لم تحصل على النتائج المتوقعة، فتحقق من الكتابة بالأحرف الكبيرة والهجاء لعناصر تحكم الخادم، ومتغير جلسة العمل ومتغير الطلب.
معلومات إضافية
لمزيد من التفاصيل حول متغيرات جلسة العمل، راجع المقالات التالية: