SHOPEX网上商店程序访问首页空白
  • 很多人在网站做了些修改后出现SHOPEX主页空白的情况,遇到这种情况一般是没有清空缓存所致。

    解决方法如下:

    1、如果可以进入后台管理就进入后台----关于-----缓存系统-----清空缓存就可以了。

    2、如果进入不了后台管理,就登陆FTP或者在线文件管理进入到SHOPEX程序目录(本例在程序在SHOPEX目录)里面的HOME/cache/,删掉缓存文件cachedata.php


shopex出现include_v5目录下文件报错的解决办法
  • 原因:缓存问题

    解决方法:找到confing/confing.php文件

    将define('WITHOUT_CACHE',false);

    修改为define('WITHOUT_CACHE',true);

    false为默认,开启缓存,

    关闭缓存后访问正常,清理shopex缓存后,

    重新修改为define('WITHOUT_CACHE',false);

asp+access网站数据表锁死导致网站无法访问的解决方法
  • 此问题主要针对使用windows server2008空间的用户,但根据测试其他windows操作系统的出现类似方法也可尝试使用此方法进行解决。


    检查网站程序的连接access数据库方式是使用是否与如下的类似:

    DBQ="+server.MapPath(""&db&"")+";DefaultDir=;Driver={Microsoft Access Driver (*.mdb)};

    如果是的话,并且出现access数据表锁死,即生成的ldb文件无法自动清除,可尝试将数据库连接方式更换为以下的方式:

    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")

    具体的代码,可参考:

    <%
    dim conn
    dim connstr
    dim db
    db="xxx.mdb"
    Set conn = Server.CreateObject("ADODB.Connection")
    connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")
    conn.Open connstr
     
    If Err Then
       err.Clear
       Set Conn = Nothing
       Response.Write "服务器正在维护,请稍后再试。"
       Response.End
    End If
     
    Sub CloseConn()
                    '以下是断开数据库连接语句
       conn.close
       set conn=nothing
    End Sub
     
    %>


.NET网站无法访问
  • 1、通过管理助手建立.NET网站一定要在.NET脚本映射选项选择.NET版本,可以通过打开iis,单击站点右键--属性--ASP.NET--ASP.NET version 是否有版本信息,没有加直接加上

    2、如果无法正常访问,报错-服务器应用程序不可用,检查空间目录权限是不是有NETWORK SERVICE权限

    3、其他错误信息,请使用在<system.web>节点下加上<customErrors mode="Off"/>错误异常抛出配置来检查:是否存在权限问题或者本身程序问题


    1)提示运行时错误,提示配置文件<system.web> 节点下需要加<customErrors mode="Off"/>
       按照提示到配置文件web.config文件下system.web节点添加<customErrors mode="Off"/>,并保证customErrors在整个配置文件下是唯一的,异常抛出后就可以检查到具体的错误信息
          1、添加后显示抛出异常
             针对结果处理方法:
             1)分析器错误消息: 无法识别的元素,检查报错的具体位置,查看是不是有非法字符
             2)数据库连接错误:报错类似Access denied for user或者提示sql错误          
             3)使用的.NET版本不对,如类似以下提示:<compilation debug="true" targetFramework="4.0" />
             4)权限问题,提示:无权限访问或者写入某个文件或者某个路径
                 处理方法:根据提示虚拟主机在web目录下加上IIS_WPG的相关权限,云主机上站点目录下添加NETWORK SERVICE 相关权限
             5)安全性异常
                 原因:服务器上对.NET程序某些特定的功能做了限制,也就是不支持相关的一些配置,如果提示配置文件某个节点错误
                 先检查该节点是否合法,合法的情况下可能是安全性做了限制
                 测试或者解决方法
                 1、最简单的调试方法,删除该节点
                 2、虚拟主机需要转移到安全性要求低的服务器
             6)请求验证过程检测到有潜在危险的客户端输入值
                 原因:传递的字符串不符合格式,使用在线编辑器提交数据时,使用的富文本信息,会报这样的错误
                 处理方法:
                 配置文件web.config文件下<system.web>节点下添加            
                 <pages validateRequest="false"/>
                 继续报错,再添加
                 <httpRuntime requestValidationMode="2.0"/>
                 继续报配置文件错误 :<httpRuntime requestValidationMode="2.0"/>
                 需要更换站点.NET版本为4.0,可以处理掉              
          2、添加后任显示提示运行时错误页面
             检查方法:
             1)检查程序是否存在于子目录下:虚拟空间没有开放子站点功能,如果程序是在子目录,将一直提示该页面
             2)配置文件下存在非法子节点:
                 检查方法:打开IIS-网站-选择当前站点-右键属性-ASP.NET-Edit Configurtion-打开时会有错误信息提示
             3)通过电脑上的日志文件查看报错信息
                 操作方法:我的电脑右键-管理-事件查看器-应用程序




在线编辑器eWebEditor打开后功能都无法使用
  • 原因:浏览器的兼容性问题,如果不做如下修改,仅兼容IE6

    解决方法:
    打开eWebEditor\include下面的editor.js文件代码:
    if (element.YUSERONCLICK) eval(element.YUSERONCLICK + "anonymous()");
    改成:
    if(navigator.appVersion.match(/8./i)=='8.') {   if (element.YUSERONCLICK) eval(element.YUSERONCLICK + "onclick(event)"); } else { if (element.YUSERONCLICK) eval(element.YUSERONCLICK + "anonymous()"); }

ASP网站程序访问出现“常见错误 不能打开注册表关键字”的解决方法
  • 症状:
    Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'
    [Microsoft][ODBC Microsoft Access Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0x1844 Thread 0x1b40 DBC 0x554cc59c Jet'。
    /friends/conn.asp,行5
    这是什么原因?

    解决办法:这个是数据库连接失败造成的。首先检查conn.asp中连接数据库的路径是否正确,检查数据库是否确实存在。如果数据库已经存在并且连接程序中的路径没有错误,请将本地的access数据库重新上传一次。

    如果服务器上的数据库才是最新的,不能重新上传解决,请将服务器上的数据库下载到您本地电脑,用access2000把你的数据库打开,然后用工具里面的修复数据库,修复一次再重新上传就可以了。


后台登录提示验证视图状态 MAC 失败
  • 原因:多台WEB服务器上的WEB应用程序没有使用统一的machineKey导致的

    处理方法:<system.web>节点下加入

    <machineKey validationKey="3FF1E929BC0534950B0920A7B59FA698BD02DFE8" decryptionKey="280450BB36319B474C996B506A95AEDF9B51211B1D2B7A77" decryption="3DES" validation="SHA1"/>


云虚拟主机http状态调试常见问题
  • 1、返回200,但是页面访问网页无法显示(或者空白)
       常见问题:
          1)、本地浏览器缓存
              清空本地浏览器缓存,cookie后测试
          2)、访问服务器上的首页文件本身无任何内容,
              可能原因:
              1)网站中毒,首页文件被清空
              2)通过FTP软件上传,空间使用已满,更新文件上传不成功,但是原来的数据已经被清空
              3)首页文件是通过程序静态化生成的文件(.html,.htm,.shtml)空间无写入权限或者空间已满,导致自动生成首页为空
          3)、程序本身设置的缓存数据为空或者其他未知问题读取缓存为空(多见php程序实现的cms程序)
              检测或者处理方式:删除程序中所使用的缓存目录下的所有文件
          4)、数据库数据为空,目前已经遇到mysql数据库和access数据库,原因多为客户使用原因
          5)、数据无发读取,常见asp程序使用access数据库,数据读取失败,但是没有明显的报错信息,页面可能无法显示内容
              数据无发读取原因:
              1)无访问权限
              2)数据库损坏
    2、返回200,内容不是程序相关内容

          1)、中毒导致文件被修改

    3、返回信息404
       1)该文件不存在
           检查网站FTP目录下是否存在该访问的文件
       2)文件存在,返回404
           1、检查访问的域名解析是否为该服务器IP
           2、检查访问的域名是否做了我司转发解析m.938030968.com
               以上没有问题,检查空间是否对该扩展名支持
               检查方法:上传探针文件
                   1)php文件不支持  新建txt文件,重命名为.php文件,内部写入以下代码<?php phpinfo(); ?>
                   2)asp文件不支持  新建txt文件,重命名为.asp文件,内部写入以下代码<%  Response.Write "test" %>
                   3)aspx文件不支持  新建txt文件,重命名为.aspx文件,内部写入任意内容 如:test
                   以上调试中如果测试页面也报错404,可以断定为服务器不支持该程序,需要打开IIS-主目录-配置-添加应用程序扩展
                   具体联系我司客服人员咨询
                   4)其他特殊扩展文件名不支持 如.doc,.flv,.MP3...
                       虚拟主机没有添加相关的MIME映射
                       打开IIS-右键属性-HTTP头-MIME类型-新建对应的MIME扩展名
                       具体联系我司客服人员咨询
       3)程序使用了伪静态,
            1、主机不支持伪静态功能
                测试伪静态:
                  我司空间检查服务器是否支持伪静态:
                  上传.htaccess文件,写入规则RewriteRule ^(.*)$ http://baidu.com/$1 [R=301,L]
                  访问首页成功正常跳转到百度,伪静态功能运行正常

     


HTTP状态码(HTTP Status Code)
  • 1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码。
       100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
       101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。
    2xx (成功)表示成功处理了请求的状态代码。
       200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
       201 (已创建) 请求成功并且服务器创建了新的资源。
       202 (已接受) 服务器已接受请求,但尚未处理。
       203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。
       204 (无内容) 服务器成功处理了请求,但没有返回任何内容。
       205 (重置内容) 服务器成功处理了请求,但没有返回任何内容。
       206 (部分内容) 服务器成功处理了部分 GET 请求。
    3xx (重定向)表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。
       300 (多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
       301 (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
       302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
       303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
       304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
       305 (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
       307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
    4xx(请求错误)这些状态代码表示请求可能出错,妨碍了服务器的处理。
       400 (错误请求) 服务器不理解请求的语法。
       401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
       403 (禁止) 服务器拒绝请求。
       404 (未找到) 服务器找不到请求的网页。
       405 (方法禁用) 禁用请求中指定的方法。
       406 (不接受) 无法使用请求的内容特性响应请求的网页。
       407 (需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
       408 (请求超时) 服务器等候请求时发生超时。
       409 (冲突) 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。
       410 (已删除) 如果请求的资源已永久删除,服务器就会返回此响应。
       411 (需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。
       412 (未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。
       413 (请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
       414 (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
       415 (不支持的媒体类型) 请求的格式不受请求页面的支持。
       416 (请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码。
       417 (未满足期望值) 服务器未满足”期望”请求标头字段的要求。
    5xx(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。
       500 (服务器内部错误) 服务器遇到错误,无法完成请求。
       501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
       502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
       503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
       504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
       505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。


php程序报错session_start()headers already sent
  • 症状:  

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/wwwroot/xueyuqh/wwwroot/configuration.php:1) in /var/www/wwwroot/xueyuqh/wwwroot/libraries/joomla/session/session.php on line 423

    原因:

    headers already sent,产生 cookie 前,先延缓资料输出至浏览器。可能是由挂马导致或者程序本身含有输出内容,文件编码不对。

    解决办法:

       1)检查对应报错文件是否含有非法输出内容
       2)检查文件编码方式,替换成其他编码,如常用的utf-8等



如何在访问网站遇到错误可以让浏览器显示出来
  • 这个问题主要是针对IE浏览器的,操作步骤如下:

       1、打开IE浏览器点击菜单栏上面的“工具 > Internet 选项”或者在桌面上鼠标右键点击IE图标,然后打开“属性”。
       2、在弹出来的“Internet 选项”选项卡对话框中点击“高级”选项卡,在“设置”列表里面找到“显示友好 http 错误信息”把勾去掉,最后点击“应用”按钮保存,再点击“确认”按钮关闭对话框,重启浏览器。以后访问网站如果遇到网站无法访问、http500等错误就可以具体显示出错的信息了。

域名访问网站报“Bad Request”错误
  • 错误请求(无效主机名)

    域名已绑定主机
       但主机未绑定域名就会出现这种情况!
       总结页面出现Bad Request (Invalid Hostname)的原因:
       1.如果确定域名已经解析生效,但是仍然不能访问,出现Bad Request (Invalid Hostname).那么这就可能是您没有绑定该域名的原因
       2.也有一部分情况, 比如一部分程序你上传之后就是用服务商提供的三级域名访问也是那个样子。也会有Bad Request (Invalid Hostname的错误提示
       3.域名未解析到帮定的主机,也会出现此种情况


各种脚本语言获取客户端真实IP的方法
  • 各种语言获取客户端真是ip的方法

    1.PHP脚本获取客户端真实ip的方法

    整体思路:需要依次检查HTTP_CLIENT_IP、HTTP_X_FORWARDED_FOR、REMOTE_ADDR这三个是否

    存在,只要一旦有一个存在就结束


    获取示例代码:


    function GetIP(){

    if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))

    $ip = getenv("HTTP_CLIENT_IP");

    else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))

    $ip = getenv("HTTP_X_FORWARDED_FOR");

    else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))

    $ip = getenv("REMOTE_ADDR");

    else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))

    $ip = $_SERVER['REMOTE_ADDR'];

    else

    $ip = "unknown";

    return($ip);

    }


    其中对获取ip的三个属性HTTP_VIA、HTTP_X_FORWARDED_FOR、REMOTE_ADDR在使用代理服务器时获取的情况

    一、没有使用代理服务器的情况:

    REMOTE_ADDR = 自己的真实IP

    HTTP_VIA = 没数值或不显示

    HTTP_X_FORWARDED_FOR = 没数值或不显示



    二、使用Transparent Proxies(透明代理)服务器的情况

    REMOTE_ADDR = 最后一个代理服务器IP

    HTTP_VIA = 代理服务器IP

    HTTP_X_FORWARDED_FOR = 自己的真实IP


    三、使用Anonymous Proxies(匿名代理)服务器的情况

    REMOTE_ADDR = 最后一个代理服务器IP

    HTTP_VIA = 代理服务器IP

    HTTP_X_FORWARDED_FOR = 代理服务器IP


    四、使用Distorting Proxies(欺骗代理)服务器的情况:

    REMOTE_ADDR = 代理服务器IP

    HTTP_VIA = 代理服务器IP

    HTTP_X_FORWARDED_FOR = 随机IP,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。


    五、使用Elite Proxies服务器的情况

    REMOTE_ADDR = 代理服务器IP

    HTTP_VIA = 没有数值或不显示

    HTTP_X_FORWARDED_FOR = 没有数值或不显示,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。


    综上来看,PHP获取客户端真实IP的方法并不是能够百分之百成功的。


    2.ASP脚本获取客户端真实ip的方法

    获取的思路和PHP脚本的类似,也是通过判断HTTP_X_FORWARDED_FOR、REMOTE_ADDR来获取的

    但是由于客户端使用代理服务器缘故,并不能保证100%能够获取客户端真实ip


    Private Function getIP()

      Dim strIPAddr

      If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" OR InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "unknown") > 0 Then

      strIPAddr = Request.ServerVariables("REMOTE_ADDR")

      ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") > 0 Then

      strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")-1)

      ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";") > 0 Then

      strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";")-1)

      Else

      strIPAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR")

      End If

      getIP = Trim(Mid(strIPAddr, 1, 30))

      End Function


    3.C#获取客户端真实ip的方法

    获取函数的思路类似,见如下代码:


    public static string GetIPAddress()

       {

           string user_IP = string.Empty;

           if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)

           {

               if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)

               {

                   user_IP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();

               }

               else

               {

                   user_IP = System.Web.HttpContext.Current.Request.UserHostAddress;

               }

           }

           else

           {

               user_IP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();

           }

           return user_IP;


    4.Java获取客户端真实ip的方法

    package com.viathink.utils;       //需要的Java包

    import javax.servlet.http.HttpServletRequest ;   //导入方法


    public static String getIpAddr(HttpServletRequest request) {

    String ip = request.getHeader("X-Forwarded-For");

    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

    ip = request.getHeader("Proxy-Client-IP");

    }

    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

    ip = request.getHeader("WL-Proxy-Client-IP");

    }

    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

    ip = request.getHeader("HTTP_CLIENT_IP");

    }

    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

    ip = request.getHeader("HTTP_X_FORWARDED_FOR");

    }

    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

    ip = request.getRemoteAddr();

    }

    return ip;

    }

    }


    5.Python获取客户端真实ip的方法

    代码如下:

    def get_client_ip(request):

    try:

       real_ip = request.META['HTTP_X_FORWARDED_FOR']

       regip = real_ip.split(",")[0]

    except:

       try:

           regip = request.META['REMOTE_ADDR']

       except:

           regip = ""

    return regip


Microsoft JET Database Engine 错误 '80040e21'
  • 如果处理数据库“字段太小而不能接受所要添加的数据的数量。试着插入或粘贴较少的数据。”的错误。

       这种情况一般发生在office access数据库上。access数据库与我们所熟知的mysql、mssql不同,它的字段中的一个文本类型的存储内容大小是按照字符来计算的最大为255个字符。
    最容易发生的就是从mssql数据库转换成access数据库,因为mssql是以字节来计算存储内容大小的,但是转换到access上之后会自动变为字符,所以在对这样的字段做写入操作的时候
    如果内容超出了字段所设定的字符数将会报以下错误,我们只需要把报错字段的字符限制改大就可以了。Microsoft JET Database Engine 错误 '80040e21'字段太小而不能接受所要添加的数据的数量。试着插入或粘贴较少的数据。