PDA

View Full Version : سوال: کد نویسی سمت کلاینت و سرور



malloc
شنبه 11 آذر 1391, 21:09 عصر
سلام.
شاید تیتر به سوال مرتبط نباشه اما خوب چیزه دیگه ای به ذهنم نرسید.

سوال اینه که من یه دکمه دارم که براش یه مجموعه کد نویسی اسکریپتی دارم (کلاینتی) بعد میخوام وقتی کد نویسی سمت کلاینت مشکل داشت (خطای کاربری) به کد های سمت سرور اعتنا نکنه

یعنی تو صفحه لاگین اول(onclientclick) چک کنه که اگه هر دوتا تکس باکس خالی بود کاری نکنه اما اگه خالی نبود به کدهای سمت سرور بره و اعتبار کاربر و چک کنه

اگه سوال نا مفهوم بود بگید بیشتر توضیح بدم

p.parsaee
شنبه 11 آذر 1391, 21:43 عصر
برای دکمه یک رویداد به اسم OnClientClick هست. توی این رویداد یک تابع جاوا اسکریپتی رو فراخوانی کن. تابع رو هم خودت بنویس که یک مقدار true یا false بر می گردونه . اگر مقدار برگشت داده شده true بود کدهای سمت سرور اجرا میشن و اگر مقدار برگشتی از این تابع false باشه کدهای سمت سرور اجرا نمیشن. مثلا یه همچین چیزی بنویس:


<asp:Button runat='server' ID="btnLogin" Text="ورود" onclick="btnLogin_Click"
OnClientClick="return ValidateLogin();" />

malloc
شنبه 11 آذر 1391, 21:50 عصر
برای دکمه یک رویداد به اسم OnClientClick هست. توی این رویداد یک تابع جاوا اسکریپتی رو فراخوانی کن. تابع رو هم خودت بنویس که یک مقدار true یا false بر می گردونه . اگر مقدار برگشت داده شده true بود کدهای سمت سرور اجرا میشن و اگر مقدار برگشتی از این تابع false باشه کدهای سمت سرور اجرا نمیشن. مثلا یه همچین چیزی بنویس:


<asp:Button runat='server' ID="btnLogin" Text="ورود" onclick="btnLogin_Click"
OnClientClick="return ValidateLogin();" />


آها یعنی اگه اون تابع false برگردونه خود برنامه میفهمه و کد سمت سرور و اجرا نمیکنه . اوکی دمت گرم

malloc
شنبه 11 آذر 1391, 22:07 عصر
خوب یه سوال دیگه :لبخندساده:

من میخوام تو کد نویسی کلاینت بگم اگه تکس باکسهای لاگین (txtusername , txtpassword) خالی بود یجوری ظاهر textbox ها رو عوض کنه (مثلا بهشون Border قرمز) که کاربر بفهمه خطا کرده .
میتونم همچین کاری و در کد نویسی سمت کلاینت بنویسم یا نه ؟
اگه میشه چطوری میشه؟؟
اگه نمیشه چطور بنویسم؟؟؟(آخه نمیخوام کد نویسی سمت سرور تا وقتی خالی هستن اجرا بشه)

Mohamad1362
شنبه 11 آذر 1391, 22:15 عصر
چرا از کنترلهای اعتبار سنجی خود ASP.NET استفاده نمی کنی ؟

malloc
شنبه 11 آذر 1391, 22:21 عصر
چرا از کنترلهای اعتبار سنجی خود ASP.NET استفاده نمی کنی ؟

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

Mohamad1362
شنبه 11 آذر 1391, 22:24 عصر
تو این شرایط بدردم نمیخوره . آخه لاگین من تو صفحه مستر پیج هست و اگه از اعتبار سنجی استفاده کنم اجازه کلیک روی هیچ دیکمه ی و بهم نمیده. چرا نده ، کنترلها رو گروه بندی کن تا فقط به دکمه لوگین جواب بدن

malloc
شنبه 11 آذر 1391, 22:24 عصر
یعنی چی گروه بندی . یکم توضیح میدی؟؟؟

ali9698
شنبه 11 آذر 1391, 22:26 عصر
<script>
function check_textbox() {
if (document.getElementById("<%=txtusername.ClientID %>").value == '')
document.getElementById("<%=txtusername.ClientID %>").className = 'red_borders';

if (document.getElementById("<%=txtpassword.ClientID %>").value == '')
document.getElementById("<%=txtpassword.ClientID %>").className = 'red_borders';
}
</script>
<style type="text/css">
.red_borders
{
border: 1px ridge #FF0000;
}
</style>

توی رویداد onclientclick تابعی که نوشتم رو فراخوانی کنید

malloc
شنبه 11 آذر 1391, 22:30 عصر
Like داری دادش:تشویق:

Mohamad1362
شنبه 11 آذر 1391, 22:37 عصر
یه صفحه جدید درست کن بعد کدهای زیر رو توش کپی کن خودت متوجه میشی چجوریه
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="لطفا کادر متن را پر کنید" ControlToValidate="TextBox1" ValidationGroup="group1"></asp:RequiredFieldValidator>
<asp:Button ID="Button1" runat="server" Text="Button" ValidationGroup="group1" />
<asp:Button ID="Button2" runat="server" Text="Button" />
</form>
</body>
</html>
به خصوصبت ValidationGroup کنترلها توجه کن

malloc
شنبه 11 آذر 1391, 22:46 عصر
یه صفحه جدید درست کن بعد کدهای زیر رو توش کپی کن خودت متوجه میشی چجوریه
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="لطفا کادر متن را پر کنید" ControlToValidate="TextBox1" ValidationGroup="group1"></asp:RequiredFieldValidator>
<asp:Button ID="Button1" runat="server" Text="Button" ValidationGroup="group1" />
<asp:Button ID="Button2" runat="server" Text="Button" />
</form>
</body>
</html>
به خصوصبت ValidationGroup کنترلها توجه کن

وجدادنا اگه بهت Like ندم نامردی کردم . دمت گرم خیلی جالب بود .

فقط یه سوال این ولیدیشن ها کلا سمت کلاینت هستن دیگه؟؟؟ منطورم اینه بهینه هستن؟

Mohamad1362
شنبه 11 آذر 1391, 22:57 عصر
آره سمت کلاینت انجام میشه ، ولی اگه احیانا کاربر جاوا اسکریپت رو تو مرورگرش غیرفعال کرده باشه خود ASP.NET تشخیص میده و عمل اعتبارسنجی رو تو سمت سرور برات انجام میده ، کاملا امنه ، با خیال راحت استفاده کن

malloc
شنبه 11 آذر 1391, 23:04 عصر
آره سمت کلاینت انجام میشه ، ولی اگه احیانا کاربر جاوا اسکریپت رو تو مرورگرش غیرفعال کرده باشه خود ASP.NET تشخیص میده و عمل اعتبارسنجی رو تو سمت سرور برات انجام میده ، کاملا امنه ، با خیال راحت استفاده کن

خوبه ها اما نکته اینجاست که من نمیخوام اگه خالی بود چیزی نمایش بده فقط میخوام بوردر تکس باکس رنگش عوض بشه

و اینکه اگه من از ولیدیشن ها استفاده نکنم و خودم یه کد ساده مثل چیزی که تو پست شماره 9 گفته شد بزنم و کاربر هم جاوا اسکریپت رو تو مرورگرش غیرفعال کرده باشه چه اتفاقی میافته؟؟؟

Mohamad1362
شنبه 11 آذر 1391, 23:13 عصر
خوب از کدی که دوستمون گذاشتن استفاده کن ، ولی کلا اینجوری برات بگم که اعتبار سنجی سمت کلاینت زیاد امن نیست ، بهتره بعد از عبور از کلاینت یه اعتبار سنجی رو هم خودت تو سرور انجام بدی

و اینکه اگه من از ولیدیشن ها استفاده نکنم و خودم یه کد ساده مثل چیزی که تو پست شماره 9 گفته شد بزنم و کاربر هم جاوا اسکریپت رو تو مرورگرش غیرفعال کرده باشه چه اتفاقی میافته؟؟؟ اگه کد رو خودت دستی بنویسی و کاربر جاوا اسکریپت رو غیر فعال کنه ، دیگه اعتبار سنجی انجام نمی شه

ali9698
یک شنبه 12 آذر 1391, 00:44 صبح
دوست عزیز اعتبار سنجی سمت کلاینت اصلا قابل اطمینان نیست و خیلی راحت میشه پیچوندش. اما همیشه وجود دارن چون سرعت رو بالا میبرن. اما اگه کاربری قصد ایجاد اخلال در سایت شما رو داشته باشه حتما این موضوع رو هم میدونه. پس بهتره به این موضوع که ممکنه جاوااسکریپت مرورگر غیرفعال باشه توجهی نکنید! و هم از اعتبارسنجی سمت کلاینت و هم سمت سرور استفاده کنید.