PDA

View Full Version : سوال: انتقال اطلاعات از یک صفحه به صفحه دیگر و نمایش اطلاعات تکمیلی تر



mohsen.nsb44
چهارشنبه 09 فروردین 1391, 12:18 عصر
سلام
فرض کنید که یک فروشگاه معمولی داریم
من یک دیتالیست گرفتم اطلاعات جزئی از محصولم رو نمایش میدم
اینم بگم که دیتالیست رو بر اساس سلیقه خودم در قسمت تمپلیتش طراحی کردم و یک لینک باتن هم در قسمت تمپلیت گزاشتم به عنوان اضافه به سبد خرید
حالا سوال من اینجاست که بهترین روش برای نمایش اطلاعات تکمیلی تر در یک صفحه دیگر کدام است
اگه مثالی هم بزنید ممنون میشم

hamid_shrk
چهارشنبه 09 فروردین 1391, 12:39 عصر
به نظر من بهترین روش اینه که شما از تگ a استفاده کنید برای جزئیات ، تو href هم کوئری استرینگتون رو بذارید :


<a href="weblog/<%# Eval("Title") %>" style="margin-left: 5px;"
class="sign-btn2 f-l">ادامه مطلب</a>

fakhravari
چهارشنبه 09 فروردین 1391, 12:47 عصر
بسته به خودت داره اگر همراه عکس بهتر بره به صفحه دیگر .
این اسلاید شو ببین توی فراموشی پسورد نمونه ببینید. http://fakhravary.somee.com
http://barnamenevis.org/showthread.php?317497-%D8%A7%D8%B3%D9%84%D8%A7%DB%8C%D8%AF-%D8%B4%D9%88-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF/page2&highlight=%D8%A7%D8%B3%D9%84%D8%A7%DB%8C%D8%AF+%D8 %B4%D9%88+%D8%A8%D8%B1%D8%A7%DB%8C+%D8%AF%D8%A7%D9 %86%D9%84%D9%88%D8%AF

mohsen.nsb44
چهارشنبه 09 فروردین 1391, 13:07 عصر
بزارید کمی بیشتر توضیح بدم من قبلا این کار رو انجام میدادم
در صفحه ای که کلیک میکردم برای اضافه به سبد خرید کد زیر رو مینوشتم
Eval("id","~/product.aspx?/id={0}")
بعد در صفحه product یک گریدویو میزاشتم و دستور زیر رو واسش در نظر میگرفتم
select * from pruduct where id=request.params[0].tostring();
ایا به نظر شما این روش مناسب هستش؟
از نظر امنیتی ایمن هستش؟
این کد چه مزایا و معایبی داره؟

hamid_shrk
چهارشنبه 09 فروردین 1391, 13:13 عصر
بنظر من زیاد جالب نیست با کوئری استرینگ اینکار رو بکنی ، من معمولا با کوکی اینکار رو انجام میدم.

mohsen.nsb44
چهارشنبه 09 فروردین 1391, 13:15 عصر
بنظر من زیاد جالب نیست با کوئری استرینگ اینکار رو بکنی ، من معمولا با کوکی اینکار رو انجام میدم.
میشه بگین چه ضعف های امنیتی داره این کد؟ چطوری میشه مورد حمله قرار دادش؟

hamid_shrk
چهارشنبه 09 فروردین 1391, 13:20 عصر
راستش رو بخوای من خودم نمیدونم دقیقا چه ضعف هایی داره ولی شنیدم که با sql injection میشه آسیب رسوند.

mohsen.nsb44
چهارشنبه 09 فروردین 1391, 13:21 عصر
زمانی که از این کد بخوایم از طریق storedprocedure استفاده کنیم امنیتش بالا میره خب حالا در گریدویو قسمت QueryStringFeild چی باید نوشت؟
مسلما نمیشه request.params[0].tostring() رو نوشت
من در استورپروسیجر کد زیر رو نوشتم
select * from product where userId=@userId
حالا نمیدونم باید در قسمت QueryStringFeild در گریدویو چی بنویسم که مقدار ایدی رو بگیره

hamid_shrk
چهارشنبه 09 فروردین 1391, 13:27 عصر
یک sqldatasource بذارید توصفحه و اونو به استور پروسیجرتون بایند کنید ، بعد خودش بصورت ویزاد ورودی ها رو نشونتون میده ، اونجا مقدار default value رو کوئری استرینگ انتخاب کنید و پایینش هم اسم کوئری استرنگتون رو بذارید.
حالا گرید ویو رو به sqldatasource بایند کنید.

mohsen.nsb44
چهارشنبه 09 فروردین 1391, 13:35 عصر
یک sqldatasource بذارید توصفحه و اونو به استور پروسیجرتون بایند کنید ، بعد خودش بصورت ویزاد ورودی ها رو نشونتون میده ، اونجا مقدار default value رو کوئری استرینگ انتخاب کنید و پایینش هم اسم کوئری استرنگتون رو بذارید.
حالا گرید ویو رو به sqldatasource بایند کنید.
دوست عزیز متاسفانه منظورتونو خوب متوجه نشدم
نگاه کنید وقتی که sqldatasource رو به استورپروسیجر بایند میکنیم سه گزینه داریم
یکی اینکه در قسمت Parameters source گزینه querystring زا انتخاب میکنیم
حال دو گزینه خالی هستش که باید چیزی نوشته شود
یکی queryStringField و دیگری Default Value هستش حالا من در این دو تا گزینه ها چی باید بنویسم که ایدی رو بگیره و اطلاعات رو نمایش بده؟؟؟؟؟؟

hamid_shrk
چهارشنبه 09 فروردین 1391, 13:40 عصر
یکی queryStringField و دیگری Default Value هستش حالا من در این دو تا گزینه ها چی باید بنویسم که ایدی رو بگیره و اطلاعات رو نمایش بده؟؟؟؟؟؟

queryStringField رو باید بذارید id یا همون اسم کوئری استرینگتون ./Default Value هم مقدار پیش فرض هست که اگه کوئری استرینگ وجود نداشت اینو میذاره بجاش که شما میتونی خالی بذاریش ،همین

mohsen.nsb44
چهارشنبه 09 فروردین 1391, 13:47 عصر
queryStringField رو باید بذارید id یا همون اسم کوئری استرینگتون ./Default Value هم مقدار پیش فرض هست که اگه کوئری استرینگ وجود نداشت اینو میذاره بجاش که شما میتونی خالی بذاریش ،همین
من مقدار queryStringField رو برابر id گزاشتم اما جواب نداد مشکل منم همینه که چرا پاسخ نداد

mohsen.nsb44
چهارشنبه 09 فروردین 1391, 13:55 عصر
ایا مشکل از کدی که داخل استورپروسیجر نوشتم نیست؟
select * from product where id=@id

fakhravari
چهارشنبه 09 فروردین 1391, 13:56 عصر
ببنید متغیر تعریف شده همنام است
queryString

hamid_shrk
چهارشنبه 09 فروردین 1391, 13:59 عصر
ایا مشکل از کدی که داخل استورپروسیجر نوشتم نیست؟
select * from product where id=@id
میشه کل کوئریتون رو هم بذارید؟

mohsen.nsb44
چهارشنبه 09 فروردین 1391, 14:04 عصر
میشه کل کوئریتون رو هم بذارید؟


این کد رو در storedprocedure نوشتم


ALTER PROCEDURE dbo.S_produc
(
@id int
)
AS
select * from product where id=@id
RETURN


حال یک کدی نوشتم در صفحه معرفی محصول مثل زیر
select id,onvan from prudect
حال در صفحه معرفی محصول در قسمت تمپلیت یک لینک باتن گزاشتم در قسمت postbackUrl کد زیر رو نوشتم

Eval("id","product.aspx?/id={0}")
در صفحه product هم یک sqldatasource گزاشتم . اونو به استورپروسیجرم بایند کردم و در قسمت queryStringFeild نوشتم id
همین

hamid_shrk
چهارشنبه 09 فروردین 1391, 14:12 عصر
تو پیج لودتون چک کنید که اصلا این کوئری استرنگ id رو میشناسه یا نه؟

mohsen.nsb44
چهارشنبه 09 فروردین 1391, 14:19 عصر
تو پیج لودتون چک کنید که اصلا این کوئری استرنگ id رو میشناسه یا نه؟
با چه دستوری چک کنم؟
زمانی که من روی اضافه به سبد خرید کلیک میکنم در صفحه محصولا در قسمت url ایدی من نمایش داده میشه
http://localhost:51215/........../.........../product.aspx?/id=2

hamid_shrk
چهارشنبه 09 فروردین 1391, 14:31 عصر
اینو بنویسید :

string test = Request.QueryString["id"].ToString();

mohsen.nsb44
چهارشنبه 09 فروردین 1391, 14:37 عصر
اینو بنویسید :

string test = Request.QueryString["id"].ToString();

دوست عزیز کد شما کار نکرد و ارور زیر رو داد
Object reference not set to an instance of an object.

اما کدی که خودم به صورت زیر نوشتم کار کرد

SqlDataSource2.SelectCommand = "select * from product where id='" + Request.Params[0].ToString() + "'";

mohsen.nsb44
چهارشنبه 09 فروردین 1391, 14:38 عصر
دوست عزیز کد شما کار نکرد و ارور زیر رو داد
Object reference not set to an instance of an object.

اما کدی که خودم به صورت زیر نوشتم کار کرد

SqlDataSource2.SelectCommand = "select * from product where id='" + Request.Params[0].ToString() + "'";

با این کد دقیقا درس کار میکنه؟
دلیل اینکه با storedprocedure کار نمیکنه چی میتونه باشه؟

hamid_shrk
چهارشنبه 09 فروردین 1391, 14:43 عصر
دلیلش اینه که همونطور که دیدید کوئری استرینگتون رو به اسم نمیشناسه و با ایندکس مشناسه .
شاید علت اینه که شما تو کوئری استرینگ قبل از id یک "/" گذاشتید.!!

mohsen.nsb44
چهارشنبه 09 فروردین 1391, 15:02 عصر
دلیلش اینه که همونطور که دیدید کوئری استرینگتون رو به اسم نمیشناسه و با ایندکس مشناسه .
شاید علت اینه که شما تو کوئری استرینگ قبل از id یک "/" گذاشتید.!!
خب اگه / رو نزارم پس با چی جداش کنم به ادرس صفحه من توجه کنید
http://localhost:51215/........../.....uct.aspx?/id=2 (http://localhost:51215/........../.........../product.aspx?/id=2)
اگه / نزارم ایدی رو چطور از اسم صفحه جدا کنم؟
پیشنهاد شما چیه؟

hamid_shrk
چهارشنبه 09 فروردین 1391, 15:28 عصر
نیازی به جدا کردن از اسم صفحه نیست !

mohsen.nsb44
چهارشنبه 09 فروردین 1391, 15:33 عصر
نیازی به جدا کردن از اسم صفحه نیست !
ممنون دوست عزیز وقتی / را برداشتم مشکل حل شد
چرا / مشکل ایجاد کرده بود؟ در صورتی که وقتی با ایندکس ارسال میکردم ایدی رو درست کار میکرد؟

hamid_shrk
چهارشنبه 09 فروردین 1391, 15:36 عصر
واسه اینکه فکر کنم نام کوئری استرینگ رو "/id" در نظر میگرفت بجای "id"

sahel_abcd2
دوشنبه 15 تیر 1394, 20:56 عصر
منم یک فروشگاه آنلاین طراحی می کنم می خوام اطلاعات مربوط به محصول را از یک صفحه به صفحه دیگر بفرستم میشه بگید چطوری میشه این کار را انجام داد؟

hamid_0341
سه شنبه 16 تیر 1394, 07:01 صبح
منم یک فروشگاه آنلاین طراحی می کنم می خوام اطلاعات مربوط به محصول را از یک صفحه به صفحه دیگر بفرستم میشه بگید چطوری میشه این کار را انجام داد؟

باید id محصولت رو بفرستی به یک صفحه دیگه و توی اون صفحه اطلاعات رو بخونی و نمایش بدی . اگر ار گرید یا لیست استفاده میکنی از این استفاده کن ....


<ItemTemplate>
<asp:HyperLink ID="lnkSelect" runat='server' NavigateUrl='<%# String.Format("~/detailspagename.aspx?ID={0}", Eval("PRODUCT_ID")) %>'>Select</asp:HyperLink>
</ItemTemplate>

و بعد توی صفحه نمایش id رو بگیر


string id = Request.QueryString["ID"];

sahel_abcd2
سه شنبه 23 تیر 1394, 20:48 عصر
مرسی از پاسخ تون. کد این رو توی php دارید؟