zoukankan      html  css  js  c++  java
  • 近日网站开发收获(一)

     

    近日网站开发收获(

     

    1. Response.write();输出错误,

    Response.write"<script>alert('您的ip已经被锁定,解除锁定,请与管理员联系')</script>",); 不会弹出对话框。

    解决方案:在其后缺少return语句,并且命名空间引用了system.net(这个应该不是问题的所在)

    1.1. SQL:select count(*)和select count(1)的区别

     效果:两者的返回结果是一样的。

    意义:当count的参数是具体值时如count(1),count('a'),count的参数已没有实际意义了。

    范围:在统计范围,count(*)和count(1) 一样,都包括对NULL的统计;
               count(column) 是不包括NULL的统计。

    速度:表沒有主键(Primary key),count(1)比count(*)快;
      否则,主键作为count的参数时,count(主键)比count(1)和count(*)都快;
     表只有一个字段,count(*),count(1)和count(主键)速度一样。

    2.sql语句查询同一个ip在十秒内提出次数,加以控制。在少于十秒则禁止提问。

    逻辑string sql = "SELECT qip FROM question WHERE datediff(ss,(SELECT TOP 1 qtime FROM question WHERE qip='" + iip + "' ORDER BY qid DESC),getdate())>10";

    注释:

    1.         Datediff()

    DateDiff 函数

    返回两个日期之间的时间间隔。

    DATEDIFF(datepart,startdate,enddate)

    例如:

    Datediff(day,2010-10-10,2010-10-11)

    输出1

    Datediffssstartdateenddatess表示秒,则mi表示分钟。

    Getdate()sql中获取当期系统时间。

    2.另外一点就是在写sql的过程中的一点思路,比如上面的sql的实现过程,可以采用分步法,然后嵌套语句。这样一个问题就给分解拉。

    第一步查询ip地址相同的问题的

    Select ip from question where qip=’127.0.0.1’

    第二步:查询时间间隔大于10s的

     string sql = "SELECT qip FROM question WHERE datediff(ss,(SELECT TOP 1 qtime FROM question WHERE qip='" + iip + "' ORDER BY qid DESC),getdate())>10"

     3. cmd.Parameters.AddWithValue("@ipsame", iip);

    最初是用的这样方式传入sql语句中,一直会提示提问超出10s的对话框,后来换成上面的iip问题得以解决。

    4.对应response.write后,页面变形的问题解决方案,

    引入ClientScriptManager cs = Page.ClientScript;

    然后对应的response.write换成     cs.RegisterClientScriptBlock(typeof(object), "bs", "alert('您的ip已经被锁定,解除锁定,请与管理员联系')", true);

    这种方法使用页面不会出现变形。

    附加一个很使用的类文件,可以直接引用:

    namespace Steam.Core.Web

    {

        using Steam.Core.Error;

        using System;

        using System.Text;

        using System.Web;

        using System.Web.UI;

     

        /// <summary>

        /// Javascript处理类

        /// </summary>

        public class JavascriptDeal

        {

            public static void Alert(string str)

            {

                Http.Response.Write("<script>alert('" + Encoding(str) + "');</script>");

            }

     

            public static void Alert(ClientScriptManager cs, string str)

            {

                Alert(cs, str, Guid.NewGuid().ToString());

            }

     

            public static void Alert(ClientScriptManager cs, string str, string key)

            {

                cs.RegisterClientScriptBlock(typeof(object), key, "alert('" + Encoding(str) + "');", true);

            }

     

            /// <summary>

            /// 在页面装载完成后弹出警告框,即在</form>标记的上一行

            /// </summary>

            /// <param name="cs"></param>

            /// <param name="str"></param>

            public static void AlertDown(ClientScriptManager cs, string str)

            {

                AlertDown(cs, str, Guid.NewGuid().ToString());

            }

     

            /// <summary>

            /// 在页面装载完成后弹出警告框,即在</form>标记的上一行

            /// </summary>

            /// <param name="cs"></param>

            /// <param name="str"></param>

            /// <param name="key"></param>

            public static void AlertDown(ClientScriptManager cs, string str, string key)

            {

                cs.RegisterStartupScript(typeof(object), key, "alert('" + Encoding(str) + "');", true);

            }

     

            public static void CloseWindow(HttpResponse response)

            {

                response.Write("<script>window.close();</script>");

                response.End();

            }

     

            public static void CloseWindow(ClientScriptManager cs)

            {

                cs.RegisterClientScriptBlock(typeof(object), "closewindow", "window.close();", true);

            }

     

            public static string Encoding(string str)

            {

                return Encoding(str, @"\n");

            }

     

            public static string Encoding(string str, string enterStr)

            {

                StringBuilder builder = new StringBuilder(str);

                builder.Replace("\r\n", enterStr);

                builder.Replace("\r", enterStr);

                builder.Replace("\n", enterStr);

                builder.Replace(@"\", @"\\");

                builder.Replace("\"", "\\\"");

                builder.Replace("'", @"\'");

                return builder.ToString();

            }

     

            /// <summary>

            /// 输出javascript

            /// </summary>

            /// <param name="response"></param>

            /// <param name="str"></param>

            public static void Out(HttpResponse response, string str)

            {

                response.Write("<script language=\"javascript\" type=\"text/javascript\">" + str + "</script>");

            }

     

            /// <summary>

            /// 输出javascript

            /// </summary>

            /// <param name="cs"></param>

            /// <param name="str"></param>

            public static void Out(ClientScriptManager cs, string str)

            {

                Out(cs, str, Guid.NewGuid().ToString());

            }

     

            /// <summary>

            /// 输出javascript

            /// </summary>

            /// <param name="cs"></param>

            /// <param name="str"></param>

            /// <param name="key"></param>

            public static void Out(ClientScriptManager cs, string str, string key)

            {

                cs.RegisterClientScriptBlock(typeof(object), key, str, true);

            }

     

            /// <summary>

            /// 在页面装载完成后输出javascript块,即在</form>标记的上一行

            /// </summary>

            /// <param name="cs"></param>

            /// <param name="str"></param>

            public static void OutDown(ClientScriptManager cs, string str)

            {

                Out(cs, str, Guid.NewGuid().ToString());

            }

     

            /// <summary>

            /// 在页面装载完成后输出javascript块,即在</form>标记的上一行

            /// </summary>

            /// <param name="cs"></param>

            /// <param name="str"></param>

            /// <param name="key"></param>

            public static void OutDown(ClientScriptManager cs, string str, string key)

            {

                cs.RegisterStartupScript(typeof(object), key, str, true);

            }

     

            /// <summary>

            /// 刷新用Open打开的子窗口

            /// </summary>

            /// <param name="response"></param>

            public static void RefreshOpener(HttpResponse response)

            {

                response.Write("<script>window.opener.Refresh();</script>");

            }

     

            /// <summary>

            /// 刷新父窗口

            /// </summary>

            /// <param name="response"></param>

            public static void RefreshParent(HttpResponse response)

            {

               response.Write("<script>window.dialogArguments.Refresh();</script>");

            }

            /// <summary>

            /// 刷新父窗口

            /// </summary>

            /// <param name="cs"></param>

            public static void RefreshParent(ClientScriptManager cs)

            {

                cs.RegisterClientScriptBlock(typeof(object), "refreshparent", "window.dialogArguments.Refresh();", true);

            }

     

            /// <summary>

            /// 刷新本身

            /// </summary>

            /// <param name="url"></param>

            public static void RefreshSelf(string url)

            {

                HttpResponse response = Http.Response;

                response.Write("<script>window.location.href='" + url + "';</script>");

                response.End();

            }

     

            /// <summary>

            /// 设置子窗口的返回值

            /// </summary>

            /// <param name="cs"></param>

            /// <param name="value"></param>

            public static void SetReturnValue(ClientScriptManager cs, string value)

            {

                cs.RegisterClientScriptBlock(typeof(object), "setreturnvalue", "window.returnValue = '" + value + "';", true);

            }

     

            public static void SetReturnValue(ClientScriptManager cs, string value, string property)

            {

                cs.RegisterClientScriptBlock(typeof(object), "setreturnvalue", "window.returnValue." + property + " = '" + value + "';", true);

            }

     

     

            public static void ShowError(Exception e)

            {

                Page handler = HttpContext.Current.Handler as Page;

                if (handler != null)

                {

                    ShowError(handler.ClientScript, e);

                }

            }

     

            public static void ShowError(string str)

            {

                Page handler = HttpContext.Current.Handler as Page;

                if (handler != null)

                {

                    ShowError(handler.ClientScript, str);

                }

            }

     

            public static void ShowError(ClientScriptManager cs, Exception e)

            {

                StringBuilder builder = new StringBuilder(e.Message);

                StringBuilder builder2 = new StringBuilder(e.Source);

                StringBuilder builder3 = new StringBuilder(e.StackTrace);

                bool flag = false;

                ValidateSoftException exception = null;

                if (e is ValidateSoftException)

                {

                    flag = true;

                    exception = e as ValidateSoftException;

                }

                for (Exception exception2 = e.InnerException; exception2 != null; exception2 = exception2.InnerException)

                {

                    if (exception2 is ValidateSoftException)

                    {

                        flag = true;

                        exception = exception2 as ValidateSoftException;

                        break;

                    }

                    builder.Append("\r\n" + exception2.Message);

                    builder2.Append("\r\n" + exception2.Source);

                    builder3.Insert(0, exception2.StackTrace + "\r\n");

                }

                if (flag)

                {

                    builder = new StringBuilder(exception.Message);

                    builder2 = new StringBuilder();

                    builder3 = new StringBuilder();

                }

                AlertDown(cs, Encoding(builder.ToString()));

            }

     

            public static void ShowError(ClientScriptManager cs, string str)

            {

                AlertDown(cs, Encoding(str));

            }

        }

    }

    要去还书拉,今天就乱七八糟的先总结这么多吧!唉,真是语无伦次。就先这样啦。

  • 相关阅读:
    试玩mpvue,用vue的开发模式开发微信小程序
    laravel 整合 swoole ,并简单 ab 测试对比性能以及在 PHPstorm 中利用debug调试配置swoole服务中的PHP代码
    移动端固定头部和固定左边第一列的实现方案(Vue中实现demo)
    PhpStorm 2017.3 版本在 Mac 系统 macOS High Sierra 版本 10.13.3 中运行很卡顿
    xdebug : Debug session was finished without being paused
    SVN checkout 出的项目在PHPstorm中打开没有subversion(SVN)选项按钮怎么办?
    PHP应用的CI/CD流程实践与学习:一、PHP运行环境的准备
    Mac环境下PHPstorm配置xdebug开发调试web程序
    『备忘录』elasticsearch 去重分页查询
    Mac下docker搭建lnmp环境 + redis + elasticsearch
  • 原文地址:https://www.cnblogs.com/gxg2008540/p/1875157.html
Copyright © 2011-2022 走看看