通过反射机制,返回PHP所有方法

获取php类的方法有get_class_methods(),但这个只能获取public类型的。 获取private类型的需要用到php中的反射类ReflectionClass(),例: function get_all_class_methods($class){ $r = new ReflectionClass($class); foreach($r->getMethods() as $k=>$v){ $methods[$k][‘name’] = $v->name; $methods[$k][‘class’] = $v->class; $methods[$k][‘type’] = ‘public’; if($v->isPrivate()){ $methods[$k][‘type’] = ‘private’; } if($v->isProtected()){ $methods[$k][‘type&

查看更多

mysql存储过程详解

mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。 存储过程通常有以下优点: (1).存储过程增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 (2).存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 (3).存储过程能实现较快的执行速度。如果某一操作包含大量的Tran

查看更多

检测浏览器语言

如果你的网站上有多种语言,那么可以使用这段代码作为默认的语言来检测浏览器语言。该段代码将返回浏览器客户端使用的初始语言 function get_client_language($availableLanguages, $default=’en’){     if (isset($_SERVER[‘HTTP_ACCEPT_LANGUAGE’])) {         $langs=explode(‘,’,$_SERVER[‘HTTP_ACCEPT_LANGUAGE’]);         foreach ($langs as $value){             $choice=substr($value,0,2);             if(in_array($choice, $availableLanguages)){                 return $choice;             }         }     }     return $default; }

查看更多

全角半角转换

 function make_semiangle($str) { $arr = array(‘0’ => ‘0’, ‘1’ => ‘1’, ‘2’ => ‘2’, ‘3’ => ‘3’, ‘4’ => ‘4’, ‘5’ => ‘5’, ‘6’ => ‘6’, ‘7’ => ‘7’, ‘8’ => ‘8’, ‘9’ => ‘9’, ‘A’ => ‘A’, ‘B’ => &#8

查看更多

高级PHP应用程序漏洞审核技术

PHP 是一种被广泛使用的脚本语言,尤其适合于web开发。具有跨平台,容易学习,功能强大等特点,据统计全世界有超过34%的网站有php的应用,包括 Yahoo、sina、163、sohu等大型门户网站。而且很多具名的web应用系统(包括bbs,blog,wiki,cms等等)都是使用php开 发的,Discuz、phpwind、phpbb、vbb、wordpress、boblog等等。随着web安全的热点升级,php应用程序的代码安全 问题也逐步兴盛起来,越来越多的安全人员投入到这个领域,越来越多的应用程序代码漏洞被披露。针对这样一个状况,很多应用程序的官方都成立了安全部门,或 者雇佣安全人员进行代码审计,因此出现了很多自动化商业化的代码审计工具。也就是这样的形势导致了一个局面:大公司的产品安全系数大大的提高,那些很明显 的漏洞基本灭绝了,那些大家都知道的审计技术都无用武之地了。我们面对很多工具以及大牛扫描过n遍的代码,有很多的安全人员有点悲观,而有的官方安全人员 也非常的放心自己的代码,但是不要忘记了“没有绝对的安全”,我们应该去寻找新的途径挖掘新的漏洞。本文就给介绍了一些非传统的技

查看更多

nginx做过负载均衡后获取真实客户端ip

ha-proxy 服务器做过负载均衡,客户端的数据是从A服务器转发到B服务器,在B服务器用ngx.var.remote_addr获取的是A服务器IP,而不是客户端IP。想获取客户端ip有没有其他办法? #负载均衡服务器添加 location /action{           #proxy_redirect      off;           #保存用户真实信息 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://adunion_manager; } 在nginx的配置文件中,有诸如下面的日志配置: log_format  main          ‘$remote_addr – [$time_local] “$request” ‘ ‘$status $body_b

查看更多

MySQL备份与恢复的三种方法总结

一.测试环境准备 1.1 mysql的安装就不说了,见 http://www.linuxidc.com/Linux/2012-04/58990.htm 1.2 编缉/etc/my.cnf把二进制日志存放目录改到其它非数据目录,innodb每表一文件 建立一目录用于存放二进制日志 mkdir /mybinlog chown mysql:mysql /mybinlog 修改my.cnf vim /etc/my.cnf log-bin=/mybinlog/mysql-bin ##二进制日志目录及文件名前缀 innodb_file_per_table = 1 ##启用InnoDB表每表一文件,默认所有库使用一个表空间 启动mysqld service mysqld start 1.3 创建一个测试库与测试表 mysql> create database laoguang; mysql> use laoguang; mysql> create table linux (id tinyint auto_increment primary key,name char(10)); m

查看更多

如何调整MySQL查询缓冲

  QueryCache(下面简称QC)是根据SQL语句来cache的。一个SQL查询如果以select开头,那么MySQL服务器将尝试对其使用QC。每个Cache都是以SQL文本作为key来存的。在应用QC之前,SQL文本不会被作任何处理。也就是说,两个SQL语句,只要相差哪怕是一个字 符(例如大小写不一样;多一个空格等),那么这两个SQL将使用不同的一个CACHE。 不过SQL文本有可能会被客户端做一些处理。例如在官方的命令行客户端里,在发送SQL给服务器之前,会做如下处理: 过滤所有注释,去掉SQL文本前后的空格,TAB等字符。注意,是文本前面和后面的。中间的不会被去掉。 下面的三条SQL里,因为SELECT大小写的关系,最后一条和其他两条在QC里肯定是用的不一样的存储位置。而第一条和第二条,区别在于后者有个注释, 在不同客户端,会有不一样的结果。所以,保险起见,请尽量不要使用动态的注释。在PHP的mysql扩展里,SQL的注释是不会被去掉的。也就是三条SQL会被存储在三个不同的缓存里,虽然它们的结果都是一样的。 select * FROM people where name=&

查看更多

十个节省时间的MySQL命令

虽然有许多基于GUI的MySQL客户端存在,如著名的phpMyAdmin和SQLYog,但我一直喜欢原生的MySQL命令行客户端,的确,在未熟悉这些命令行接口(CLI)之前,我们需要花一些时间来熟悉它们,特别是你平时不是经常在具有强大的CLI环境的操作系统下工作时,但只要经过一些练习,你就可以通过CLI管理用户,浏览你的数据库和执行其它任务,其快感是其它人体会不到的。   在这篇文章中,我将会介绍我在工作中积累起来的一些MySQL命令行客户端技巧,不管你尝试其中一个还是所有技巧,我敢保证你一定会节省大量的时间。   顺便提一下,MySQL命令行客户端适应所有操作系统,当然包括Windows,但因为Windows原生CLI环境让人畏惧,因此推荐Windows用户下载并安装Console,它是Windows命令行的一个替代解决方案,提供了更强大的功能,如方便的文本选择,多标签窗口等。   1、登录过程自动化   正确配置的MySQL服务器需要你提供用户名和密码进行身份验证,通常情况下,我们可以直接在mysql命令后加上用户名,出于安全考虑,密码就不跟上了,回车执行时,命令提示符会提醒你输入

查看更多

js操作cookie方法

//js获取cookie /*获取Cookie值*/ function getCookie(c_name) { if(document.cookie.length>0){    c_start=document.cookie.indexOf(c_name + “=”)    if(c_start!=-1){      c_start=c_start + c_name.length+1      c_end=document.cookie.indexOf(“;”,c_start)      if(c_end==-1) c_end=document.cookie.length      return unescape(document.cookie.substring(c_start,c_end))    } } return “” } **********************************//JS操作cookies方法! **************************************

查看更多