الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طلب : تشفير QueryString !

بدأه Major_Hafez في 31 يناير 2010 · 10 رد · 2,287 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

أريد من الإخوة شرح كيفية تشفير الـ QueryString لأهمية هذا الموضوع !!

ولا غنى للمبرمج عنه - على ما أظن

بحثت عن النت كثيرا فلم اقف على شيىء افهمه للأسف الشديد

فأرجو من الإخوة مساعدتنا فى هذا الأمر ان شاء الله

أرجو الإهتمام بارك الله فيكم

صَلِّى عَلَى النِّبِى

إنتا لسة ماصلتش على النبى ...!

#2

السلام عليكم ورحمة الله

استخدمت منذ فترة طريقة موجودة في الكتاب

ASP.NET 3.5 Enterprise Application Development with Visual Studio® 2008

فيمكنك البحث عن هذا الكتاب للشرح عن هذه الطريقة .

وباختصار لاستخدام هذه الطريقة حمل الملف المرفق وضعه في مشروعك كما هو وبعد ذلك

للتشفير نستخدم الامر

Response.Redirect("default.aspx" + StringHelpers.EncryptQueryString("id=1"));

طبعا بدل id=1 نضع ما نريد من المتغيرات

لفك التشفير

NameValueCollection qString =
       StringHelpers.DecryptQueryString(Request.QueryString.ToString());
        if (qString == null)
        {
            return ;
        }
        else
        {
            //Check if the id was passed in.
            string id = qString["id"];

        }

وانتهى الامر

في الملف المرفق من الممكن ان تغير قيم Key و IV

حيث يعتمد التشفير عليهما

StringHelpers.rar

2
#3

بارك الله فيك أخى الحبيب .. تمت التجربة الحمد لله

لكن هناك مشكلة صغيرة !!

تم تشفير الكيورىسترينج بنجاح داخل الداتاليست !!

والمشكلة الآن فى فك تشفيره !!

حيث أنى اريد ان احول الكيورى سترينج الى int ليستخدم كـ ID لعرض بيانات فى داتاليست اخرى فى صفحة جديدة !!

NameValueCollection qString = StringHelpers.DecryptQueryString(Request.QueryString[0]);

        int NewsID = int.Parse(qString);

وهناك مشكلة فى هذا الكود !!

كيف افك تشفير الكيورى سترينج والحصول عليه من نوع int

ارجو الاهتمام بارك الله فيكم

تم تعديل هذه المشاركة بواسطة Major_Hafez في 3 فبراير 2010 في 08:15

صَلِّى عَلَى النِّبِى

إنتا لسة ماصلتش على النبى ...!

#4

تم حل المشكلة يا شباب بارك الله فيكم

الأول .. حولت الكيورى سترينج الى نوع string كما هو فى المثال

ثم حولت هذا الـ string الى نوع int

وكانت المشكلة هو أنى لا استطيع تحويل الكيورى من النوع NameValueCollection الى نوع int مباشرة !!

فكان لابد من تحويله أولاً الى string ومن ثمّ تحويله الى نوع int

جزاكم الله خيرا وبارك الله فيكم

 NameValueCollection qString = StringHelpers.DecryptQueryString(Request.QueryString.ToString());

        string id = qString[0].ToString();

        int NewsID = int.Parse(id);

صَلِّى عَلَى النِّبِى

إنتا لسة ماصلتش على النبى ...!

#5

عفزاً . لقد ظهر لدي خطاً عند محاولة فك التشفير

هذا هو الخطأ

 Index was outside the bounds of the array.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.IndexOutOfRangeException: Index was outside the bounds of the array.

Source Error:

وهذا هو الكود

        NameValueCollection qString = StringHelpers.DecryptQueryString(Request.QueryString.ToString());
        if (qString[0] == null)
        {
            return;
        }
        else
        {
            //Check if the id was passed in.
            string id = qString["id"];
            Response.Write("OK");
        }

كيف يمكن حل المشكلة او الخطأ

#6

السلام عليكم

الاخ ماكسيموس على الاغلب انك لم تمرر شيء في QueryString او قمت بتغيير شيء به يدويا لذا الكود يجب ان يكون كما يلي :

  if (qString == null)
        {
            return ;
        }
        else if (qString[0] == null)
        {
            return;
        }
        else
        {
            //Check if the id was passed in.
            string id = qString["id"];
            Response.Write("OK");
        }
#7

شكراً اخي طارق

تم حل المشكلة . المشكلة ظهرت بسبب القيمة المرسلة . فلقد تم بتغيرها الى رقم فقط

ولهذا ظهرت

حزاك الله خير

#8

سؤال اخر . كيف لي ان اشفر قيمة متغير مربوط في URL

بمعنى مثلا لدي الرابط التالي

<a href=" http://llocalhost/Defult.aspx?id=5">للمشاهدة انقر هنا</a>

فعند المرور على كلمة للمشاهدة انقر هنا سوف يظهر لي الرابط في الاسفل . لكن كيف لي ان اشفر قيمة الموجودة في الرابط

#9
ماكسيموس كتب:

سؤال اخر . كيف لي ان اشفر قيمة متغير مربوط في URL

بمعنى مثلا لدي الرابط التالي

<a href=" http://llocalhost/Defult.aspx?id=5">للمشاهدة انقر هنا</a>

فعند المرور على كلمة للمشاهدة انقر هنا سوف يظهر لي الرابط في الاسفل . لكن كيف لي ان اشفر قيمة الموجودة في الرابط

التشفير باستخدام a غير ممكن لكن يمكنك استخدام Linkbutton ويكون الرابط في الكود مخفي ولن يظهر للمستخدم الى كود جافا سكريبت

#10
TareqVB كتب:

التشفير باستخدام a غير ممكن لكن يمكنك استخدام Linkbutton ويكون الرابط في الكود مخفي ولن يظهر للمستخدم الى كود جافا سكريبت

ما قصدته عندما ذكرت التشفير باستخدام a هو معرفة كيفية الطريقة او كيفية تشفير قيمة link موجود داخل GridView اساسا وليس a لوحدة كما في الاسفل . فانا لدي GridView تحمل

فيها الاسماء (BoundField) بالاضافة الى تعديل (HyperLinkField) يحمل خصائص منها اسم الصفحة وقيمة لمتغير مشفراً . ولهذا فعندما مثلاً اريد النقر على HyperLinkField (تعديل)

يقوم بارسال الشيفرة جاهزة الى الصفجة التالية وفكها هنالك ...

    <asp:GridView ID="GridView1" runat="server" Width="98%"  AutoGenerateColumns="False"    >
        <Columns>
            <asp:BoundField DataField="AR_Name" HeaderText="الاسم" />
            <asp:HyperLinkField DataNavigateUrlFields="ID" 
                DataNavigateUrlFormatString="Update.aspx?ID={0}" Text="تعديل" />
        </Columns>
    </asp:GridView>

فهل بالامكان فعل هذا الامر او عمل هذه الطريقة .

#11

هل جملة StringHelpers.EncryptQueryString تحتاج الى استدعاء فضاء اسماء معين لانه يعطيني خطأ عليها

مواضيع مشابهة