Heim >php教程 >php手册 >PHP十天快速入门等收集资料

PHP十天快速入门等收集资料

WBOY
WBOYOriginal
2016-06-06 19:58:43785Durchsuche

第一天: 下面简单介绍一下PHP的语法。 1、嵌入方法: 类ASP的%,PHP可以是?php或者是?,结束符号是?,当然您也可以自己指定。 2、引用文件: 引用文件的方法有两种:require 及 include。 require 的使用方法如 require(MyRequireFile.php); 。这个函数通常

第一天:

下面简单介绍一下PHP的语法。

   1、嵌入方法:

   类似ASP的,当然您也可以自己指定。

   2、引用文件:

   引用文件的方法有两种:require 及 include。
   require 的使用方法如 require("MyRequireFile.php"); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。

   include 使用方法如 include("MyIncludeFile.php"); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。

   3、注释方法:

       echo "这是第一种例子。\n" ; // 本例是 C++ 语法的注释
  
   echo "这是第二种例子。\n" ;

   echo "这是第三种例子。\n" ; # 本例使用 UNIX Shell 语法注释
   ?>

   4、变量类型:

   $mystring = "我是字符串" ;
   $NewLine = "换行了\n" ;
   $int1 = 38 ;
   $float1 = 1.732 ;
   $float2 = 1.4E+2 ;
   $MyArray1 = array( "子" , "丑" , "寅" , "卯" );

   这里引出两个问题,首先PHP变量以$开头,第二PHP语句以;结尾,可能ASP程序员会不适应。这两个遗漏也是程序上大多错误所在。

   5、运算符号:

   数学运算: 符号 意义  
   +   加法运算  
   -   减法运算  
   *   乘法运算  
   /   除法运算  
   %   取余数  
   ++   累加  
   --   递减  

   字符串运算:

   运算符号只有一个,就是英文的句号。它可以将字符串连接起来,变成合并的新字符串。类似ASP中的&
   

   $a = "PHP 4" ;
   $b = "功能强大" ;
   echo $a.$b;
   ?>
   这里也引出两个问题,首先PHP中输出语句是echo,第二类似ASP中的,PHP中也可以=变量?     >。

   逻辑运算:

   符号 意义  
     小于  
   >   大于  
     小于或等于  
   >=   大于或等于  
   ==   等于  
   !=   不等于  
   &&   而且 (And)  
   and   而且 (And)  
   ||   或者 (Or)  
   or   或者 (Or)  
   xor   异或 (Xor)  
   !   不 (Not)  

   今天就说到这里,明天说一下流程控制。

第二天

学习目的:掌握php的流程控制

   1、if..else 循环有三种结构

   第一种是只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下:

   if (expr) { statement }

   其中的 expr 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。

   范例:本例省略大括号。

       if ($state==1)echo "哈哈" ;
   ?>

   这里特别注意的是,判断是否相等是==而不是=,ASP程序员可能常犯这个错误,= 是赋值。

   范例:本例的执行部分有三行,不可省略大括号。

       if ($state==1) {
   echo "哈哈";
   echo "
" ;
   }
   ?>


   第两种是除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下

   if (expr) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。
       if ($state==1) {
   echo "哈哈" ;
   echo "
";
   }
   else{
   echo "呵呵";
   echo "
";
   }
   ?>


   第三种就是递归的 if..else 循环,通常用在多种决策判断时。它将数个 if..else 拿来合并运用处理。

   直接看下面的例子

       if ( $a > $b ) {
   echo "a 比 b 大" ;
   } elseif ( $a == $b ) {
   echo "a 等于 b" ;
   } else {
   echo "a 比 b 小" ;
   }
   ?>

   上例只用二层的 if..else 循环,用来比较 a 和 b 两个变量。实际要使用这种递归 if..else 循环时,请小心使用,因为太多层的循环容易使设计的逻辑出问题,或者少打了大括号等,都会造成程序出现莫名其妙的问题。

   2、 for 循环就单纯只有一种,没有变化,它的语法如下

   for (expr1; expr2; expr3) { statement }

   其中的 expr1 为条件的初始值。expr2 为判断的条件,通常都是用逻辑运算符号 (logical operators) 当判断的条件。expr3 为执行 statement 后要执行的部份,用来改变条件,供下次的循环判断,如加一..等等。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。

   下例是用 for 循环写的的例子。

       for ( $i = 1 ; $i    echo "这是第".$i."次循环
" ;
   }
   ?>

   3、 switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。

   语法如下

   switch (expr) { case expr1: statement1; break; case expr2: statement2; break; default: statementN; break; }

   其中的 expr 条件,通常为变量名称。而 case 后的 exprN,通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。

       switch ( date ( "D" )) {
   case "Mon" :
   echo "今天星期一" ;
   break;
   case "Tue" :
   echo "今天星期二" ;
   break;
   case "Wed" :
   echo "今天星期三" ;
   break;
   case "Thu" :
   echo "今天星期四" ;
   break;
   case "Fri" :
   echo "今天星期五" ;
   break;
   default:
   echo "今天放假" ;
   break;
   }
   ?>

   这里需要注意的是break;别遗漏了,default,省略是可以的。

   很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。

   今天就说到这里,明天开始说数据库的使用。

第三天

PHP构建数据库

   学习目的:学会构建数据库

   在ASP中,如果是ACCESS数据库你可以直接打开ACCESS来编辑MDB文件,如果是SQL SERVER你可以打开企业管理器来编辑SQL SERVER数据库,但是在PHP中,MY SQL的命令行编辑可能会令初学者感到很麻烦,不要紧,你下载一个PHPMYADMIN安装一下,以后建立编辑数据库可以靠它了。

   下面说一下它的使用。
   进入了phpmyadmin后,我们首先需要建立一个数据库,Language (*) 这里选择中文简体,然后在左边的 创建一个新的数据库 这里填写数据库名字,点击创建即可。

   然后在左边下拉菜单中选择那个已经创建的数据库。在下面的

   在数据库 shop 中创建一个新表 :
   名字 :
   字段数 :

   中填写表名字和大致你认为的字段数(不够或者多了都不要紧,以后可以再添加或者缺省),按执行。
   然后就可以开始建立表了。
   第一栏是字段的名字;第二栏选择字段类型:
   我们常用的是以下几个:
   1)VARCHAR,文本类型
   2)INT,整数类型
   3)FLOAT,浮点数类型
   4)DATE,日期型
   5)大家或许会问,自动添加的ID在哪里?这个只要选择INT类型,在后面的额外中选择 auto_increment 就可以了。

   建立了表以后,可以在左边看到你建立的表,点击以后,你可以:
   1)按右边的结构:查看修改表结构
   2)按右边的浏览:查看表中的数据
   3)按右边的SQL:运行SQL语句
   4)按右边的插入:插入一行记录
   5)按右边的清空:删除表中所有记录
   6)按右边的删除:删除表

   还有一个很重要的功能就是导入和导出,当我们本机做好了程序和数据库的时候,需要在服务器上也有一个本地镜像,如果是ASP的ACCESS简单了,直接上传MDB文件即可,如果是SQL SERVER也可以连接远端服务器进行导入。那么MY SQL中你可以导出所有的SQL语句,到了远端服务器的PHPMYADMIN上,创建数据库后按SQL,粘帖你刚才复制下来的所有本级生成的SQL语句即可。

   今天就说到这里,明天继续说数据库操作。

第四天

PHP连接数据库

学习目的:学会php连接数据库

PHP简直就是一个函数库,丰富的函数使PHP的某些地方相当简单。建议大家down一本PHP的函数手册,总用的到。

我这里就简单说一下连接MYSQL数据库。

1、mysql_connect

打开 MySQL 服务器连接。
语法: int mysql_connect(string [hostname] [:port], string [username], string [password]); 返回值: 整数

本函数建立与 MySQL 服务器的连接。其中所有的参数都可省略。当使用本函数却不加任何参数时,参数 hostname 的默认值为 localhost、参数 username 的默认值为 PHP 执行行程的拥有者、参数 password 则为空字符串 (即没有密码)。而参数 hostname 后面可以加冒号与端口号,代表使用哪个端口与 MySQL 连接。当然在使用数据库时,早点使用 mysql_close() 将连接关掉可以节省资源。

2、 mysql_select_db

选择一个数据库。
语法: int mysql_select_db(string database_name, int [link_identifier]); 返回值: 整数

本函数选择 MySQL 服务器中的数据库以供之后的资料查询作业 (query) 处理。成功返回 true,失败则返回 false。

最简单的例子就是:
$conn=mysql_connect ("127.0.0.1", "", "");
mysql_select_db("shop");
连接机MY SQL数据库,打开SHOP数据库。在实际应用中应当加强点错误判断。

今天就说到这里,明天再说一下数据库的读取。

第五天

PHP读取数据库

学习目的:学会PHP读取数据库

先看两个函数:
1、mysql_query
送出一个 query 字符串。 语法: int mysql_query(string query, int [link_identifier]); 返回值: 整数

本函数送出 query 字符串供 MySQL 做相关的处理或者执行。若没有指定 link_identifier 参数,则程序会自动寻找最近打开的 ID。当 query 查询字符串是 UPDATE、INSERT 及 DELETE 时,返回的可能是 true 或者 false;查询的字符串是 SELECT 则返回新的 ID 值,当返回 false 时,并不是执行成功但无返回值,而是查询的字符串有错误。

2、mysql_fetch_object 返回类资料。 语法: object mysql_fetch_object(int result, int [result_typ]); 返回值: 类

本函数用来将查询结果 result 拆到类变量中。若 result 没有资料,则返回 false 值。

看一个简单的例子:

$exec="select * from user";
$result=mysql_query($exec);
while($rs=mysql_fetch_object($result))
{
echo "username:".$rs->username."
";
}
?>
当然,表user中有一个username的字段,这就类似asp中的
exec="select * from user"
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,1
do while not rs.eof
response.write "username:"&rs("username")&"
"
rs.movenext
loop
%>
当然先要连接数据库,一般我们 require_once('conn.php');而conn.php里面就是上一次说的连接数据库的代码。

小小的两条命令可以完成读取数据的工作了,今天说到这里下一次说数据的添加删除修改。

第六天

PHP添加删除修改数据

学习目的:学会PHP添加删除修改数据

mysql_query($exec);
单这个语句就可以执行所有的操作了,不同的就是$exec这个sql语句

添加:$exec="insert into tablename (item1,item2) values ('".$_POST['item1']."',".$_POST['item1'].")";

删除:$exec="delete from tablename where...";

修改:$exec="update tablename set item1='".$_POST['item1']."' where ...";

说到这里就要说一下表单和php变量传递,如果表单中的一个
表单以POST提交的,那么处理表单文件就可以用$_POST['item1']得到变量值,同样以GET提交的就是$_GET['item1']

是不是很简单?但是通常$exec会有问题,因为可能您的SQL语句会很长,您会遗漏.连接符,或者'来包围字符型字段。
我们可以注释mysql_query($exec);语句用echo $exec;代替来输出$exec以检查正确性。如果您还不能察觉$exec有什么错误的话,可以复制这个sql语句到phpmyadmin中执行,看看它的出错信息。还有需要注意的是,我们不要使用一些敏感的字符串作为字段名字,否则很可能会出现问题,比如说date什么的。变量的命名,字段的命名遵循一点规律有的时候对自己是一种好处,初学者并不可忽视其重要性。

今天就说到这里,大家可以DOWN一个SQL语句的参考手册,再研究研究。明天继续说SESSION。

第七天

PHP中SESSION的使用

学习目的:PHP中SESSION的使用

SESSION的作用很多,最多用的就是站点内页面间变量传递。在页面开始我们要session_start();开启SESSION;
然后就可以使用SESSION变量了,比如说要赋值就是:$_SESSION['item']="item1";要得到值就是$item1=$_SESSION['item'];,很简单吧。这里我们可能会使用到一些函数,比如说判断是不是某SESSION变量为空,可以这么写:empty($_SESSION['inum'])返回true or false。

下面综合一下前面所说的我们来看一个登陆程序,判断用户名密码是否正确。
登陆表单是这样:login.php





Administrators Login


Username


Password











处理文件是这样

require_once('conn.php');
session_start();
$username=$_POST['username'];
$password=$_POST['password'];
$exec="select * from admin where username='".$username."'";
if($result=mysql_query($exec))
{
   if($rs=mysql_fetch_object($result))
   {
     if($rs->password==$password)
     {
       $_SESSION['adminname']=$username;
       header("location:index.php");
     }
     else
     {
       echo "<script>alert('Password Check Error!');location.href='login.php';</script>";
     }
   }
   else
   {
   echo "<script>alert('Username Check Error!');location.href='login.php';</script>";
   }
   }
else
{
echo "<script>alert('Database Connection Error!');location.href='login.php';</script>";
}

?>

conn.php是这样:

$conn=mysql_connect ("127.0.0.1", "", "");
mysql_select_db("shop");
?>

由于 $_SESSION['adminname']=$username;我们可以这样写验证是否登陆语句的文件:checkadmin.asp

session_start();
if($_SESSION['adminname']=='')
{
echo "<script>alert('Please Login First');location.href='login.php';</script>";
}
?>

呵呵,今天说到这里,明天说一下怎么弄一个分页。

第八天

PHP做分页显示

学习目的:做一个分页显示

关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num

对于$page如果没有我们就让它=0,如果有

$execc="select count(*) from tablename ";
$resultc=mysql_query($execc);
$rsc=mysql_fetch_array($resultc);
$num=$rsc[0];

这样可以得到记录总数
ceil($num/10))如果一页10记录的话,这个就是总的页数

所以可以这么写
if(empty($_GET['page']))
{
$page=0;
}
else
{
$page=$_GET['page'];
if($page if($page>=ceil($num/10))$page=ceil($num/10)-1;//因为page是从0开始的,所以要-1
}

这样$exec可以这么写 $exec="select * from tablename limit ".($page*10).",10";
//一页是10记录的

最后我们需要做的就是几个连接:
FirstPage
PrevPage
NextPage
LastPage

这是一个大致的思路,大家可以想想怎么来优化?今天说到这里,明天说一下一些注意的问题。
第九天

PHP注意事项

学习目的:注意事项

因为我是先学ASP的,所以再做PHP的时候会发现很多地方需要适应。

1、注意不要漏了分号
2、注意不要漏了变量前的$
3、使用SESSION的时候注意不要遗漏session_start();

如果发生错误的时候,可以采用以下方法:
1、如果是SQL语句出错,就注释了然后输出SQL语句,注意也要注释调后续的执行SQL语句
2、如果是变量为空,大多是没有传递到位,输出变量检查一下,检查一下表单的id和name
3、如果是数据库连接出错,检查是否正确打开MY SQL和是否遗漏了连接语句
4、注意缩进,排除括号不区配的错误

在做大网站的时候,我的思路是先构建数据库,确定每一个字段的作用,和表之间的关系。然后设计后台界面,从添加数据开始做起,因为添加是否成功可以直接到数据库里面验证,做好了添加再做显示的页面,最后才是两者的结合。一般来说后台就包括添加删除修改和显示,后台没有问题了,前台也没有什么大问题。前台还需要注意安全性和容错还有就是输出格式。

好了,今天说到这里,明天说一下如果用PHP上传文件和发邮件。

第十天

PHP上传文件和发邮件

学习目的:学会用PHP上传文件和发邮件

上传文件表单必须加上 enctype="multipart/form-data"

下面看一下代码:

$f=&$HTTP_POST_FILES['file'];
$dest_dir='uploads';//设定上传目录
$dest=$dest_dir.'/'.date("ymd")."_".$f['name'];//我这里设置文件名为日期加上文件名避免重复
$r=move_uploaded_file($f['tmp_name'],$dest);
chmod($dest, 0755);//设定上传的文件的属性

上传的文件名为date("ymd")."_".$f['name'] ,可以在以后插入到数据库的时候用到,PHP实际上是把你上传的文件从临时目录移动到指定目录。move_uploaded_file($f['tmp_name'],$dest);这是关键

至于发邮件就更加简单,可以使用mail()函数

mail("收件人地址","主题","正文","From:发件人\r\nReply-to:发件人的地址");

不过mail()需要服务器的支持,在WINDOWS下还需要配置SMTP服务器,一般来说外面的Linux空间都行。
好像上传文件和发邮件比ASP简单很多,只要调用函数就可以了。ASP还需要用到服务器的不同组件比如FSO、JMAIL什么的。

十天学会PHP说到这里了,我的三大系列文章都用《十天学会》作为名字,想告诉大家的是ASP,PHP,ASP.NET入门都可以是十天,但是精通决不是十天啊,还需要大家自己去研究。


//==================其他代码

//链接数据库
$db=mysql_connect("localhost", "root","123456");
$sqlname="database";
mysql_select_db($sqlname,$db);
session_start();
mysql_query("SET NAMES 'utf8'",$db);
?>


//创建结果集
$sql = "SELECT * FROM kecheng";
$result = mysql_query($sql); 
$rs= mysql_fetch_array($result);
?>


//修改数据
$sql = "UPDATE news SET  title='1111'   where news_id=1";
$result = mysql_query($sql);
?>


//删除数据
$sql = "DELETE from news  where news_id=1";
$result = mysql_query($sql);
?>


//添加数据
$sql = "INSERT INTO news (title,fenshu) VALUES ('a',1)"
$result = mysql_query($sql);
?>
//=============================================

http://www.w3school.com.cn/php/php_cookies.asp [Cookies 介绍 - 手册知识]

//======================================

PHP常用技巧总结

PHP文件读取函式 

复制代码 代码如下:


//文件读取函式 
function PHP_Read($file_name) { 
$fd=fopen($file_name,r); 
while($bufline=fgets($fd, 4096)){ 
$buf.=$bufline; 

fclose($fd); 
return $buf; 

?> 


文件写入函式 

复制代码 代码如下:


//文件写入函式 
function PHP_Write($file_name,$data,$method=”w”) { 
$filenum=@fopen($file_name,$method); 
flock($filenum,LOCK_EX); 
$file_data=fwrite($filenum,$data); 
fclose($filenum); 
return $file_data; 

?> 


静态页面生成函式 

复制代码 代码如下:


//静态页面生成函式 
function phptohtm($filefrom,$fileto,$u2u=1){ 
if($u2u==1){ 
$data=PHP_Read($filefrom); 
}else{ 
$data=$filefrom; 

PHP_Write($fileto,$data); 
return true; 

?> 


指定条件信息数量检索函式 

复制代码 代码如下:


//指定条件信息数量检索函式 
function rec_exist($table,$where){ 
$query=”select count(*) as num from $table “.$where; 
$result=mysql_query($query) or die(nerror(1)); 
$rowcount=mysql_fetch_array($result); 
$num=$rowcount["num"]; 
if ($num==0){ 
return false; 

return $num; 

?> 


目录删除函式 

复制代码 代码如下:


//目录删除函式 
function del_DIR($directory){ 
$mydir=dir($directory); 
while($file=$mydir->read()){ 
if((is_dir(“$directory/$file”)) AND ($file!=”.”) AND ($file!=”..”)){ 
del_DIR(“$directory/$file”); 
}else{ 
if(($file!=”.”) AND ($file!=”..”)){ 
unlink(“$directory/$file”); 
//echo “unlink $directory/$file ok “; 



$mydir->close(); 
rmdir($directory); 
//echo “rmdir $directory ok “; 

?> 


目录名称合法性检测函式 

复制代码 代码如下:


//目录名称合法性检测 
function isen($str){ 
$ret=””; 
for($i=0;$i $p=ord(substr($str,$i,1)); 
if(($p57 & $p90 & $p122){ 
nerror(“不符合规范!”); 

$ret.=chr($p); 

return $ret; 

?> 


PHP分页函数 

复制代码 代码如下:


//分页函数 
function splitlist($HALT,$LRLIST,$ECHOCNT,$paper,$table,$where,$page_id,$userid){ 
global $splitstr,$sumcnt; 
if($paper==”” || $sumcnt==””){ 
$query = “select count(*) as num from $table $where”; 
$result = mysql_query($query); 
$row = mysql_fetch_array($result); 
$sumcnt=$row["num"]; 
if($sumcnt==0){ 
nerror(“该版内还没有选择发布新闻 !”); 

$paper=1; 

$sumpaper=($sumcnt-$sumcnt%$ECHOCNT)/$ECHOCNT; 
if(($sumcnt%$ECHOCNT)!=0) $sumpaper+=1; 
if($sumpaper==1 && $HALT==0) return($where); 
$enwhere=base64_encode(base64_encode($where)); 
if(($LRLIST*2+1) if(($paper-$LRLIST) $tract=1; 
$sub=$LRLIST*2+1; 
}else if(($paper+$LRLIST) >= $sumpaper){ 
$tract=$sumpaper-($LRLIST*2); 
$sub=$sumpaper; 
}else{ 
$tract=$paper-$LRLIST; 
$sub=$paper+$LRLIST; 

}else{ 
$tract=1; 
$sub=$sumpaper; 

$uppaper=$paper-1; 
$downpaper=$paper+1; 
$startcnt=($paper-1)*$ECHOCNT; 
$where.=” limit ${ startcnt },${ ECHOCNT }”; 
if($tract > 1) { $splitstr=”【 else $splitstr=”【 for($i=$tract;$i if ($i!=$paper) $splitstr.=””.$i.” “; 
else $splitstr.=””.$i.” “; 

if ($sub!=$sumpaper) $splitstr.=”>> 】”; 
else $splitstr.=”>> 】”; 
return($where); 

?> 


PHP关于分页函式的使用说明 

复制代码 代码如下:


/* 
#### 检索分页函式 #### 
Int $HALT – 检索结果仅分1页时是否(1/0)显示页码条 
Int $LRLIST – (页码条显示页码数-1)/2 
Int $ECHOCNT – 检索时每页显示记录的数量 
Int $paper – 页数,预提取:$paper=$HTTP_GET_VARS[paper]; 
Varchar $table – 数据表名,预附值:$table=”db.table”; 
Varchar $where – 检索条件,预附值:$where=”where field=’value’”; 
Varchar $enwhere – 将原$where进行两次base64_encode()编码后以GET的方式提交 
Varchar $splitstr – 页码条输出字串,执行函式后在相应的位置执行 echo $splitstr; 
函式调用前需获取变量 – 
$paper=$HTTP_GET_VARS[paper]; 
$sumcnt=$HTTP_GET_VARS[sumcnt]; 
$enwhere=$HTTP_GET_VARS[enwhere]; 
Return (Varchar $where) – 分页后检索语句的检索条件 
注意:本函式需调用出错处理函式 nerror($error); 
*/ 
PHP图片文件上传函式 
//图片文件上传函式 
function upload_img($UploadFile,$UploadFile_name,$UploadFile_size,$UploadPath,$max_size=64){ 
//$TimeLimit=60; //设置超时限制时间 缺省时间为 30秒 设置为0时为不限时 
//set_time_limit($TimeLimit); 
if(($UploadFile!= “none” )&&($UploadFile != “” )){ 
$FileName=$UploadPath.$UploadFile_name; 
if($UploadFile_size $FileSize=”(string)$UploadFile_size” . “字节”; 
}elseif($UploadFile_size $FileSize=number_format((double)($UploadFile_size / 1024), 1) . ” KB”; 
}else{ 
nerror(“文件超过限制大小!”); 

//{ 
//$FileSize=”number_format((double)($UploadFile_size” / (1024 * 1024)), 1) . ” MB”; 
// } 
if(!file_exists($FileName)){ 
if(copy($UploadFile,$FileName)){ 
return “$UploadFile_name ($FileSize)”; 
}else{ 
nerror(“文件 $UploadFile_name 上载失败!”); 

unlink($UploadFile); 
}else{ 
nerror(“文件 $UploadFile_name 已经存在!”); 

//set_time_limit(30); //恢复缺省超时设置 



以下是一些小技巧:

PHP如何判断ip地址合法性 
if(!strcmp(long2ip(sprintf(“%u”,ip2long($ip))),$ip)) echo “is ipn”; 
—- 
email的正则判断 
eregi(“^[_.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z_-]+.)+[a-zA-Z]$”, $email); 
检测ip地址和mask是否合法的例子

$ip = ’192.168.0.84′; 
$mask = ’255.255.255.0′; 
$network = ’192.168.0′; 
$ip = ip2long($ip); 
$mask = ip2long($mask); 
$network = ip2long($network); 
if( ($ip & $mask) == $network) echo “valid ip and maskn”; 
?> 
—- 
PHP文件下载头部输出如何设定 
header(“Content-type: application/x-download”); 
header(“Content-Disposition: attachment; filename=$file_download_name;”); 
header(“Accept-Ranges: bytes”); 
header(“Content-Length: $download_size”); 
echo ‘xxx’ 
PHP用header输出ftp下载方式,并且支持断点续传 
一个例子: 
header(‘Pragma: public’); 
header(‘Cache-Control: private’); 
header(‘Cache-Control: no-cache, must-revalidate’); 
header(‘Accept-Ranges: bytes’); 
header(‘Connection: close’); 
header(“Content-Type: audio/mpeg”); 
header(“Location:ftp://download:1bk3l4s3k9s2@232.2.22.22/2222/web技术开发知识库/cn_web.rmvb”); 
PHP正则匹配中文 
ereg(“^[".chr(0xa1)."-".chr(0xff)."]+$”, $str); 
批量替换文本里面的超级链接 
function urlParse($str = ”){ 
if (” == $str) return $str; 
$types = array(“http”, “ftp”, “https”); 
$replace = ”.htmlentities(’1′).htmlentities(’2′).” 
EOPHP; 
$ret = $str; 
while(list(,$type) = each($types)){ 
$ret = preg_replace(“|($type://)([^s]*)|ie “, $replace, $ret); 

return $ret; 
}

//======================

PHP网站开发常用代码总结(转)1

1. 可阅读随机字符串

此代码将创建一个可阅读的字符串,使其更接近词典中的单词,实用且具有密码验证功能。

/**************
*@length - length of random string (must be a multiple of 2)
**************/
function readable_random_string($length = 6){
$conso=array("b","c","d","f","g","h","j","k","l",
"m","n","p","r","s","t","v","w","x","y","z");
$vocal=array("a","e","i","o","u");
$password="";
srand ((double)microtime()*1000000);
$max = $length/2;
for($i=1; $i {
$password.=$conso[rand(0,19)];
$password.=$vocal[rand(0,4)];
}
return $password;
}

2. 生成一个随机字符串

如果不需要可阅读的字符串,使用此函数替代,即可创建一个随机字符串,作为用户的随机密码等。

/*************
*@l - length of random string
*/
function generate_rand($l){
$c= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
srand((double)microtime()*1000000);
for($i=0; $i $rand.= $c[rand()%strlen($c)];
}
return $rand;
}

3. 编码电子邮件地址

使用此代码,可以将任何电子邮件地址编码为 HTML 字符实体,以防止被垃圾邮件程序收集。

function encode_email($email='info@domain.com', $linkText='Contact Us', $attrs ='class="emailencoder"' )
{
// remplazar aroba y puntos
$email = str_replace('@', '@', $email);
$email = str_replace('.', '.', $email);
$email = str_split($email, 5);
$linkText = str_replace('@', '@', $linkText);
$linkText = str_replace('.', '.', $linkText);
$linkText = str_split($linkText, 5);
$part1 = '';
$part4 = '
';
$encoded = '';

return $encoded;
}

4. 验证邮件地址

电子邮件验证也许是中最常用的网页表单验证,此代码除了验证电子邮件地址,也可以选择检查邮件域所属 DNS 中的 MX 记录,使邮件验证功能更加强大。

function is_valid_email($email, $test_mx = false)
{
if(eregi("^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email))
if($test_mx)
{
list($username, $domain) = split("@", $email);
return getmxrr($domain, $mxrecords);
}
else
return true;
else
return false;
}

5. 列出目录内容

function list_files($dir)
{
if(is_dir($dir))
{
if($handle = opendir($dir))
{
while(($file = readdir($handle)) !== false)
{
if($file != "." && $file != ".." && $file != "Thumbs.db")
{
echo ''.$file.'
'."\n";
}
}
closedir($handle);
}
}
}

6. 销毁目录

删除一个目录,包括它的内容。

/*****
*@dir - Directory to destroy
*@virtual[optional]- whether a virtual directory
*/
function destroyDir($dir, $virtual = false)
{
$ds = DIRECTORY_SEPARATOR;
$dir = $virtual ? realpath($dir) : $dir;
$dir = substr($dir, -1) == $ds ? substr($dir, 0, -1) : $dir;
if (is_dir($dir) && $handle = opendir($dir))
{
while ($file = readdir($handle))
{
if ($file == '.' || $file == '..')
{
continue;
}
elseif (is_dir($dir.$ds.$file))
{
destroyDir($dir.$ds.$file);
}
else
{
unlink($dir.$ds.$file);
}
}
closedir($handle);
rmdir($dir);
return true;
}
else
{
return false;
}
}

7. 解析 JSON 数据

与大多数流行的 Web 服务如 Twitter 通过开放 API 来提供数据一样,它总是能够知道如何解析 API 数据的各种传送格式,包括 JSON,XML 等等。

$json_string='{"id":1,"name":"foo","email":"foo@foobar.com","interest":["wordpress","php"]} ';
$obj=json_decode($json_string);
echo $obj->name; //prints foo
echo $obj->interest[1]; //prints php

8. 解析 XML 数据

//xml string
$xml_string="


Foo
foo@bar.com


Foobar
foobar@foo.com

";
//load the xml string using simplexml
$xml = simplexml_load_string($xmphp开发中常用函数总结l_string);
//loop through the each node of user
foreach ($xml->user as $user)
{
//access attribute
echo $user['id']

//========================

php开发中常用函数总结
1.获取IP
2.时间的增加
3.检查日期是否合法日期
4.时间比较函数,返回两个日期相差几秒、几分钟、几小时或几天
5.PHP重定向
6.获取访问者浏览器
7.获取访问者操作系统
8.文件格式类
9.php生成excel文档
10.时间比较问题
11.提取页面和浏览器提交的变量,作用相当于使PHP.INI开了全局变量
12.读取文件函数
13.写入文件函数
14.页面快速转向
15.产生随机字符串函数
16.截取一定长度的字符串(该函数对GB2312使用有效)
17.取得客户端IP地址
18.判断邮箱地址
19.分页(两个函数配合使用)
20.获取新插入数据的ID
21.获得当前的脚本网址
22.把全角数字转为半角数字
23.去除HTML标记
24.相对路径转化成绝对路径
26.取得所有链接
27.HTML表格的每行转为CSV格式数组
28.将HTML表格的每行每列转为数组,采集表格数据
29.返回字符串中的所有单词 $distinct=true 去除重复
30.打印出为本PHP项目做出贡献的人员的清单



      function GetIP() { //获取IP
      if ($_SERVER["HTTP_X_FORWARDED_FOR"])
      $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
      else if ($_SERVER["HTTP_CLIENT_IP"])
      $ip = $_SERVER["HTTP_CLIENT_IP"];
      else if ($_SERVER["REMOTE_ADDR"])
      $ip = $_SERVER["REMOTE_ADDR"];
      else if (getenv("HTTP_X_FORWARDED_FOR"))
      $ip = getenv("HTTP_X_FORWARDED_FOR");
      else if (getenv("HTTP_CLIENT_IP"))
      $ip = getenv("HTTP_CLIENT_IP");
      else if (getenv("REMOTE_ADDR"))
      $ip = getenv("REMOTE_ADDR");
      else
      $ip = "Unknown";
     return $ip;
}
?>
{downsource}
function DateAdd($date, $int, $unit = "d") { //时间的增加(还可以改
进成时分秒都可以增加,有时间再补上)
  $dateArr = explode("-", $date);
  $value[$unit] = $int;
  return date("Y-m-d", mktime(0,0,0, $dateArr[1] + $value['m'],
$dateArr[2] + $value['d'], $dateArr[0] + $value['y']));
}
function GetWeekDay($date) { //计算出给出的日期是星期几
  $dateArr = explode("-", $date);
  return date("w", mktime(0,0,0,$dateArr[1],$dateArr[2],$dateArr
[0]));
}
?>


{downsource}

function check_date($date) { //检查日期是否合法日期
  $dateArr = explode("-", $date);
  if (is_numeric($dateArr[0]) && is_numeric($dateArr[1]) &&
is_numeric($dateArr[2])) {
  return checkdate($dateArr[1],$dateArr[2],$dateArr[0]);
  }
  return false;
}
function check_time($time) { //检查时间是否合法时间
  $timeArr = explode(":", $time);
  if (is_numeric($timeArr[0]) && is_numeric($timeArr[1]) &&
is_numeric($timeArr[2])) {
  if (($timeArr[0] >= 0 && $timeArr[0] = 0
&& $timeArr[1] = 0 && $timeArr[2]   return true;
  else
  return false;
  }
  return false;
}
function DateDiff($date1, $date2, $unit = "") { //时间比较函数,返回
两个日期相差几秒、几分钟、几小时或几天
  switch ($unit) {
  case 's':
  $dividend = 1;
  break;
  case 'i':
  $dividend = 60;
  break;
  case 'h':
  $dividend = 3600;
  break;
  case 'd':
  $dividend = 86400;
  break;
  default:
  $dividend = 86400;
  }
  $time1 = strtotime($date1);
  $time2 = strtotime($date2);
  if ($time1 && $time2)
  return (float)($time1 - $time2) / $dividend;
  return false;
}
?>
{downsource}
PHP重定向

方法一:header("Location: index.php");
方法二:echo "window.location ="$PHP_SELF";īpt>";
方法三:echo "";
?>
{downsource}
获取访问者浏览器

function browse_infor()
{
$browser="";$browserver="";
$Browsers =array
("Lynx","MOSAIC","AOL","Opera","JAVA","MacWeb","WebExplorer","OmniWe
b");
$Agent = $GLOBALS["HTTP_USER_AGENT"];
for ($i=0; $i {
if (strpos($Agent,$Browsers[$i]))
{
$browser = $Browsers[$i];
$browserver ="";
}
}
if (ereg("Mozilla",$Agent) && !ereg("MSIE",$Agent))
{
$temp =explode("(", $Agent); $Part=$temp[0];
$temp =explode("/", $Part); $browserver=$temp[1];
$temp =explode(" ",$browserver); $browserver=$temp[0];
$browserver =preg_replace("/([d.]+)/","1",$browserver);
$browserver = " $browserver";
$browser = "Netscape Navigator";
}
if (ereg("Mozilla",$Agent) && ereg("Opera",$Agent))
{
$temp =explode("(", $Agent); $Part=$temp[1];
$temp =explode(")", $Part); $browserver=$temp[1];
$temp =explode(" ",$browserver);$browserver=$temp[2];
$browserver =preg_replace("/([d.]+)/","1",$browserver);
$browserver = " $browserver";
$browser = "Opera";
}
if (ereg("Mozilla",$Agent) && ereg("MSIE",$Agent))
{
$temp = explode("(", $Agent); $Part=$temp[1];
$temp = explode(";",$Part); $Part=$temp[1];
$temp = explode(" ",$Part);$browserver=$temp[2];
$browserver =preg_replace("/([d.]+)/","1",$browserver);
$browserver = " $browserver";
$browser = "Internet Explorer";
}
if ($browser!="")
{
$browseinfo = "$browser$browserver";
}
else
{
$browseinfo = "Unknown";
}
return $browseinfo;
}
//调用方法$browser=browseinfo() ;直接返回结果
?>


{downsource}
获取访问者操作系统

function osinfo() {
$os="";
$Agent = $GLOBALS["HTTP_USER_AGENT"];
if (eregi('win',$Agent) && strpos($Agent, '95')) {
$os="Windows 95";
}
elseif (eregi('win 9x',$Agent) && strpos($Agent, '4.90')) {
$os="Windows ME";
}
elseif (eregi('win',$Agent) && ereg('98',$Agent)) {
$os="Windows 98";
}
elseif (eregi('win',$Agent) && eregi('nt 5.0',$Agent)) {
$os="Windows 2000";
}
elseif (eregi('win',$Agent) && eregi('nt',$Agent)) {
$os="Windows NT";
}
elseif (eregi('win',$Agent) && eregi('nt 5.1',$Agent)) {
$os="Windows XP";
}
elseif (eregi('win',$Agent) && ereg('32',$Agent)) {
$os="Windows 32";
}
elseif (eregi('linux',$Agent)) {
$os="Linux";
}
elseif (eregi('unix',$Agent)) {
$os="Unix";
}
elseif (eregi('sun',$Agent) && eregi('os',$Agent)) {
$os="SunOS";
}
elseif (eregi('ibm',$Agent) && eregi('os',$Agent)) {
$os="IBM OS/2";
}
elseif (eregi('Mac',$Agent) && eregi('PC',$Agent)) {
$os="Macintosh";
}
elseif (eregi('PowerPC',$Agent)) {
$os="PowerPC";
}
elseif (eregi('AIX',$Agent)) {
$os="AIX";
}
elseif (eregi('HPUX',$Agent)) {
$os="HPUX";
}
elseif (eregi('NetBSD',$Agent)) {
$os="NetBSD";
}
elseif (eregi('BSD',$Agent)) {
$os="BSD";
}
elseif (ereg('OSF1',$Agent)) {
$os="OSF1";
}
elseif (ereg('IRIX',$Agent)) {
$os="IRIX";
}
elseif (eregi('FreeBSD',$Agent)) {
$os="FreeBSD";
}
if ($os=='') $os = "Unknown";
return $os;
}
//调用方法$os=os_infor() ;
?>


{downsource}
文件格式类

$mime_types = array(
'gif' => 'image/gif',
'jpg' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'jpe' => 'image/jpeg',
'bmp' => 'image/bmp',
'png' => 'image/png',
'tif' => 'image/tiff',
'tiff' => 'image/tiff',
'pict' => 'image/x-pict',
'pic' => 'image/x-pict',
'pct' => 'image/x-pict',
'tif' => 'image/tiff',
'tiff' => 'image/tiff',
'psd' => 'image/x-photoshop',
'swf' => 'application/x-shockwave-flash',
'js' => 'application/x-javascrīpt',
'pdf' => 'application/pdf',
'ps' => 'application/postscrīpt',
'eps' => 'application/postscrīpt',
'ai' => 'application/postscrīpt',
'wmf' => 'application/x-msmetafile',
'css' => 'text/css',
'htm' => 'text/html',
'html' => 'text/html',
'txt' => 'text/plain',
'xml' => 'text/xml',
'wml' => 'text/wml',
'wbmp' => 'image/vnd.wap.wbmp',
'mid' => 'audio/midi',
'wav' => 'audio/wav',
'mp3' => 'audio/mpeg',
'mp2' => 'audio/mpeg',
'avi' => 'video/x-msvideo',
'mpeg' => 'video/mpeg',
'mpg' => 'video/mpeg',
'qt' => 'video/quicktime',
'mov' => 'video/quicktime',
'lha' => 'application/x-lha',
'lzh' => 'application/x-lha',
'z' => 'application/x-compress',
'gtar' => 'application/x-gtar',
'gz' => 'application/x-gzip',
'gzip' => 'application/x-gzip',
'tgz' => 'application/x-gzip',
'tar' => 'application/x-tar',
'bz2' => 'application/bzip2',
'zip' => 'application/zip',
'arj' => 'application/x-arj',
'rar' => 'application/x-rar-compressed',
'hqx' => 'application/mac-binhex40',
'sit' => 'application/x-stuffit',
'bin' => 'application/x-macbinary',
'uu' => 'text/x-uuencode',
'uue' => 'text/x-uuencode',
'latex'=> 'application/x-latex',
'ltx' => 'application/x-latex',
'tcl' => 'application/x-tcl',
'pgp' => 'application/pgp',
'asc' => 'application/pgp',
'exe' => 'application/x-msdownload',
'doc' => 'application/msword',
'rtf' => 'application/rtf',
'xls' => 'application/vnd.ms-excel',
'ppt' => 'application/vnd.ms-powerpoint',
'mdb' => 'application/x-msaccess',
'wri' => 'application/x-mswrite',
);
?>


{downsource}
php生成excel文档

header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:filename=test.xls");
echo "test1t";
echo "test2tn";
echo "test1t";
echo "test2tn";
echo "test1t";
echo "test2tn";
echo "test1t";
echo "test2tn";
echo "test1t";
echo "test2tn";
echo "test1t";
echo "test2tn";
//改动相应文件头就可以输出.doc .xls等文件格式了
?>


{downsource}
时间比较问题
举一个简单例子说明:比如一个论坛对当天发表的贴子用new图片标记一下。
方法一:

//$db->rows[$i][date]中为数据库中datetime字段值.
$today=time();
$theDay=date("Y-m-d H:i:s",$today-24*3600);
$newTag=$db->rows[$i][date]>=$theDay?"PHP十天快速入门等收集资料 src='../image/newinfor.gif'>":"";
//方法二:
$newTag=$db->rows[$i][date]>=date("Y-m-d 00:00:00")?"PHP十天快速入门等收集资料 src='../image/newinfor.gif'>":"";
?>


{downsource}
//提取页面和浏览器提交的变量,作用相当于使PHP.INI开了全局变量

@extract($_SERVER, EXTR_SKIP);
@extract($_SESSION, EXTR_SKIP);
@extract($_POST, EXTR_SKIP);
@extract($_FILES, EXTR_SKIP);
@extract($_GET, EXTR_SKIP);
@extract($_ENV, EXTR_SKIP);
?>


{downsource}
//读取文件函数

function readfromfile($file_name) {
if (file_exists($file_name)) {
$filenum=fopen($file_name,"r");
flock($filenum,LOCK_EX);
$file_data=fread($filenum, filesize($file_name));
rewind($filenum);
fclose($filenum);
return $file_data;
}
}
?>


{downsource}
//写入文件函数

function writetofile($file_name,$data,$method="w") {
$filenum=fopen($file_name,$method);
flock($filenum,LOCK_EX);
$file_data=fwrite($filenum,$data);
fclose($filenum);
return $file_data;
}
?>


{downsource}
//页面快速转向

function turntopage($url="index.php",$info = "页面转向
中...",$second=2){
print "n

n页面转向中....n";
print "n";
print "n";
print "nn";
print "n";
print " n";
print " n";
print " n";
print " n";
print " n";
print " n";
print " n";
print " n";
print " n";
print "
n";
print " bgcolor="#AA9FFF">n";
print " n";
print " n";
print " n";
print " n";
print " n";
print " n";
print " n";
print " n";
print " n";
print " n";
print "
页面转向提示信息
$info
n";
print " 如果你的浏览器不支持自动跳转,请按这里
n";
print "n";
exit;
?>




{downsource}
产生随机字符串函数

function random($length) {
$hash = @#@#;
$chars =
@#ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz@#;
$max = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i   $hash .= $chars[mt_rand(0, $max)];
}
return $hash;
}
?>


{downsource}
截取一定长度的字符串(该函数对GB2312使用有效)

function Wordscut($string, $length ,$sss=0) {
if(strlen($string) > $length) {
  if($sss){
  $length=$length - 3;
  $addstr=@# ...@#;
  }
  for($i = 0; $i   if(ord($string[$i]) > 127) {
  $wordscut .= $string[$i].$string[$i + 1];
  $i++;
  } else {
  $wordscut .= $string[$i];
  }
  }
  return $wordscut.$addstr;
}
return $string;
}
?>


{downsource}
取得客户端IP地址

function GetIP(){
  if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv
("HTTP_CLIENT_IP"), "unknown"))
  $ip = getenv("HTTP_CLIENT_IP");
&
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn