CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

200分求一段程序!

楼主gaofeng2000(高老师)2005-06-02 20:09:24 在 .NET技术 / ASP.NET 提问

现有一页面,上布置一按钮,要求点击该按钮时,如果服务器时间小于12:00,则弹出一提示窗口,提示:“你确定提交吗?”,点“是”,执行提交过程,点“否”,则什么都不做;如果服务器时间大于12:00,则不弹提示窗口,直接执行提交过程。 问题点数:200、回复次数:69Top

1 楼boytomato(深爱一人叫颖的女孩!)回复于 2005-06-02 20:21:42 得分 5

private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  //   在此处放置用户代码以初始化页面  
   
  //  
   
  Button1.Attributes.Add   ("onclick",  
  "return   confirm   (\"确定要跳转吗?\")   ;");  
   
  if   (System.DateTime.Now.Hour>12)  
  {    
                      Button1.Attributes.Clear   ();  
   
  }  
   
  }  
   
   
   
  private   void   Button1_Click(object   sender,   System.EventArgs   e)  
  {  
      //条转      
       
  }Top

2 楼LaoDai_Net(『老代』)回复于 2005-06-02 20:23:47 得分 5

private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  //   在此处放置用户代码以初始化页面  
  int   iHour   =   Int32.Parse(DateTime.Now.Hour.ToString());  
  if(iHour   <   12)  
  {  
  Button1.Attributes.Add("OnClick","return   confirm   (\"提示文字?\")   ;");  
  }  
  }  
  Top

3 楼iuhxq(小灰)回复于 2005-06-02 21:04:50 得分 5

楼上的都可以呀  
   
  那我接点分吧。呵呵Top

4 楼hchxxzx(NET?摸到一点门槛)回复于 2005-06-02 21:05:38 得分 5

客户端无法直接得知得知服务端的时间.  
  说说为什么要这样做?  
  Top

5 楼hackate(兰花开香入梦境,独思佳人亦飘然!!)回复于 2005-06-02 21:11:37 得分 5

楼上的用的是服务端时间来判断啊。没错啊。?  
   
  这个可行啊Top

6 楼hchxxzx(NET?摸到一点门槛)回复于 2005-06-02 21:20:27 得分 0

楼上的方法,不能用的.  
  楼主要的是:如果时间xx,那么弹出对话框进行选择,但楼上的回答是,在显示的时候,判断时间,如果我打开页面,过10分钟再点击呢?  
  此时已经过了12点了,但执行的还是12点之前的判断.Top

7 楼lxfxw(feng)回复于 2005-06-02 21:22:28 得分 5

菜鸟,  
  不懂,  
  帮顶Top

8 楼lxfxw(feng)回复于 2005-06-02 21:22:38 得分 5

顶Top

9 楼hackate(兰花开香入梦境,独思佳人亦飘然!!)回复于 2005-06-02 21:28:59 得分 5

恩,没看清楚,不好意思。  
   
  那这样就没有直接方法了。  
   
  但是还是有解决方法的。感觉麻烦一些Top

10 楼hchxxzx(NET?摸到一点门槛)回复于 2005-06-02 21:31:32 得分 20

不过还是有办法的,借助XMLHTTP,在客户端求取服务端的时间,如下:  
   
  <input   type=submit   value=button1   name=button1   onclick="return(f());">  
  <script   language=javascript>  
  {  
  var   mybol   =   XmlPost();  
  if(mybol   ==   1)  
  {  
  //超过12点  
  return(true);  
  }  
  ele  
  {  
  return(confirm("确定提交吗?"));  
  }  
  }  
   
  //以XML求取数据  
  //webFileUrl:要读取的页面地址,可带参数  
  function   XmlPost()  
  {  
  var   webFileUrl   =   "xxx.aspx";  
  var   result   =   "";  
  var   xmlHttp   =   new   ActiveXObject("MSXML2.XMLHTTP");  
  xmlHttp.open("POST",   webFileUrl,   false);  
  xmlHttp.send("");  
  result   =   xmlHttp.responseText;  
  return(result);  
  }  
   
   
  在另外一个页面xxx.aspx中取时间:  
  int   aa   =   DateTime.Now.Hour;  
  string   bb   =   ";  
  if(aa   >   12)  
  bb   =   1;  
  else  
  bb   =   0;  
   
  this.Response.Write(bb);  
  this.Response.End();Top

11 楼joeweng(蓝天天蓝)回复于 2005-06-02 21:33:46 得分 5

接分Top

12 楼flyye_cs(一叶孤舟)回复于 2005-06-02 21:38:18 得分 5

study...Top

13 楼Truly()回复于 2005-06-02 21:56:47 得分 5

http://community.csdn.net/Expert/topic/4049/4049491.xml?temp=.5106928  
   
  原理类似,pageload时初始话时间信息倒计时到12点时  
  setTimeout("document.all.button1.onclick='return   false'",   时间)Top

14 楼Truly()回复于 2005-06-02 21:58:54 得分 5

setTimeout("document.all.button1.onclick='return   false'",   剩余时间)Top

15 楼y7967(三千)回复于 2005-06-02 22:00:04 得分 5

upTop

16 楼hchxxzx(NET?摸到一点门槛)回复于 2005-06-02 22:08:53 得分 15

还有一个办法,是hackate(兰花开香入梦境,独思佳人亦飘然!!)   提出的设想,加以改进,如下:  
   
  具体思路是:在页面加载时,取服务器时间至客户端,然后用setTimeout对此时间加以计时,按钮提交时,判断此时间是否超过12点.  
  假设当前页面是a.asp,可在页面放一个textbox1,在页面的page_load里面将当前时间写下  
  this.TextBox1.Text   =   DateTime.Now.ToString("yyyy-MM-dd   hh-mm-dd");  
   
  <input   type=submit   value=button1   name=button1   onclick="return(f())">  
   
  然后在页面中写脚本  
  <SCRIPT   LANGUAGE="vbScript">  
  <!--  
  dim   stime  
  stime   =   document.all("TextBox1").value  
  function   aa()  
  '刷新一次累加一分钟  
  stime   =   dateadd("n",1,stime)  
  call   settimeout("aa()",1000*60)  
  end   function  
   
  function   f()  
  dim   mybol  
  if   hour(stime)   >12   then  
  f   =   true  
  else  
  f   =   confirm("确认提交吗?")  
  end   if  
  end   function  
  //-->  
  </SCRIPT>  
  Top

17 楼nbaxccnd( 百思必得)回复于 2005-06-02 22:11:33 得分 5

upTop

18 楼gaofeng2000(高老师)回复于 2005-06-02 22:13:45 得分 0

考勤系统,就是想在下班时如果时间未到,给点提示信息……  
  呵呵……Top

19 楼dsclub(任搏软)回复于 2005-06-02 22:19:08 得分 5

ASP下就用XMLHTTP来做,无刷新,多爽!  
   
   
  ASP.NET,调用个WebService不行么?Top

20 楼wangjuping(三皮子[www.3pz.com])回复于 2005-06-02 22:20:07 得分 5

用不差这么麻烦吧!!!  
   
  不过我喜欢看hchxxzx(NET?摸到一点门槛)   发的贴子!!!Top

21 楼Truly()回复于 2005-06-02 22:22:28 得分 5

private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
          if(时间已过)  
          {//   这里自己写  
          }  
          else  
                  script   =   "<script>setTimeout(\"document.all.button1.onclick='return   false'\",   "   +   ((TimeSpan)(DateTime.Today   +     TimeSpan.FromHours(12)-   DateTime.Now)).TotalSeconds   *   1000   +   ");</script>";  
   
          Page.RegisterStartupScript("",script);  
  }  
  }Top

22 楼hchxxzx(NET?摸到一点门槛)回复于 2005-06-02 22:48:26 得分 5

对了,上面还要加一个调用    
   
  dim   stime  
  stime   =   document.all("TextBox1").value  
  function   aa()  
  '刷新一次累加一分钟  
  stime   =   dateadd("n",1,stime)  
  call   settimeout("aa()",1000*60)  
  end   function  
   
  call   aa()Top

23 楼spfft007(自由鸟)回复于 2005-06-02 22:48:35 得分 5

markTop

24 楼boytomato(深爱一人叫颖的女孩!)回复于 2005-06-03 07:05:20 得分 5

to   hchxxzx(NET?摸到一点门槛)      
   
    在运行中客户端改了时间怎么办.....  
   
  Top

25 楼boytomato(深爱一人叫颖的女孩!)回复于 2005-06-03 07:26:09 得分 5

用   webservice     实现的...  
   
  [WebMethod]  
  public   int   get_hour()  
  {  
  return     System.DateTime.Now   .Hour   ;  
  }  
   
  调用页面    
   
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  //   在此处放置用户代码以初始化页面  
   
     
  Button2.Attributes.Add   ("onclick",  
  "return   get_time()");  
   
  }  
   
  <%@   Page   language="c#"   Codebehind="WebForm7.aspx.cs"   AutoEventWireup="false"   Inherits="WebService.WebForm7"   %>  
  <!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.0   Transitional//EN"   >  
  <HTML>  
  <HEAD>  
  <title>WebForm7</title>  
  <meta   content="Microsoft   Visual   Studio   .NET   7.1"   name="GENERATOR">  
  <meta   content="C#"   name="CODE_LANGUAGE">  
  <meta   content="JavaScript"   name="vs_defaultClientScript">  
  <meta   content="http://schemas.microsoft.com/intellisense/ie5"   name="vs_targetSchema">  
  <script>  
   
      var   IntCall=0   ;  
     
    function   Init()  
  {  
  Service.useService("Get_Hour.asmx?WSDL","Get_Hour");  
   
  }  
  function   Service_Result()  
  {      
      temp.innerText=event.result.value;    
   
       
      window.alert   ("Service_Result");  
  }  
   
          function     get_time()  
          {  
               
                  IntCall=Service.Get_Hour.callService("get_hour");    
               
                  window.alert   ("   get_time");  
                if   (Number(temp.innerText)>=12)    
       
                  {  
                        return   true;    
                  }  
                  else  
                  {  
                  return(confirm("确定提交吗?"+temp.innerText));  
                  }  
   
   
  }  
         
  </script>  
  </HEAD>  
  <body   onload="Init()"   MS_POSITIONING="GridLayout">  
  <form   id="Form1"   method="post"   runat="server">  
  <div   id="Service"   style="BEHAVIOR:   url(webservice.htc)"   onresult="Service_Result()"></div>  
  <FONT   face="宋体"><span   id="temp"></span>  
  <asp:Button   id="Button2"   style="Z-INDEX:   102;   LEFT:   304px;   POSITION:   absolute;   TOP:   184px"   runat="server"  
  Text="Button"   Width="152px"   Height="32px"></asp:Button></FONT></form>  
  </body>  
  </HTML>  
   
  Top

26 楼1zhk(古木)回复于 2005-06-03 07:27:22 得分 2

upTop

27 楼boytomato(深爱一人叫颖的女孩!)回复于 2005-06-03 07:27:32 得分 0

在程序根目录中记得加上   webservice.htc  
   
  Top

28 楼gngnandgngn(仗义执言 )回复于 2005-06-03 08:00:02 得分 2

点击按纽的时候去访问服务器端的时钟啊,为什么不可以啊,似乎没必要这么复杂吧。就是把第一位的代码放到按纽事件里不就好了Top

29 楼yishan116(哈哈)回复于 2005-06-03 08:25:07 得分 2

up    
  都对了   我就不说了啊     接接分Top

30 楼liuqinglq(白菜)回复于 2005-06-03 09:00:44 得分 5

怎么都说的这么复杂,很简单的思想  
   
  提交的时候再到服务器取时间不行么?  
   
  至于用什么方法取服务器的时间,不是多的是吗?Top

31 楼zhangyu028(听天之音)回复于 2005-06-03 09:12:25 得分 2

做个标记,有点意思!Top

32 楼biao88482005(飚)回复于 2005-06-03 09:44:42 得分 2

同意     gngnandgngn(仗义执言)    
  狂顶~~~Top

33 楼brando_beat(Eの懒龙)回复于 2005-06-03 09:48:47 得分 2

markTop

34 楼ye_zi(行到水穷处·坐看云起时)回复于 2005-06-03 10:03:53 得分 2

太晚了,只接分Top

35 楼blackhero(黑侠客)回复于 2005-06-03 10:04:39 得分 2

估计差不多了  
  我只能接分了Top

36 楼xu770(我爱鱼儿)回复于 2005-06-03 10:33:31 得分 2

直接到服务器端判断不就行了吗?  
  楼主又没有说一定要在客户端判断。Top

37 楼wangxinghai(我本轻狂)回复于 2005-06-03 10:49:44 得分 2

学习Top

38 楼luckyprg(lucky)回复于 2005-06-03 10:57:03 得分 2

MarkTop

39 楼bandt(逝者如斯)回复于 2005-06-03 11:25:20 得分 2

MarkTop

40 楼WYZSC(007,重在参乎,说错问错勿怪。)回复于 2005-06-03 11:40:05 得分 2

study...Top

41 楼Truly()回复于 2005-06-03 13:08:17 得分 0

回复人:   boytomato(深爱一人叫颖的女孩!)   (   )   信誉:100     2005-06-03   07:05:00     得分:   0      
     
     
        to   hchxxzx(NET?摸到一点门槛)      
   
    在运行中客户端改了时间怎么办.....  
  ---------------------------------------  
  上面所有的代码只要不是通过提交后判断,  
  无论你是用webservice或是直接生成脚本  
  只要是在客户端实现无刷新判断的均可以修改客户端代码骗过服务器,  
  客户端的判断只是方便用户而不能解决安全问题  
  唯一可作的是同时服务器验证Top

42 楼Truly()回复于 2005-06-03 13:11:28 得分 0

同时提醒诸位的是使用htc的也就限定了ie类浏览器Top

43 楼zeusvenus()回复于 2005-06-03 13:31:11 得分 2

最上面两位提的办法我觉得已经解决问题了,实在不行就来个页面定时刷新就行了.只要服务器的时间没设错不会出问题的.Top

44 楼Ordin(郁闷呀)回复于 2005-06-03 13:34:26 得分 2

markTop

45 楼aliketen(继续学习NET!)回复于 2005-06-03 13:39:09 得分 2

upTop

46 楼hchxxzx(NET?摸到一点门槛)回复于 2005-06-03 13:46:32 得分 0

to     Truly(NULL)  
  我上面写的东西,都是跟服务器端有关的.无论你在客户端如何欺骗,它最后总是到服务端去取时间,根本不可能被骗过去Top

47 楼soft_biao(巴不豆)回复于 2005-06-03 13:49:12 得分 2

本人菜鸟一个,想问个问题  
  为什么不能直接在Button1_Click()函数中取时间,然后再对其进行判断呢?  
  这样取的时间是在触发click事件时取的,应该是服务器当前的时间吧Top

48 楼mfc6027(直下九天)回复于 2005-06-03 13:50:55 得分 2

private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  //   在此处放置用户代码以初始化页面  
  int   iHour   =   Int32.Parse(DateTime.Now.Hour.ToString());  
  if(iHour   <   12)  
  {  
  Button1.Attributes.Add("OnClick","return   confirm   (\"提示文字?\")   ;");  
  }  
  }  
  *********************************************************************  
  錯的,不能用Top

49 楼Truly()回复于 2005-06-03 14:03:36 得分 0

to     Truly(NULL)  
  我上面写的东西,都是跟服务器端有关的.无论你在客户端如何欺骗,它最后总是到服务端去取时间,根本不可能被骗过去  
  -------------------------------  
  好,我告诉你怎么改,你把页面保存为html,修改  
  <input   type=submit   value=button1   name=button1   onclick="return(f());">  
  为  
  <input   type=submit   value=button1   name=button1>  
   
  form中的action修改为正确的url,然后打开修改后的html点击inputTop

50 楼soft_biao(巴不豆)回复于 2005-06-03 14:14:59 得分 2

如果是用javascript写的并且没有runat=server属性的话应该是可以欺骗的,如果  
  有runat=server属性或者是在.cs文件中写代码的话,程序是在服务器端运行的,应该不会  
  出现欺骗吧  
   
  还有就是我上面的问题:  
  为什么不能直接在Button1_Click()函数中取时间,然后再对其进行判断呢?  
  这样取的时间是在触发click事件时取的,应该是服务器当前的时间吧  
  Top

51 楼qb613ps3(孤星)回复于 2005-06-03 14:24:22 得分 2

UPTop

52 楼xyly624(反之亦然)回复于 2005-06-03 14:28:41 得分 2

不错。  
  MARK.Top

53 楼boytomato(深爱一人叫颖的女孩!)回复于 2005-06-03 14:40:13 得分 0

to   Truly(NULL)  
   
  你看看我写的那个有没有漏洞......  
   
  Top

54 楼Truly()回复于 2005-06-03 14:57:06 得分 0

to   boytomato   and   soft_biao  
  其实无论使用什么技术jsp   or   php   or   asp   or   asp.net  
  到了客户端都变成了html和script,  
  像runat=server只不过是一些服务器标记  
  在Button1_Click()中是最安全的方法  
  但是楼主花200份自然不是要大家回答到Button1_Click()中判断的代码  
   
  对于boytomato的代码跟hchxxzx的区别是onclick属性的生成方法  
  你的代码到了客户段就是  
  <input   type=button   onclick="return   get_time()"...  
   
  同样可以修改并post到客户端Top

55 楼Truly()回复于 2005-06-03 14:57:47 得分 0

post到服务器Top

56 楼hchxxzx(NET?摸到一点门槛)回复于 2005-06-03 15:09:19 得分 0

<input   type=submit   value=button1   name=button1   onclick="return(f());">  
  为  
  <input   type=submit   value=button1   name=button1>  
   
  form中的action修改为正确的url,然后打开修改后的html点击input  
  ------------  
  这样说,就是绕过此页面,自己修改再提交喽.  
  但这样并不能说上述的脚本写得有问题.  
  并且,如果我在服务端再加一个判断,判断提交的页面是否由本网站进来的,这种提交方式就不灵了.  
  就好像,我们写程序,有人说有很多漏洞,但有些时候,是代码的问题,而有些时候,却是服务器配置的问题.作为代码人员,只要用心写好自己的代码,尽量少漏洞,至于服务器,并不是我们所能关心的.  
  而且,在ASP.NET中,再象ASP中自己修改页面然后提交,不知道还行不行.Top

57 楼qingbo_hu(湖儿清清水)回复于 2005-06-03 15:13:06 得分 2

学习,不要分,呵呵呵  
  Top

58 楼renyu732(Sysinfo)回复于 2005-06-03 15:19:02 得分 2

帮你UPTop

59 楼Truly()回复于 2005-06-03 15:22:32 得分 0

唯一想说的就是本人从未进行真正进行过asp开发及学习,至于   "ASP.NET中,再象ASP中自己修改页面然后提交,不知道还行不行"  
   
  而input和submit表单,action等都是html元素,勿须asp/asp.netTop

60 楼dongpo1(dongpo1)回复于 2005-06-03 15:55:42 得分 2

private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  //   在此处放置用户代码以初始化页面  
  if(DateTime.Now.Hour<18)  
  Button1.Attributes.Add("onclick","Javascript:return   confirm('你确定提交吗?')");  
  }Top

61 楼hchxxzx(NET?摸到一点门槛)回复于 2005-06-03 20:48:41 得分 0

本人特郑重声明一下  
  对于上述问题的争论,仅是技术之争,纯粹就事论事,并无其它想法.  
  各位无须担心其它问题.Top

62 楼lau_marco(青苹果)回复于 2005-06-04 03:14:26 得分 2

收藏Top

63 楼hotphen(侯风)回复于 2005-06-04 04:20:55 得分 1

不错,有意思.Top

64 楼yc3231996(阿蒙)回复于 2005-06-04 05:39:16 得分 1

顺便问一个问题:  
  但button_click()被触发,应该不会马上就执行里面的代码吧,页面要重载,  
  因此page_load()是在button_click()前发生。。。  
   
  那我在page_load()里取服务器时间判断,  
  if   某个条件   then  
  Button1.Attributes.Add   ("onclick","return   confirm   (\"确定要跳转吗?\")")  
  end   if  
  当page_load()执行完了再执行button_click()里面的  
   
  不知道我的思路错在哪,我测试了下,结果不正确。  
   
  Top

65 楼huangyiping1()回复于 2005-06-04 06:33:28 得分 1

怎么在这个社区里新建贴子呢?Top

66 楼hackate(兰花开香入梦境,独思佳人亦飘然!!)回复于 2005-06-04 08:00:46 得分 0

呵呵。其实嘛。这个东西挺难说的!  
   
  关键在于程序员了。看他负责不负责了。一个不负责的程序员。。。  
   
  呵呵。这个问题出得挺不错的。Top

67 楼renyu732(Sysinfo)回复于 2005-06-04 09:39:30 得分 1

upTop

68 楼gaofeng2000(高老师)回复于 2005-06-04 16:16:09 得分 0

多谢大家的帮助!经过权衡,采用了hchxxzx(NET?摸到一点门槛)提供的利用xmlhttp的方法。  
  他的代码基本没问题,只是这句不太准确  
  int   aa   =   DateTime.Now.Hour;  
  string   bb   =   ";  
  if(aa   >   12)  
  ---------------------------  
  if(DateTime.Now.TimeOfDay   >=   TimeSpan.FromMinutes(720))  
  Top

69 楼teacher1998(英语+asp.net+MsSQL)回复于 2005-06-04 16:26:39 得分 1

路过!希望搂主早点解决困惑!  
  Top

相关问题

  • 一段程序
  • 一小段程序!
  • 求一段程序
  • 求一段程序
  • 求购一段程序
  • 一段有趣的程序
  • 一段程序,在线等
  • 一段程序的问题
  • 求一段简单程序
  • 请教一段程序

关键词

  • asp.net

得分解答快速导航

  • 帖主:gaofeng2000
  • boytomato
  • LaoDai_Net
  • iuhxq
  • hchxxzx
  • hackate
  • lxfxw
  • lxfxw
  • hackate
  • hchxxzx
  • joeweng
  • flyye_cs
  • Truly
  • Truly
  • y7967
  • hchxxzx
  • nbaxccnd
  • dsclub
  • wangjuping
  • Truly
  • hchxxzx
  • spfft007
  • boytomato
  • boytomato
  • 1zhk
  • gngnandgngn
  • yishan116
  • liuqinglq
  • zhangyu028
  • biao88482005
  • brando_beat
  • ye_zi
  • blackhero
  • xu770
  • wangxinghai
  • luckyprg
  • bandt
  • WYZSC
  • zeusvenus
  • Ordin
  • aliketen
  • soft_biao
  • mfc6027
  • soft_biao
  • qb613ps3
  • xyly624
  • qingbo_hu
  • renyu732
  • dongpo1
  • lau_marco
  • hotphen
  • yc3231996
  • huangyiping1
  • renyu732
  • teacher1998

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo