错误处理在处理程序设计中的重要性是毋庸置疑的,任何有影响力的web应用程序都需要一套完善的错误处理机制。当然,大多数佼佼者确实做到了这一点,但通常只有服务器端应用程序才能做到如此。实际上,服务器端团队往往会在错误处理机制上投入较大精力,通常要考虑按照类型、频率,或者其他重要的标准对错误进行分类。这样一来,开发人员就能够理解用户在使用简单数据库查询或者报告生成脚本时,应用程序可能会出现的问题。

- 阅读剩余部分 -

nignx运行PHP PHP_SELF为空
设置php.ini
cgi.fix_pathinfo=1
但是 这样会存在漏洞
【漏洞分析】location对请求进行选择的时候会使用URI环境变量进行选择,其中传递到后端Fastcgi的关键变量SCRIPT_FILENAME由nginx生成的$fastcgi_script_name决定,而通过分析可以看到$fastcgi_script_name是直接由URI环境变量控制的,这里就是产生问题的点。而为了较好的支持PATH_INFO的提取,在PHP的配置选项里存在cgi.fix_pathinfo选项,其目的是为了从SCRIPT_FILENAME里取出真正的脚本名。

fucntion upper(n) {
  n = '' + n;
  if (!/(^[1-9]\d*$)/) {
    return '非法数字';
  }
  var uppercase = '千百亿千百十万千百十个';
  var nLength = n.length;
  var newStr = '';
  if (uppercase.length - nLength < 0) {
    return '数字过长';
  }
  uppercase = uppercase.substr(uppercase.length - nLength);
  for (var i = 0; i < nLength; i++) {
    newStr += '零一二三四五六七八九'.charAt(n[i]) + uppercase.charAt(i);
  };
  newStr = newStr.substr(0, newStr.length - 1);
  console.log(n,newStr);
  return newStr;
}

同大多数 VCS 一样,Git 也可以对某一时间点上的版本打上标签。人们在发布某个软件版本(比如 v1.0 等等)的时候,经常这么做。本节我们一起来学习如何列出所有可用的标签,如何新建标签,以及各种不同类型标签之间的差别

- 阅读剩余部分 -