标题:请大侠看看 这段代码是什么意思?具体是要跟什么参数呢?
只看楼主
wc87879
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-11-28
结帖率:0
已结贴  问题点数:20 回复次数:6 
请大侠看看 这段代码是什么意思?具体是要跟什么参数呢?
以下代码请大侠看看,具体网址是要加什么参数运行吗?
=========================================================

<%@ Page language="c#" %>
<%@ Import namespace="System.Xml" %>
<%
    Page.Response.Cache.SetExpires(DateTime.Now.AddHours(-1));


    string t=getParam("t");
    string a=getParam("a");
    string p=getParam("p");

    if (t=="" || a=="" || p=="")
    {
        Response.Write("<?xml version=\"1.0\"?>\n<d>ERROR</d>");
    }
    else
    {
        int pos = Convert.ToInt32(p);

        XmlDocument doc = new XmlDocument();
        string file = Server.MapPath("../advert/xmldata/stat.xml");
        doc.Load(file);

        XmlNode dtnode = doc.SelectSingleNode("/_8bo8/d");
        DateTime dt = Convert.ToDateTime(dtnode.InnerText);
        if ( DateTime.Now.AddHours(-24)>dt )
        {
            string tmp = "<?xml version=\"1.0\" encoding=\"gb2312\"?>\n";
            tmp += "<_8bo8><d>" + DateTime.Now.ToString("yyyy-MM-dd 00:00:00") + "</d>\n";
            tmp += "<f><left></left><right></right><top></top><middle></middle><bottom></bottom><fleft></fleft><fright></fright></f>\n";
            tmp += "<b><left></left><right></right><top></top><middle></middle><bottom></bottom><fleft></fleft><fright></fright></b>\n";
            tmp += "</_8bo8>";
            doc.LoadXml(tmp);
        }

        XmlNode node = doc.SelectSingleNode("/_8bo8/" + t + "/" + a);

        string data=node.InnerText;

        data = Record(data, pos);
        node.InnerText = data;
        doc.Save(file);

        Response.Write("<?xml version=\"1.0\"?>\n<d>OK</d>");
    }
%>
<script language="c#" runat="server">
string Record(string data, int pos)
{
    if (data=="") data = "0";
    string[] arr = data.Split(',');
    if (pos<arr.Length)
    {
        arr[pos] = (Convert.ToInt32(arr[pos]) + 1).ToString();
        data = arr[0];
        for(int i=1; i<arr.Length; i++)
        {
            data += "," + arr[i];
        }
    }
    else
    {
        string[] arr2 = new string[pos+1];
        for(int i=0; i<arr.Length; i++)
        {
            arr2[i] = arr[i];
        }
        for(int i=arr.Length; i<arr2.Length; i++)
        {
            arr2[i]="0";
        }
        arr2[pos] = (Convert.ToInt32(arr2[pos]) + 1).ToString();
        data = arr2[0];
        for(int i=1; i<arr2.Length; i++)
        {
            data += "," + arr2[i];
        }
    }
    return data;
}
string getParam(string key)
{
    string tmp="";
    if (Request[key]!=null)
    {
        tmp = Request[key].ToString();
    }
    return tmp;
}
</script>
搜索更多相关主题的帖子: version 
2011-11-28 01:35
wc87879
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-11-28
得分:0 
没人知道吗?
2011-11-28 11:53
wc87879
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-11-28
得分:0 
希望高手帮忙
2011-11-28 13:36
牛腩
Rank: 3Rank: 3
来 自:南宁
等 级:论坛游侠
威 望:1
帖 子:59
专家分:161
注 册:2007-6-3
得分:7 
应该是读取XML文档的吧。。传入参数a,t,p.如:http://
2011-11-28 16:19
yms123
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:7 
<%@ Page language="c#" %>
<%@ Import namespace="System.Xml" %>
<%
    Page.Response.Cache.SetExpires(DateTime.Now.AddHours(-1));//设置缓存过期时间,这样写应该是缓存立刻过期,因为设置的时间是当前小时的前一个小时
   

    #region 接收参数
     //关键是getParam像是自定义的
    string t=getParam("t");
    string a=getParam("a");
    string p=getParam("p");
    #endregion
   
    #region 生成XML代码并保存

    if (t=="" || a=="" || p=="")//如果参数为空
    {
        Response.Write("<?xml version=\"1.0\"?>\n<d>ERROR</d>");//显示ERROR错误
    }
    else
    {
        int pos = Convert.ToInt32(p);//转换一个参数为整型

        #region 读取XML文件路径为../advert/xmldata/stat.xml
        XmlDocument doc = new XmlDocument();
        string file = Server.MapPath("../advert/xmldata/stat.xml");//获得服务器上的路径
        doc.Load(file);//读取xml
        #endregion

        XmlNode dtnode = doc.SelectSingleNode("/_8bo8/d");//获取节点
        DateTime dt = Convert.ToDateTime(dtnode.InnerText);//将节点值强制转换为DateTime
        if ( DateTime.Now.AddHours(-24)>dt )//如果xml文件内的时间是昨天(这个判断问题很大,有可能会出错误,这里建议用TimeSpen或者借用DateDiff函数)
        {
            //生成xml代码
            string tmp = "<?xml version=\"1.0\" encoding=\"gb2312\"?>\n";
            tmp += "<_8bo8><d>" + DateTime.Now.ToString("yyyy-MM-dd 00:00:00") + "</d>\n";
            tmp += "<f><left></left><right></right><top></top><middle></middle><bottom></bottom><fleft></fleft><fright></fright></f>\n";
            tmp += "<b><left></left><right></right><top></top><middle></middle><bottom></bottom><fleft></fleft><fright></fright></b>\n";
            tmp += "</_8bo8>";
            doc.LoadXml(tmp);//读取生成的代码到xml
        }
        
        XmlNode node = doc.SelectSingleNode("/_8bo8/" + t + "/" + a);//获得节点

        string data=node.InnerText;//获得节点值

        data = Record(data, pos);//调用下面的函数
        node.InnerText = data;//设置节点值
        doc.Save(file);//保存生成后的xml为文件(保存到这个路径'../advert/xmldata/stat.xml')

        Response.Write("<?xml version=\"1.0\"?>\n<d>OK</d>");//显示一个OK
    }
    #endregion
%>
<script language="c#" runat="server">
string Record(string data, int pos)
{
    //判断data为空返回0
    if (data=="") data = "0";
    string[] arr = data.Split(',');//data里的数据可能是'1,2,3,4,5,6'这个样子的数字
    //如果数字个数小于pos
    if (pos<arr.Length)
    {
        //给第pos个数字加1,再循环变为1,2,3,4,5,6这样的字符串
        arr[pos] = (Convert.ToInt32(arr[pos]) + 1).ToString();
        data = arr[0];
        for(int i=1; i<arr.Length; i++)
        {
            data += "," + arr[i];
        }
    }
    else
    {
        string[] arr2 = new string[pos+1];//声明一个pos+1长度的数组
        //循环把旧数组arr数据转到新数组arr2
        for(int i=0; i<arr.Length; i++)
        {
            arr2[i] = arr[i];
        }
        //给arr2比arr多出来的数据设置为0
        for(int i=arr.Length; i<arr2.Length; i++)
        {
            arr2[i]="0";
        }
        arr2[pos] = (Convert.ToInt32(arr2[pos]) + 1).ToString();//给第pos个数+1
        
        //加1后再次循环把数据给到data
        data = arr2[0];
        for(int i=1; i<arr2.Length; i++)
        {
            data += "," + arr2[i];
        }
    }
    return data;
}
//这就是一个获得URL参数的函数,加了一个是否为空判断
string getParam(string key)
{
    string tmp="";
    if (Request[key]!=null)
    {
        tmp = Request[key].ToString();
    }
    return tmp;
}
</script>

[ 本帖最后由 yms123 于 2011-11-28 16:44 编辑 ]
2011-11-28 16:42
wc87879
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-11-28
得分:0 
回复 5楼 yms123
谢谢楼主~!~~~
2011-11-28 18:32
编程的乐趣
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:229
专家分:1027
注 册:2011-4-4
得分:7 
2011-11-28 19:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-356381-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.373502 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved