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

Category Archives: PHP

好用的 CURL 类

cURL 是一个利用 URL 语法规定来传输文件和数据的工具,支持很多协议,如 HTTP、FTP、TELNET 等。最爽的是,PHP 也支持 cURL 库。使用 PHP 的 cURL 库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了。无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内容. 在我们写 SOA 服务化项目的时候, 总是要定义许多 API 接口为功能提供服务, 那么这个时候 cURL 就发挥了它巨大的作用. 这里分享一下自己封装的 cURL 方法

  使用方法

from:https://laravel-china.org/articles/2768/easy-to-use-curl-class

龙生   25 May 2018
View Details

PHP 获取客户端ip地址

一、如果没有使用代理服务器, REMOTE_ADDR = 客户端IP    HTTP_X_FORWARDED_FOR = 没数值或不显示

  二、使用透明代理, REMOTE_ADDR = 最后一个代理服务器 IP   HTTP_X_FORWARDED_FOR = 客户端真实 IP (经过多个代理服务器时,这个值类似:221.5.252.160, 203.98.182.163, 203.129.72.215) 这类代理还会将客户真实ip发送到请求对象,无法隐藏真实ip。

三、使用普通匿名代理服务器, REMOTE_ADDR = 最后一个代理服务器 IP   HTTP_X_FORWARDED_FOR = 代理服务器 IP (经过多个代理服务器时,这个值类似:203.98.182.163, 203.98.182.163, 203.129.72.215) 这样就隐藏了客户端的真实ip,但服务器会知道客户端是通过代理服务器去访问的。 四、使用欺骗性代理服务器, REMOTE_ADDR = 代理服务器 IP   HTTP_X_FORWARDED_FOR = 随机的 IP(经过多个代理服务器时,这个值类似:220.4.251.159, 203.98.182.163, 203.129.72.215) 服务器可以识别到时通过代理服务器访问的,但发送给目标服务器的是虚假ip。 五、使用高匿名代理, REMOTE_ADDR = 代理服务器 IP       HTTP_X_FORWARDED_FOR = 没数值或不显示 使用这种代理时,不同浏览器不同设备会返回不同的ip头信息,因此PHP使用$_SERVER["REMOTE_ADDR"] 、$_SERVER["HTTP_X_FORWARDED_FOR"] 获取的值可能是空值也可能是“unknown”值。 PHP获取ip代码如下:

from:https://www.cnblogs.com/rendd/p/6183094.html

龙生   25 May 2018
View Details

php判断请求类型(ajax|get|post|cli)

  from:https://blog.csdn.net/wujiangwei567/article/details/72772783

龙生   23 May 2018
View Details

Nginx URL重写(rewrite)配置及信息详解

URL重写有利于网站首选域的确定,对于同一资源页面多条路径的301重定向有助于URL权重的集中 Nginx URL重写(rewrite)介绍 和apache等web服务软件一样,rewrite的组要功能是实现RUL地址的重定向。Nginx的rewrite功能需要PCRE软件的支持,即通过perl兼容正则表达式语句进行规则匹配的。默认参数编译nginx就会支持rewrite的模块,但是也必须要PCRE的支持 rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到replacement,结尾是flag标记。 rewrite语法格式及参数语法说明如下:     rewrite    <regex>    <replacement>    [flag]; 关键字      正则        替代内容          flag标记   关键字:其中关键字error_log不能改变 正则:perl兼容正则表达式语句进行规则匹配 替代内容:将正则匹配的内容替换成replacement flag标记:rewrite支持的flag标记   flag标记说明: last  #本条规则匹配完成后,继续向下匹配新的location URI规则 break  #本条规则匹配完成即终止,不再匹配后面的任何规则 redirect  #返回302临时重定向,浏览器地址会显示跳转后的URL地址 permanent  #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址 rewrite参数的标签段位置: server,location,if 例子: rewrite ^/(.*) http://www.czlun.com/$1 permanent; 说明: rewrite为固定关键字,表示开始进行rewrite匹配规则 regex部分是 ^/(.*) ,这是一个正则表达式,匹配完整的域名和后面的路径地址 replacement部分是http://www.czlun.com/$1 $1,是取自regex部分()里的内容。匹配成功后跳转到的URL。 flag部分 permanent表示永久301重定向标记,即跳转到新的 http://www.czlun.com/$1 地址上 regex 常用正则表达式说明 字符 描述 \ 将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如“\n”匹配一个换行符,而“\$”则匹配“$” ^ 匹配输入字符串的起始位置 $ 匹配输入字符串的结束位置 * 匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll” + 匹配前面的字符一次或多次。如“ol+”能匹配“ol”及“oll”、“oll”,但不能匹配“o” ? 匹配前面的字符零次或一次,例如“do(es)?”能匹配“do”或者“does”,"?"等效于"{0,1}" . 匹配除“\n”之外的任何单个字符,若要匹配包括“\n”在内的任意字符,请使用诸如“[.\n]”之类的模式。 (pattern) 匹配括号内pattern并可以在后面获取对应的匹配,常用$0…$9属性获取小括号中的匹配内容,要匹配圆括号字符需要\(Content\) rewrite 企业应用场景 Nginx的rewrite功能在企业里应用非常广泛: u 可以调整用户浏览的URL,看起来更规范,合乎开发及产品人员的需求。 u 为了让搜索引擎搜录网站内容及用户体验更好,企业会将动态URL地址伪装成静态地址提供服务。 u 网址换新域名后,让旧的访问跳转到新的域名上。例如,访问京东的360buy.com会跳转到jd.com u 根据特殊变量、目录、客户端的信息进行URL调整等 Nginx配置rewrite过程介绍 (1)创建rewrite语句 vi conf/vhost/www.abc.com.conf #vi编辑虚拟主机配置文件 文件内容 server { listen 80; server_name abc.com; rewrite ^/(.*) http://www.abc.com/$1 permanent; }     server { listen 80; server_name www.abc.com; […]

龙生   21 May 2018
View Details

PDOStatement::fetch

说明 语法

  从一个 PDOStatement 对象相关的结果集中获取下一行。fetch_style 参数决定 POD 如何返回行。 参数 fetch_style 控制下一行如何返回给调用者。此值必须是 PDO::FETCH_* 系列常量中的一个,缺省为 PDO::ATTR_DEFAULT_FETCH_MODE 的值 (默认为 PDO::FETCH_BOTH )。 PDO::FETCH_ASSOC:返回一个索引为结果集列名的数组 PDO::FETCH_BOTH(默认):返回一个索引为结果集列名和以0开始的列号的数组 PDO::FETCH_BOUND:返回 TRUE ,并分配结果集中的列值给PDOStatement::bindColumn() 方法绑定的 PHP 变量。 PDO::FETCH_CLASS:返回一个请求类的新实例,映射结果集中的列名到类中对应的属性名。如果 fetch_style 包含 PDO::FETCH_CLASSTYPE(例如:PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE),则类名由第一列的值决定 PDO::FETCH_INTO:更新一个被请求类已存在的实例,映射结果集中的列到类中命名的属性 PDO::FETCH_LAZY:结合使用 PDO::FETCH_BOTH 和 PDO::FETCH_OBJ,创建供用来访问的对象变量名 PDO::FETCH_NUM:返回一个索引为以0开始的结果集列号的数组 PDO::FETCH_OBJ:返回一个属性名对应结果集列名的匿名对象 cursor_orientation 对于 一个 PDOStatement 对象表示的可滚动游标,该值决定了哪一行将被返回给调用者。此值必须是 PDO::FETCH_ORI_* 系列常量中的一个,默认为 PDO::FETCH_ORI_NEXT。要想让 PDOStatement 对象使用可滚动游标,必须在用 PDO::prepare() 预处理SQL语句时,设置 PDO::ATTR_CURSOR 属性为 PDO::CURSOR_SCROLL。 offset 对于一个 cursor_orientation 参数设置为 PDO::FETCH_ORI_ABS 的PDOStatement 对象代表的可滚动游标,此值指定结果集中想要获取行的绝对行号。 对于一个 cursor_orientation 参数设置为 PDO::FETCH_ORI_REL 的PDOStatement 对象代表的可滚动游标,此值指定想要获取行相对于调用 PDOStatement::fetch() 前游标的位置 返回值 此函数(方法)成功时返回的值依赖于提取类型。在所有情况下,失败都返回 FALSE 。 实例 用不同的提取方式获取行

  以上实例会输出:

  使用一个可滚动游标获取行

  以上实例会输出:

    from:http://www.runoob.com/php/pdostatement-fetch.html

龙生   21 May 2018
View Details

PDO::query

说明 语法

PDO::query() 在一个单独的函数中调用并执行 SQL 语句, 返回结果集 (如果有),语句作为一个PDOStatement对象返回。 参数 statement 要执行的SQL语句。 返回值 如果成功,PDO::query()返回PDOStatement对象,如果失败返回 FALSE 。 实例 PDO::query实例 遍历输出结果集:

以上输出结果为:

  from:http://www.runoob.com/php/pdo-query.html

龙生   21 May 2018
View Details

PHP Fatal error: Call to undefined function mysql_connect() 错误解释

我使用的是5.6.11版本的php 刚开始以为编译参数加了--with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd,就可以不能安装mysql了。 但是使用了mysq_connect()函数后发现php无法解析,在apache的日志当中出现下面这个提示,刚开始想不通。 PHP Fatal error: Call to undefined function mysql_connect() 因为原先的mysql.api已经在php5.5开始被移除,而之后的php 自带的mysqli只支持部分部分函数。 具体可以参考http://cn2.php.net/manual/zh/set.mysqlinfo.php 如果真的不想安装mysql,用以替代本函数的有: mysqli_connect() mysqli_connect("localhost","my_user","my_password","my_db"); http://cn2.php.net/manual/zh/function.mysql-connect.php —————————————————————— 首先纠正一个问题, 5.x开始,PHP连接MYSQL无论使用哪种方式都是使用的mysqlnd驱动(当然是在你安装好的时候)。包括mysql_*、PDO_MYSQL、MYSQLi 在编译安装PHP的时候,需要指定开启以下扩展 --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd 而不再是 --with-mysqli=/usr/local/mysql PHP7 正式移除了 mysql 扩展 mysqlnd和mysql mysqli pdo_mysql关系打比方说 mysqlnd是金属,而mysql mysqli pdo_mysql只是金属制品而已 使用PDO连接mysql

from:https://www.cnblogs.com/wajika/p/6627140.html

龙生   21 May 2018
View Details

php 类中的常量、静态属性、非静态属性的区别

一.类常量:在类中始终保持不变的值定义为常量 类的常量不能使用访问限制修饰符,他是 public 的,可继承,可以被子类重写,访问类的常量必须使用双冒号 :: ,可以使用类名或类的实例来访问,因为是常量,所以名称不能使用表示变量的符号 $. 可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $ 符号。 常量的值必须是一个定值,不能是变量,类属性,数学运算的结果或函数调用。 接口(interface)中也可以定义常量。更多示例见文档中的接口部分。 自 PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字(如 self,parent 或 static)。 语法 : const constant= '常量'; ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Myclass{  const constant = '常量';  //类内部调用  public function test(){   echo self::constant.'<br>';  } } Myclass::test(); //类外部访问 echo Myclass::constant.'<br>'; //方法一 $obj = new Myclass();  //方法二 echo $obj::constant.'<br>'; 二.静态属性 : 是一个变量,可以常量的语法访问,就是 :: ,可以没有实例化也能访问 语法 :public static $my_static = '类似常量'; ? 1 2 3 4 5 6 7 8 9 10 11 […]

龙生   21 May 2018
View Details

php输出所有错误信息

方法一 修改php.ini

方法二 需要调试的php文件首行中加入

from:https://blog.csdn.net/whatday/article/details/50833934

龙生   15 May 2018
View Details
1 6 7 8 29