PDA

View Full Version : تایمر برای نشان دادن زمان باقی مانده از ابطال cookie



rainynight
شنبه 23 مهر 1384, 23:32 عصر
سلام من صفحه دارم که به دلایلی باید در زمان 15 دقیقه باطل شود . می خواهم یک تایمر در صفحه باشد که به طور دائم زمان را بصورت شمارش معکوس تا ابطال صفحه به کاربر نمایش دهد و در پایان به کاربر بگوید که زمان شما به پایان رسیده... آیا در صفحات asp.net این کار ممکن است ( با vb)
باطل کردن به کمک cookie امکان پذیر است ولی تایمرو چی کار کنم؟
البته از روش هایی مثل تگ زیر می توان استفاده کرد ولی امنیت برای من خیلی مهمه می خوام کامل sign out شه
<META HTTP-EQUIV="Refresh" CONTENT="15;URL=http://www.yahoo.com">

Behrouz_Rad
یک شنبه 24 مهر 1384, 08:20 صبح
با جاوا اسکریپت به راحتی امکان پذیره!
یک مثال در همین رابطه:


<HEAD>

<SCRIPT LANGUAGE="JavaScript">

timedouturl = "myPageAfterTimeOut.html";

function Minutes(data) {
for (var i = 0; i < data.length; i++)
if (data.substring(i, i + 1) == ":")
break;
return (data.substring(0, i));
}
function Seconds(data) {
for (var i = 0; i < data.length; i++)
if (data.substring(i, i + 1) == ":")
break;
return (data.substring(i + 1, data.length));
}
function Display(min, sec) {
var disp;
if (min <= 9) disp = " 0";
else disp = " ";
disp += min + ":";
if (sec <= 9) disp += "0" + sec;
else disp += sec;
return (disp);
}
function Down() {
sec--;
if (sec == -1) { sec = 59; min--; }
document.timerform.clock.value = Display(min, sec);
window.status = "Session will time out in: " + Display(min, sec);
if (min == 0 && sec == 0) {
alert("Your session has timed out.");
window.location.href = timedouturl;
}
else down = setTimeout("Down()", 1000);
}
function timeIt() {
min = 1 * Minutes(document.timerform.clock.value);
sec = 0 + Seconds(document.timerform.clock.value);
Down();
}
// End -->
</script>
</HEAD>

<BODY OnLoad="timeIt()">

<center>
<form name="timerform">
<input type="text" name="clock" size="7" value="15:00"><p>
</form>
</center>
</BODY>

rainynight
یک شنبه 24 مهر 1384, 14:03 عصر
ممنون اگر بخواهیم مقدار value که در اینجا 15 دقیقه است از دیتابیس وارد بشه چی کار میشه کرد؟ این کنترل همه client side هستند

Identifier
یک شنبه 24 مهر 1384, 14:12 عصر
'<%#myfunction()%>'

rainynight
یک شنبه 24 مهر 1384, 23:28 عصر
(: بله فکر کنم دیگه در این حد بدونم ولی منظورم این بود که چطور میشه از کنترل های serverside استفاده کرد

nokhod
چهارشنبه 10 اسفند 1384, 21:07 عصر
حالا اگه بخواهیم به جای آلرت از یک تابع سرور ساید استفاده کنیم چی؟

hamed_bostan
پنج شنبه 11 اسفند 1384, 11:02 صبح
با سلام خدمت استاد خودم اقای راد . تابع پر کاربردی هست و منم ازش استفاده کردم اما خوب اگر کاربر هر چند وقت یک بار دکمه F5 رو بزنه و صفحه رو refresh کنه تایمر هم reset میشه و اون موقع دوست عزیزمون که امنیت هم واسه اش خیلی مهمه می مونه و حوضش . ضمنا من برای گرفتن 15 دقیقه از ذیتا بیس تابعی رو که گفتین استفاده کردم و نوشتم و مقدار بازگشتی اون ذو string,datetime و حتی double قرار دادم اما چیزی که توی اون فریم نشون می داد کلا غلط شد و به همراه زمان کلمه NAN رو هم قبلش می زد یا اصلا عدد ساعت رو منفی می زد. ممنون میشم راهنماییم کنید . ضمنا واسه جاوا اسکریپت نویسی و اینکه اونو خوب و کاربردی یاد بگیرم چه پیشنهادی دارید؟

جق نگهدارتون

Behrouz_Rad
پنج شنبه 11 اسفند 1384, 15:52 عصر
شما اصولا باید ببینی که قصد انجام چه کاری رو داری!
شاید راه رو داری اشتباه میری.
اون کد جاوا اسکریپت رو هم که می بینی، اگر کاربر JS رو در مرورگرش غیر فعال کنه، هیچ کاری انجام نمیده.

nokhod
پنج شنبه 11 اسفند 1384, 19:56 عصر
پس جواب سؤال من چی شد؟(یک تابع سرور ساید بجای آلرت.)

hamed_bostan
پنج شنبه 11 اسفند 1384, 20:01 عصر
با سلام
خوب حالا اگر برنامه امتحان الکترونیکی باشه که سر یه مدت زمان خاص بخواهیم مدت پاسخگویی به سوال تموم بشه چی؟
خوب اگه کاربر refresh کنه که نمیشه و وقت داره تا هر وقت بخواد . من می خوام ببینم راهی واسه حل این کار هست ؟
می دونم از طریق کد نویسی توی form_load و ایجاد flag و غیره میشه اما می خوام ببینم یه راه ساده تری هست؟

Behrouz_Rad
جمعه 12 اسفند 1384, 10:08 صبح
یک فیلد فلگ تعریف کن. (صفر: روند پاسخگویی به سوالات هنوز تمام نشده.| یک: روند پاسخگویی به سوالات تمام شده. | پیش فرض: یک)
مدت زمان شروع پاسخگویی به سوالات رو در دیتابیس ذخیره کن!
پس از هر پاسخ کاربر، زمان حال رو از زمان شروع پاسخگویی کم کن.


Dim tsTimeSpent as TimeSpan
tsTimeSpent = DateTime.Now.Subtract(StartTime)

اگر زمان به دست آمده، از زمان مورد نظرت بیشتر بود، وقت کاربر تمام شده (فلگ رو یک کن)؛ در غیر اینصورت، زمان پاسخگویی هنوز به پایان نرسیده.
با چک کردن مقدار فلگ در هر بار ارسال پاسخ، می تونی به خواستت برسی.

موفق باشید.

nokhod
جمعه 12 اسفند 1384, 10:23 صبح
جناب آقای راد، جواب دو تا سؤال رو دادید ولی جواب منو ندادید در حالی که می دونم می تونید کمکم کنید.(یک تابع سرور ساید به جای آلرت)

ممنون.

Behrouz_Rad
جمعه 12 اسفند 1384, 14:13 عصر
(یک تابع سرور ساید به جای آلرت)


Response.Write("<script>alert('hellooooooooo')</script>")

hamed_bostan
جمعه 12 اسفند 1384, 14:15 عصر
دست شما درد نکنه استاد . نه خسته

PrinceDotNet
جمعه 12 اسفند 1384, 14:27 عصر
سلام
ببخشید ها ولی منظور از فلگ چیه ؟

hamed_bostan
جمعه 12 اسفند 1384, 14:33 عصر
flag یه متعیر هست که خودمون می گیریم .می تونه boolean باشه یا از هر نوعی که بتونه نیاز شما رو پاسخ بده . یه متعیر قراردادیه واسه خود ادم .

Behrouz_Rad
جمعه 12 اسفند 1384, 14:38 عصر
wikipedia.org


In computer programming, a flag is a Boolean variable,
a bit that can be set to either 1 (Set, Raised, True) or 0 (Unset, False).
Its typical use is as a status variable, or for configuration.

nima_dir
چهارشنبه 05 مهر 1385, 15:02 عصر
سلام دوستان
نماز و روزه همه قبول
من در حال طراحی یک تست هوش آن لاین هستم. در چند قسمت مشکل داشتم از دوستان خواهش میکنم کمکم کنید.
اولین مشکل در دکمه refresh هست. اینکه من نتونستم از این راهی که اقای راد فرمودند استفاده کنم. و این دکمه refresh برای زمان آزمون شده یک معزل. چکار باید بکنم که این تایم تا به پایان نرسیدن هرگز صفر نشود. چون وقتی که صفحه refresh میشه فکر نمیکنم به سرور پست بشه که ما بتونیم از توابع سرور ساید استفاده کنیم.
مشکل دوم برای نوع پست شدنه. دو نوع پست داریم. یکی بعد از جواب دادن به سوال و زدن دکمه submit و دومی بعد از به اتمام رسیدن زمان. چطور میشه بین این دو نوع پست تفاوت قایل شد. منظورم اینه که از کجا بفهمم که هیچ جوابی داده نشده و زمان تمام شده.
یه سوال دیگه هم بود اینکه ایا میشه بوسیل جاوا اسکریپت متغیرهای سشن رو دستکاری کرد.
ممنون میشم کمکم کنید.