PDA

View Full Version : Post کردن اطلاعات بین صفحات در ASP.NET 2.0



morteza57
شنبه 05 آبان 1386, 09:49 صبح
سلام،
من قصد دارم بین صفحات یک وب سایت اطلاعات را به طریق Post ارسال کنم.
در ASP.NET 1.1 این کار رو با جاوااسکریپت انجام دادم ولی این عمل رو می خوام با ASP.NET 2.0 انجام بدم.
این کار رو می شه از طریق Server.Transfer و PostBackUrl انجام داد ولی مشکل اینجاست که برای استفاده از این روش ها باید اطلاعات در صفحه منبع به صورت Visible درج شده باشد. مثلا یک TextBox داشته باشیم که نام اون TextBox1 باشه و مقادیر داخلش رو Post کنیم.
ولی من می خوام یک مقدار محرمانه که در قسمت CodeBehind دارم رو Post کنم.
برای این کار کسی ایده ای نداره؟
متشکرم

abolfazl585
شنبه 05 آبان 1386, 10:37 صبح
میتونی از فیلدهای Hidden استفاده کنی:

<input type=hidden name="hideField" value="123" />
حالا تو صفحه ای که هستی هر طور که مقادیر تکست باکس رو میخونی ، میتونی مقادیر این فیلد رو هم بخونی.

ولی یادتون باشه که این پست ربتی به asp.net نداره. لطفا سوالتون رو در قسمت مربوطه بپرسین

morteza57
شنبه 05 آبان 1386, 11:03 صبح
میتونی از فیلدهای Hidden استفاده کنی:

<input type=hidden name="hideField" value="123" />
حالا تو صفحه ای که هستی هر طور که مقادیر تکست باکس رو میخونی ، میتونی مقادیر این فیلد رو هم بخونی.

ولی یادتون باشه که این پست ربتی به asp.net نداره. لطفا سوالتون رو در قسمت مربوطه بپرسین
دوست عزیز من نمی تونم از hideField استفاده کنم چون همونطور که عرض کردم، مقادیری که قراره ارسال بشه محرمانه هستند.
من می خوام این کار رو با امکانات ASP.NET 2.0 انجام بدم اونوقت باید این سوال رو تو کدوم بخش می پرسیدم؟!!!

Behrouz_Rad
شنبه 05 آبان 1386, 11:07 صبح
اون مقدار در نهایت باید پست بشه و راهی جز Visible شدنش (با تعریفی که شما از Visible شدن داری) وجود نداره...

Saeiddev
شنبه 05 آبان 1386, 12:00 عصر
از Encription و Decription استفاده کن.

morteza57
شنبه 05 آبان 1386, 12:17 عصر
از Encription و Decription استفاده کن.

این اطلاعات قراره برای یک صفحه در یک وب سایت دیگه ارسال بشه و در نتیجه اختیار صفحه دوم دست من نیست که اطلاعات رو Decrypt کنم

morteza57
شنبه 05 آبان 1386, 13:10 عصر
اون مقدار در نهایت باید پست بشه و راهی جز Visible شدنش (با تعریفی که شما از Visible شدن داری) وجود نداره...
پس پیشنهاد شما برای ارسال یک مقدار محرمانه چیه؟
از همون جاوااسکریپت استفاده کنم؟

anubis_ir
شنبه 05 آبان 1386, 13:16 عصر
اگر یک سایت است:
از session استفاده کن. سشن برای هر کاربر به صورت جداگانه ایجاد می‌شود و در اختیار سایر کاربران جاری یک سایت نیست.

اگر 2 سایت است از query string استفاده کن. اطلاعات کوئری استرینگ را می‌شود رمزنگاری کرد (در مبدایی که قرار است آنرا ایجاد کند) و در مقصد به محض دریافت قابل رمزگشایی است. البته طول آن بدیهی است که محدودیت دارد.

morteza57
شنبه 05 آبان 1386, 13:20 عصر
این مقدار قراره برای وب سرویس یک بانک ارسال بشه و قانون اونها اینه که حتما اطلاعات باید از طریق Post ارسال بشه.

merlin_vista
شنبه 05 آبان 1386, 13:27 عصر
اگر 2 سایت است از query string استفاده کن. اطلاعات کوئری استرینگ را می‌شود رمزنگاری کرد (در مبدایی که قرار است آنرا ایجاد کند) و در مقصد به محض دریافت قابل رمزگشایی است. البته طول آن بدیهی است که محدودیت دارد.

میشه بگید چگونه این کار را بکونم !! :قلب:

anubis_ir
شنبه 05 آبان 1386, 13:42 عصر
از طریق کوئری استرینگ برای یک سایت دیگر (مثلا www.site.com) و دریافت آن در صفحه page.aspx

ابتدا در سایت مبدا
اینجا MyData را در کد صفحه رمزنگاری کنید. سپس (مثلا در کد یک دکمه یا امثال آن) :

Response.Redirect("www.site.com/page.aspx?data="+MyData);

در سایت مقصد
در page_load صفحه :


if(Request["data"]!=null)
{
object data = Request["data"];
}

در سایت مقصد فقط به مباحث تزریق اس کیوال و امثال آن نیز باید دقت کنید.

Behrouz_Rad
شنبه 05 آبان 1386, 13:44 عصر
این مقدار قراره برای وب سرویس یک بانک ارسال بشه و قانون اونها اینه که حتما اطلاعات باید از طریق Post ارسال بشه.
اون بانک حتما نحوه ی کار با وب سرویسش رو مشخص کرده تا برنامه نویس به دنبال راه های ماورا الطبیعه برای Post مقادیر نباشه.

موفق باشید.

morteza57
یک شنبه 06 آبان 1386, 00:17 صبح
اون بانک حتما نحوه ی کار با وب سرویسش رو مشخص کرده تا برنامه نویس به دنبال راه های ماورا الطبیعه برای Post مقادیر نباشه.

موفق باشید.

عرضم به خدمتتون که بانک فقط آدرس وب سرویسش رو داده و گفته که اطلاعات رو به این صفحه Post کنید و توضیح دیگه ای نداده بود.
جالبش اینجاست که یک Sample هم با asp.net داشتند که فقط مربوط به صفحه دریافت جواب بانکه (بعد از اینکه مشتری روی سایت بانک تراکنش رو انجام می ده). و از همه جالبتر اینکه این Sample دارای چند تا Syntax Error بود!! و به هیچ دردی نمی خورد.
و اما من روش جدیدتری پیدا نکردم و همون کاری که چند سال پیش انجام داده بودم دوباره انجام دادم یعنی شبیه سازی (واژه بهتری پیدا نکردم) یک فرم جهت Post مقادیر.
کافیه مثلا در رویداد کلیک یک دکمه که قصد داریم فرم را Post کند این خط کد رو بنویسیم


Response.Write("<html><head><script language=javascript></script></head><body><form name='frm' action='test2.aspx' method='post'><input runat='server' type='hidden' name='test' ID='test' value="+"'" + SecretValue+"'"+"><script language='javascript'>frm.submit();</script></form></body></html>");

این قطعه کد مقدار SecretValue رو به صفحه test2.aspx با روش Post ارسال می کنه.

اگه راه بهتری پیدا کردم همینجا می ذارم تا همه دوستان استفاده کنند
از تمام دوستانی که توی این تاپیک نظر دادند تشکر می کنم.
موفق باشید