随笔分类 - PHP
摘要:empty,isset首先都会检查变量是否存在,然后对变量值进行检测。而is_null 只是直接检查变量值,是否为null,因此如果变量未定义就会出现错误!empty 如果 变量 是非空或非零的值,则 empty() 返回FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var、未定义; 以及没有任何属性的对象都将被认为是空的。isset 如果 变量 存在(非NULL)则返回TRUE,否则返回FALSE(包括未定义)。变量值设置为:null,返回也是false;unset一个变量后,变量被取消了。is_null 检测
阅读全文
摘要:一、采用插件。1.SWFUpload:http://demo.swfupload.org/v220/index.htm;2.uploadify:http://www.cnblogs.com/oec2003/archive/2010/01/06/1640027.html.二、HTTP协议和socket???
阅读全文
摘要:ECshop刚安装完成后,提示:Strict Standards: Only variables should be passed by reference in... 标头Strict Standards表示php.ini配置文件里的error_reporting的值是E_STRICT,应该改成E_ALL。 按照PHP严格的写法,array_shift()函数里应该传的是一个数组引用,这个引用只能是变量,而如果直接这样写:$tag_sel = array_shift(explode(' ', $tag));因为explode(' ', $tag)返回是是一个常
阅读全文
摘要:在安装Ecshop的时候,遇到两个问题: 1.Strict Standards: Non-static method cls_image::gd_version() should not be called statically inD:\X\www\ecshop\install\includes\lib_installer.phpon line31 解决:找到install/includes/lib_installer.php中的第31行 return cls_image::gd_version();然后在找到include/cls_image.php中的678行,发现gd_vers...
阅读全文
摘要:在PHP中,"=="表示等于,只要值相等就为真,"==="表示恒等于,要数据类型和值都相等才为真。 但是有以下要注意:var_dump(NULL=='NULL'); //bool(false)var_dump(NULL==='NULL');//bool(false) 因为'NULL'是字符串,有类型,有值,所以与没有类型也没有值的NULL相比较为假。
阅读全文
摘要:一、解说isset().if (isset($upload['error']) && $upload['error'] > 0){ return false; } 一日看别人写的代码,很纳闷:既然有$upload['error'] > 0这个判断,那为何还要做isset($upload['error'])这个判断呢? 经询问,一个朋友的解说一语点睛:PHP是弱语言,数组下标不存在不会影响程序正常运行,但是默认会提示一个消息。 我明白了: 以前总是看到isset()函数的定义,说判断该变量是否设置什么的,
阅读全文
摘要:1.构造函数的作用:就是在你用new创建那个class的时候,class里的构造函数就自动执行了,不需要你再去调用,用途一般是做配置类初始化信息,比如加个类全局变量什么的,构造函数只是创建类的实例的时候自动被调用。其他地方也跟普通函数一样。 2.析构函数(destructor):与构造函数相反...
阅读全文
摘要:fsockopen打开网络的 Socket 链接。语法:int fsockopen(string hostname, int port, int [errno], string [errstr], int [timeout]);返回值:整数函数种类:网络系统内容说明目前这个函数提供二个 Socket 资料流界面,分别为 Internet 用的 AF_INET 及 Unix 用的 AF_UNIX。当在 Internet 情形下使用时,参数 hostname 及 port 分别代表网址及埠号。在 UNIX 情形可做 IPC,hostname 参数表示到 socket 的路径,port 配置为 0。
阅读全文
摘要:php的内置函数exec、system都可以调用系统命令(dos和shell命令),passthru和escapeshellcmd也可以。 使用这两个函数就需要在php.ini中将安全模式关闭,否则为了安全期间,php是不让调用系统命令的。 exec --- 执行外部程式 语法:string exec (string command [,array &output [,int &return_var]]) 参数:1.command:系统命令; 2.output:数组,被命令输出的每一行填满; 3.return_var:状态,成功返回0,失败返回1. system ...
阅读全文
摘要:在文件的读写的过程中会用到一个PHP函数flock()。 为了确保操作的有效性和完整性,可以通过锁机制将并发状态转换成穿行状态。假设一个应用场景:在存在较大并发的情况下,通过fwrite向文件尾部多次有序的写入数据,不加锁的情况下会发生什么?多次有序的写入操作相当于一个事务,我们此时需要保证这个事务的完整性。 函数flock():语法flock(file,lock,block)参数描述file必需。规定要锁定或释放的已打开的文件。lock必需。规定要使用哪种锁定类型。block可选。若设置为 1 或 true,则当进行锁定时阻挡其他进程。说明flock() 操作的file必须是一个已经...
阅读全文
摘要:一、详解php.iniPHP本身再老版本有一些问题,比如在 php4.3.10和php5.0.3以前有一些比较严重的bug,所以推荐使用新版。另外,目前闹的轰轰烈烈的SQL Injection也是在PHP上有很多利用方式,所以要保证 安全,PHP代码编写是一方面,PHP的配置更是非常关键。 我们php手手工安装的,php的默认配置文件在 /usr/local/apache2/conf/php.ini,我们最主要就是要配置php.ini中的内容,让我们执行 php能够更安全。整个PHP中的安全设置主要是为了防止phpshell和SQL Injection的攻击,一下我们慢慢探讨。我们先...
阅读全文
摘要:刚搭建好的LAMP环境,centos纯净版6。安装好ecshop后,发现打不开网站,但是还是可以安装的,数据库也导入成功了。 于是打开php.ini配置文件,开启错误提示:display_errors = On。 再打开网站,有错误提示,如图: 此时以为是权限问题,于是就查看权限,ugo都有r权限,data、temp、eccore/widget也都是777权限,没问题啊,理论是可以访问的啊。 百度查找了下,看很多人说是属主不一直,需要chown -R root:root yourfilename,user和group的属主应该一致,于是查找ls -l,显示属主都是root,这也没问...
阅读全文
摘要:参考文档:http://wenku.baidu.com/view/9b6fe47302768e9951e73867.html1.下载phpmyadmin文件:wget 链接地址2.将根目录下的config.sample.inc.php文件改名为config.inc.php(如何不改,会出现:必须启用 Cookies 才能登录。)注意:因为phpmyadmin可以自动识别数据库文件,所以只要改一下config.sample.inc.php文件名即可。另外:如果安装的mysql密码为空也不能登录,那么可以直接在putty里输入命令mysqladmin -u root password admin8
阅读全文
摘要:PHP CLI(command line interface)中,有三个系统常量,分别是STDIN、STDOUT、STDERR,代表文件句柄。应用一:<?phpwhile($line = fopen('php://stdin','r')){ echo fgets($line);}?>应用二:<?php echo STDIN;?>在dos命令行下直接返回STDIN文件指针(文件句柄)。如图:应用三:<?php echo fgets(STDIN);?>STDIN可以拿到在dos下输入的内容,fgets读取这个STDIN文件句柄,即
阅读全文
摘要:“ob_flush()和flush()的区别。前者是把数据从PHP的缓冲中释放出来,后者是把不在缓冲中的或者说是被释放出来的数据发送到浏览器。所以当缓冲存在的时候,我们必须ob_flush()和flush()同时使用。正确使用的顺序是:先用ob_flush(),后用flush()。
阅读全文
摘要:1. 轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。 优点:后端程序编写比较容易。 缺点:请求中有大半是无用,浪费带宽和服务器资源。 实例:适于小型应用。2. 长轮询:客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。 优点:在无消息的情况下不会频繁的请求。 缺点:服务器hold连接会消耗资源。 实例:WebQQ、Hi网页版、Facebook IM。另外,对于长连接和socket连接也有区分:1. 长连接:在页面里嵌入一个隐蔵iframe,将这个...
阅读全文
摘要:对TCP/IP、UDP、Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵。那么我想问:1.什么是TCP/IP、UDP?2.Socket在哪里呢?3.Socket是什么呢?4.你会使用它们吗?什么是TCP/IP、UDP?TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是属于TCP/IP协议族中的一种。这里有一张图,表明了这些协议...
阅读全文
摘要:一、安装Apache服务器。 1.下载apache软件:#wget http://mirror.bjtu.edu.cn/apache//httpd/httpd-2.4.3.tar.gz; 2.讲下载的apache文件解压到/usr/local目录下:#tar -zxvf httpd-2.4.3.ta
阅读全文
摘要:这段代码可以实现模拟http请求。 1.fsockopen函数打开socket连接; 2.fwrite函数把GET请求字符串写入文件指针$fp里,即可请求到1.txt这个文件。(这里的原理是: 运行-cmd-telnet 192.168.1.234 80(端口80前不要冒号)-GET /1...
阅读全文
摘要:php中socket连接方式: TCP:$sock = fsockopen("192.168.0.1",80); UCP:$sock = fsockopen("udp://192.168.0.1",53);
阅读全文