一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Backend

解决Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future:

php 5个版本,5.2、5.3、5.4、5.5,怕跟不上时代,新的服务器直接上5.5,但是程序出现如下错误:Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in,看意思就很明了,说mysql_connect这个模块将在未来弃用,请你使用mysqli或者PDO来替代。 解决方法1: 禁止php报错 display_errors = On 改为 display_errors = Off 鉴于这个服务器都是给用户用的,有时候他们需要报错(…都是给朋友用的,^_^),不能这做,让他们改程序吧,看方案2. 解决方法2: 常用的php语法连接mysql如下 <?php $link = mysql_connect('localhost', 'user', 'password'); mysql_select_db('dbname', $link); 改成mysqi <?php $link = mysqli_connect('localhost', 'user', 'password', 'dbname'); 常用mysql建表SQL如下 <?php //  老的 mysql_query('CREATE TEMPORARY TABLE table', $link); // 新的 mysqli_query($link, 'CREATE TEMPORARY TABLE table'); 解决方法三: 在php程序代码里面设置报警级别 <?php error_reporting(E_ALL ^ E_DEPRECATED); Deprecated的问题就这样解决掉了,不过还是建议大家尽快取消mysql的用户,全部都走向mysqli或者mysqlnd等等。mysql确实是太不安全而且太老旧了。 转载请注明出处:http://www.ttlsa.com/html/2502.html

龙生   21 Sep 2015
View Details

ASP.NET MVC3 Model验证总结

ASP.NET MVC3中的Model是自验证的,这是通过.NET4的System.ComponentModel.DataAnnotations命名空间完成的。 我们要做的只是给Model类的各属性加上对应的验证标记(Attributes)就可以让MVC3框架帮我们完成验证。我以MVC3项目模板自带的登录 做例子讲解Model的验证。 一、启用客户端验证: 客户端验证主要是为了提高用户体验,在网页不回刷的情况下完成验证。 第一步是要在web.config里启用客户端验证,这在MVC3自带的模板项目中已经有了: <add key="ClientValidationEnabled" value="true"/> <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 然后在被验证的View页面上要加入这样两个JavaScript,注意,他们是依赖于JQuery的: <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 验证消息的显示有两种,一种是ValidationSummary,它可以显示一份验证消息的汇总,包括从后台Action里返回的消息。 @Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.") 另一种是Model中各属性对应HTML控件的验证消息: @Html.ValidationMessageFor(m => m.UserName) 二、在Model中加入验证标记 MVC3项目模板自带的登录模型类如下: public class LogOnModel {     [Required]     [Display(Name = "User name")]     public string UserName { get; set; }     [Required]     [DataType(DataType.Password)]     [Display(Name = "Password")]     public string Password { get; set; }     [Display(Name = "Remember me?")]     public bool RememberMe { get; set; } } 对比普通的C#类,我们发现每个属性上都多了被方括号“[]”包围的标记。其中,[Required]是验证标记的一种,而[Display]、[DataType]则是为了显示对应的HTML控件,这不在本文讨论范围之内。 除了Required,我们还可以在Model中添加其他有用的验证标记。下面是个较完整的列表: Model类中可以添加的验证标记: 1. 必填字段 [Required] public string FirstName { […]

龙生   15 Sep 2015
View Details

解决【FastCGI 进程超过了配置的活动超时时限】

近日,需要满足测试需求,进行大数据并发测试时,报出【HTTP 错误 500.0 – Internal Server Error E:\PHP\php-cgi.exe – FastCGI 进程超过了配置的活动超时时限】 解决办法: IIS7->FastCGI设置->双击"php-cgi.exe"->"活动超时" 项默认是设置为70(秒),改为600(10分钟,此处根据需求设置可以略高~)   from:http://blog.csdn.net/abandonship/article/details/8730524

龙生   14 Sep 2015
View Details

Nginx配置文件nginx.conf中文详解

#定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数。 worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log /var/log/nginx/error.log info; #进程文件 pid /var/run/nginx.pid; #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。 worker_rlimit_nofile 65535; #工作模式与连接数上限 events { #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。 use epoll; #单个进程最大连接数(最大连接数=连接数*进程数) worker_connections 65535; } #设定http服务器 http { include mime.types; #文件扩展名与文件类型映射表 default_type application/octet-stream; #默认文件类型 #charset utf-8; #默认编码 server_names_hash_bucket_size 128; #服务器名字的hash表大小 client_header_buffer_size 32k; #上传文件大小限制 large_client_header_buffers 4 64k; #设定请求缓 client_max_body_size 8m; #设定请求缓 sendfile on; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。 autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。 […]

龙生   13 Sep 2015
View Details

终于装好drupal了,不过却出问题了-文件无法创建

Warning: file_put_contents(): Filename cannot be empty 在 file_unmanaged_save_data() (行 1937 在 D:\WEBSITE\dabeizhou.org\includes\file.inc). 文件无法创建。 Warning: file_put_contents(): Filename cannot be empty 在 file_unmanaged_save_data() (行 1937 在 D:\WEBSITE\dabeizhou.org\includes\file.inc). 文件无法创建。 解决方法: 在 管理 >> 配置 >> 媒体 >>文件系统 里面看看你的临时文件路径是什么,是不是有写权限。

龙生   10 Sep 2015
View Details

Windows 7/8.1新补丁也开始收集用户数据

你可能已经听说过Windows 10会在默认情况下收集用户的数据,虽然微软声称这是为了提供个人化服务和体验,仍有不少用户对个人数据非常谨慎,不过我们已经发布了如何关闭 Windows 10自动搜索数据的方法。根据外媒on gHacks博文报道,最近微软面向Windows 7和Windows 8.1的新补丁也带来了一些搜集用户数据及追踪操作记录的功能。 涉及这些功能的更新包括KB3068708,KB3022345,KB3075249,KB3080149,均包含了会搜集用户数据的 Diagnostics and Telemetry分析与记录追踪服务,或者UAC自动记录点功能。如何做来关闭这些烦人的用户数据搜集选项?首先你可以避免安装这4个补丁,如果你已经 安装可以通过控制面板卸载这项补丁。或者进入命令行界面输入下列命令来卸载这项补丁。 wusa /uninstall /kb:3068708 /quiet /norestart wusa /uninstall /kb:3022345 /quiet /norestart wusa /uninstall /kb:3075249 /quiet /norestart wusa /uninstall /kb:3080149 /quiet /norestart 并且确保Windows Update更新机制中“隐蔽”这些特定的补丁,以免系统再次尝试下载安装。   from:http://www.oschina.net/news/65699/windows-7-8.1-patch-s-trick

龙生   30 Aug 2015
View Details

C和C++的区别介绍

 C++虽然主要是以C的基础发展起来的一门新语言 C++虽然主要是以C的基础发展起来的一门新语言,但她不是C的替代品,不是C的升级,C++和C是兄弟关系。没有谁比谁先进的说法,更重要的一点是C和C++各自的标准委员会是独立的,最新的C++标准是C++98,最新的C标准是C99.因此也没有先学C再说C++的说法,也不再(注意这个"不再")有C++语法是C语法的超集的说法。  C++/CLI 和 C# 是微软的 C++/CLI 和 C# 是微软的,它们与C和C++没有任何关系,虽然部分语法相似。但哪两种语言不相似呢?都是abc这26个字母。  不要使用TC/TC++/BC/CB等古老的编译器来学习C/C++ 不要使用TC/TC++/BC/CB等古老的编译器来学习C/C++,因为它们太古老了,不支持新的C/C++标准。不要使用CBX/VC++6.0/VC2005等对C/C++标准支持不好的编译器,虽然这些编译器适合工作,但不适合学习,因为它们中的语法陷阱很多。记住唯一适合学习的编译器是gcc/mingw.[antigloss注:Dev-C++ 使用的编译器就是gcc & g++]  不要用""代替<>来包含系统头文件 不要用""代替<>来包含系统头文件,虽然有些编译器允许你这样做,但它不符合C/C++标准。错误的示例:#include "stdio.h",#include "iostream".[antigloss注:习惯上,<> 用于包含标准头文件和系统头文件,"" 用于包含自定义头文件。标准似乎没有明确规定不准用 "" 包含标准头文件和系统头文件。使用 "" 包含标准头文件或者系统头文件只能说是一种不良风格。]  不要将main函数的返回类型定义为void 不要将main函数的返回类型定义为void,虽然有些编译器允许你这样做,但它不符合C/C++标准。不要将函数的int返回类型省略不写,在C++中要求编译器至少给一个警告。错误的示例:void main() {},main() {} [antigloss注:C99和C++98都要求编译器对省略int至少发出一个警告]如果不需要从命令行中获取参数,请用int main(void) ;否则请用int main( int argc, char *argv[] )  不要把VC++中的 #include "stdafx.h" 贴出来 不要把VC++中的 #include "stdafx.h" 贴出来,它是预编译头文件。如同上菜时不要把厨师也放到托盘中。  [C++]不要#include <iostream.h> [C++]不要#include <iostream.h>,不要#include <string.h>,因为它们已经被C++标准明确的废弃了,请改为 #include <iostream> 和 #include <cstring>.规则就是: a. 如果这个头文件是旧C++特有的,那么去掉。h后缀,并放入std名字空间, 比如 iostream.h 变为 iostream. b. 如果这个头文件是C也有的,那么去掉。h后缀,增加一个c前缀,比如 string.h 变为 cstring;stdio.h 变为 cstdio, 等等。 BTW:不要把string、cstring、string.h三个头文件搞混淆 BTW:windows.h不是C/C++的标准文件,因此它的命名C/C++不管。

龙生   30 Aug 2015
View Details

MVC 自定义AuthorizeAttribute实现权限管理

在上一节中提到可以使用AuthorizeAttribute进行权限管理:

但是通常情况下,网站的权限并不是固定不变的,当新增角色或者角色改变时,只能修改每个Action对应的特性,当项目较大时工作量可想而知。幸运的是我们可以重写AuthorizeAttribute达到自定义的权限管理。新建一个CustomAuthorizeAttribute类,使这个类继承于AuthorizeAttribute。打开AuthorizeAttribute查看下方法说明,我们只需要重写AuthorizeCore和OnAuthorization就能达到我们的目的。  

    在CustomAuthorizeAttribute中重载AuthorizeCore方法,它的处理逻辑如下:首先判断当前账户是否被认证,如果没有,则返回false;然后获取当前账户的类型,并跟给定的类型进行比较,如果类型相同,则返回true,否则返回false。一般网站中权限管理都会使用权限树,然后将角色的权限保存至数据库或者文件中,本例中我们使用XML文件保存每个Action的角色,这样在用户请求Action时,由XML文件获取Action对应的权限,然后检测账户是否有相应的权限。CustomAuthorizeAttribute类的代码如下:  

  当用户请求一个Action时,会调用OnAuthorization方法,该方法中GetRoles.GetActionRoles(actionName, controllerName);根据Controller和Action去查找当前Action需要具有的角色类型,获得Action的Roles以后,在AuthorizeCore中与用户的角色进行比对Roles.Any(httpContext.User.IsInRole),如果没有相应权限则返回false,程序就会自动跳转到登录页面。   GetRoles为XML解析类,代码如下:

  相应的权限XMl文件:  

  当需求发生变化时,只需要修改XML文件即可 使用时,只需要在FilterConfig中注册该filter

  当然这只是一个简单的例子,实际应用中会复杂许多,还可能要实现在即的MemberShipProvider和RoleProvider from:http://www.cnblogs.com/jyan/archive/2012/07/24/2606646.html

龙生   28 Aug 2015
View Details

ASP.NET 4.0尚未在 Web 服务器上注册 解决方法

使用VS2010创建web应用程序时出现如下提示ASP.NET 4.0尚未在 Web 服务器上注册。为了使网站正确运行,可能需要手动将 Web 服务器配置为使用 ASP.NET 4.0,按 F1 可了解更多详细信息   解决方法: 首先设置IIS应用程序池 net framework版本为4.0   然后  开始->所有程序->附件->鼠标右键点击“命令提示符”->以管理员身份运行->%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i   from:http://www.cnblogs.com/lvxiouzi/p/3511446.html

龙生   27 Aug 2015
View Details

IIS7以CGI方式运行Python脚本

由于接触到Python Web开发,正好把最简单的CGI方式研究了一下,话说在Windows下配置Python的Web开发还真的蛮麻烦的,Linux下配置倒挺容易,正好微软有技术文章《Using Python Scripts with IIS》介绍了这些内容,此文介绍了两种方法,一是使用ASP引擎来运行Python脚本,这个可能需要用到ActivePython,当然ASP技术已经过时了,我今天就简单介绍下CGI模块运行方式。 编写简单的支持CGI的Python脚本(本文介绍3.2版本的Python):

这样就可以了,大家可以猜出CGI是将标准输出流重新定向到HTTP输出流来实现网页或者数据传输的。 当然这个在IIS中是不能直接运行的,我们需要配置一下,打开Internet 信息服务(IIS)管理器界面,选择“处理程序映射”。   在接下来出现的界面右侧选择“添加模块映射”。   假设我们的Python 3.2安装于C:\Python32,那么可以向下图这样填写:   然后点击确定,在接下来出现的对话框选择“是”。   好了,我们的配置完成了,重启一下IIS,然后赶快试试刚才的代码吧。可能有人会抱怨,用CGI编写网页一旦报错调试会比较麻烦,比如报下面的错误:

其实我们只需要在最开始引入import cgitb; cgitb.enable()就可以了,就像下面这样:

这样一旦出错,就会以友好的方式将错误输出来。 对于表单的处理,可以参考import cgi模块(cgi.FieldStorage),网上有很多此方面的介绍,我就不多说了,Enjoy it! from:http://wangye.org/blog/archives/684/

龙生   18 Aug 2015
View Details
1 207 208 209 282