分类 "Php" 的存档.

PHP 数组 判断是否存在某个键值 array_key_exists()

PHP 检测数组是否存在某个键值 判断数组索引是否存在 array_key_exists();

bool array_key_exists ( mixed key, array search )

<?php
/*

array_key_exists() 在给定的 key 存在于数组中时返回 TRUE。key 可以是任何能作为数组索引的值。

*/

$search_array = array("first" => 1, "second" => 4);
if (array_key_exists("first", $search_array)) {
   echo "The 'first' element is in the array";
}
?>

Read more…

imagettftext() [function.imagettftext]: Could not find/open font in 字体乱码不正常

在使用imagettftext()函数生成包含汉字的图片时,在本地测试正常,上传到空间后运行却报如下错误

imagettftext() [function.imagettftext]: Could not find/open font in……

查看官方手册:
When using versions of the GD library lower than 2.0.18, a space character, rather than a semicolon, was used as the ‘path separator’ for different font files. Unintentional use of this feature will result in the warning message: Warning: Could not find/open font. For these affected versions, the only solution is moving the font to a path which does not contain spaces.

说是因为如果GD库的版本过低的话,字体文件的路径中不能包含有空格。

但是我想我空间的GD库不能那么低啊,而且字体文件路径中也没有空格,然后突然想到,linux/unix主机下文件名是区分大小写的,空间内字体文件的名称是SIMFANG.TTF,而我在使用它的时候用的是小写,所以会找不到字体文件,报此错误。
还曾经遇到一个错误是字体乱码的问题,更换了一个字体就好啦。。

Read more…

PHP开发人员常犯的几个MysqL错误

对于大多数web应用来说,数据库都是一个十分基础性的部分。如果你在使用PHP,那么你很可能也在使用MySQL—LAMP系列中举足轻重的一员。

对于很多新手们来说,使用PHP可以在短短几个小时之内轻松地写出具有特定功能的代码。但是,构建一个稳定可靠的数据库却需要花上一些时日和相关技能。下面列举了我曾经犯过的最严重的10个MySQL相关的错误(有些同样也反映在其他语言/数据库的使用上)。

1、使用MyISAM而不是InnoDB

MySQL有很多数据库引擎,但是你最可能碰到的就是MyISAM和InnoDB。

MySQL 默认使用的是MyISAM。但是,很多情况下这都是一个很糟糕的选择,除非你在创建一个非常简单抑或实验性的数据库。外键约束或者事务处理对于数据完整性 是非常重要的,但MyISAM都不支持这些。另外,当有一条记录在插入或者更新时,整个数据表都被锁定了,当使用量增加的时候这会产生非常差的运行效率。

结论很简单:使用InnoDB。

Read more…

如何用php实现发送带附件的邮件

首先要清楚,要用php实现发送带附件的邮件没有什么简单的办法。你要很好的理解PHP或其它的服务器端的脚本语言,如果你理解了,也就算是很简单了。当然你还要一个真正支持PHP的网站的账号。这个是最基础的前提,然后在你读完了本文章后就可以用PHP发送带附件的电子邮件了。

1. 附件是如何工作的

如果你曾经在PHP的手册中搜索过“附件”函数,那么结果可能是什么都没有(至少在我写本文的时间还没有)。后来你就要花很多时间来了解这方面的知识。

你也许会想当你给某个人发送一封带附件的电子邮件时,附件是和邮件一起放到收件人的信箱里的(比如,如果你给他/她发了一个PNG的图片文件,他/她的信箱里会包含一个txt文件(电子邮件)和一个.png文件(附件)。但这不是它的工作原理。当你加入一个附件时,你的邮件程序把附件转换成纯文本文件,并在你写的内容(实际的电子邮件)后面插入这个文本块。这个,当你把所有的东西发出来后,收件人的信箱里只有一个纯文本文件——一个同时包含附件和实际电子邮件内容的文件。
Read more…

php 四舍五入 数学函数

round — 对浮点数进行四舍五入
说明
float round ( float val [, int precision])

返回将 val 根据指定精度 precision(十进制小数点后数字的数目)进行四舍五入的结果。precision 也可以是负数或零(默认值)。
Read more…

mysql: Error reading file ‘UNOPENED’ (Errcode: 9)

使用mysqldump导出文件的时候,报这个错误。

mysql: Error reading file ‘UNOPENED’ (Errcode: 9)

找半天不知道是什么原因,突然发现,原来是命令写错了。。应该是mysqldump导出的,,我使用了mysql 。。。。

如:

> mysql -uroot -p123456 weiyuftpbill > weiyuftpbill.sql

Read more…

使对象可以像数组一样进行foreach循环,要求属性必须是私有。(Iterator模式的PHP5实现,写一类实现Iterator接口)

PHP5开始支持了接口, 并且内置了Iterator接口, 所以如果你定义了一个类,并实现了Iterator接口,那么你的这个类对象就是ZEND_ITER_OBJECT,否则就是ZEND_ITER_PLAIN_OBJECT.

对于ZEND_ITER_PLAIN_OBJECT的类,foreach会通过HASH_OF获取该对象的默认属性数组,然后对该数组进行foreach.
而对于ZEND_ITER_OBJECT的类对象,则会通过调用对象实现的Iterator接口相关函数来进行foreach, 所以, 对于这道笔试题, 可以作出如下的答案:

Read more…

PHP-文件类函数-clearstatcache()-受clearstatcache()影响的函数

void clearstatcache ( void )

当使用 stat(),lstat() 或者任何列在受影响函数表(见下面)中的函数时,PHP 将缓存这些函数的返回信息以提供更快的性能。然而在某些情况下,你可能想清除被缓存的信息。例如如果在一个脚本中多次检查同一个文件,而该文件在此脚本执行期间有被删除或修改的危险时,你需要清除文件状态缓存。这种情况下,可以用 clearstatcache() 函数来清除被 PHP 缓存的该文件信息。

Read more…

PHPCaptcha 被报安全漏洞 以及 解决办法

Phil Taylor 指出,PHPCaptcha的音频认证有漏洞,即使停用audio认证,用户也可以访问 /secure_play.php 强制通过。

解决办法:删除 securimage_play.php 脚本,并停用audio认证.

原文如下:

PHPCaptcha, also known as Securimage, is a popular Open Source PHP CAPTCHA library. It is also used in popular WordPress plugins such as
the ‘Fast Secure Contact Form’. Insufficient distortion in the audio version of the CAPTCHA allows an attacker to quickly decode the CAPTCHA
by performing basic binary analysis of the generated audio file. The issue is compounded by the fact that even if the audio feature of the
CAPTCHA has been disabled, it can still be accessed by forceful browsing to the /secure_play.php URI.

Read more…

Xdebug教程之Xdebug安装- windows下安装Xdebug for php

为什么需要Xdebug
很多PHP程序员调试使用echo、print_r()、var_dump()、printf()等,其实对于有较丰富开发经验的程序员来说这些也已经足够了,他们往往可以在程序执行的过程中,通过输出特定变量的值可以判断程序执行是否正确,甚至效率高低也可以看出来(当然可能还需要使用一些时间函数)。那么我们为什么还需要一个专门的调试程序来监控我们的程序运行呢? 这个问题的答案不妨留到后面来揭晓。

什么是Xdebug
Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况。Xdebug现在的最新版本是xdebug 2.1.1,支持PHP4/PHP5。

Read more…