php课程教程
❶ php入门基础教程
PHP入门基础教程大全
PHP于1994年由Rasmus Lerdorf创建,刚刚开始是Rasmus Lerdorf为了要维护个人网页而制作的一个简单的用Perl语言编写的程序。这些工具程序用来显示 Rasmus Lerdorf 的个人履历,以及统计网页流量。后来又用C语言重新编写,包括可以访问数据库。他将这些程序和一些表单直译器整合起来,称为 PHP/FI。PHP/FI 可以和数据库连接,产生简单的动态网页程序。为帮助大家入门学习php,我为大家分享PHP入门知识教程如下:
1、嵌入方法:
类似ASP的<%,PHP可以是<?php或者是<?,结束符号是?>,当然您也可以自己指定。
2、引用文件:
引用文件的方法有两种:require 及 include。
require 的使用方法如 require("MyRequireFile.php"); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。
include 使用方法如 include("MyIncludeFile.php"); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。
3、注释方法:
<?php
echo "这是第一种例子。 " ; // 本例是 C++ 语法的注释 (PHP的注释跟C差不多!)
/* 本例采用多行的
注释方式 */
echo "这是第二种例子。 " ;
echo "这是第三种例子。 " ; # 本例使用 UNIX Shell 语法注释
?>
4、变量类型:
$mystring = "我是字符串" ;
$NewLine = "换行了 " ;
$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 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
范例:本例省略大括号。
<?php
if ($state==1)echo "哈哈" ;
?>
这里特别注意的是,判断是否相等是==而不是=,ASP程序员可能常犯这个错误,= 是赋值。
范例:本例的执行部分有三行,不可省略大括号。
<?php
if ($state==1) {
echo "哈哈 ;
echo "<br>" ;
}
?>
第两种是除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下
if (expr) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。
<?php
if ($state==1) {
echo "哈哈" ;
echo "<br>";
}
else{
echo "呵呵";
echo "<br>";
}
?>
第三种就是递归的 if..else 循环,通常用在多种决策判断时。它将数个 if..else 拿来合并运用处理。
直接看下面的例子
<?php
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 循环写的的例子。
<?php
for ( $i = 1 ; $i <= 10 ; $i ++) {
echo "这是第".$i."次循环<br>" ;
}
?>
3、 switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
语法如下
switch (expr) { case expr1: statement1; break; case expr2: statement2; break; default: statementN; break; }
其中的 expr 条件,通常为变量名称。而 case 后的 exprN,通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。
<?php
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中,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的某些地方相当简单。建议大家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数据库。在实际应用中应当加强点错误判断。
学会读取数据
先看两个函数:
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."<br>";
}
?>
当然,表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")&"<br>"
rs.movenext
loop
%>
当然先要连接数据库,一般我们 require_once('conn.php');而conn.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变量传递,如果表单中的一个 <input name="item1" type="text" id="item1">
表单以POST提交的,那么处理表单文件就可以用$_POST['item1']得到变量值,同样以GET提交的就是$_GET['item1']
是不是很简单?但是通常$exec会有问题,因为可能您的SQL语句会很长,您会遗漏.连接符,或者'来包围字符型字段。
我们可以注释mysql_query($exec);语句用echo $exec;代替来输出$exec以检查正确性。如果您还不能察觉$exec有什么错误的话,可以复制这个sql语句到phpmyadmin中执行,看看它的出错信息。还有需要注意的是,我们不要使用一些敏感的字符串作为字段名字,否则很可能会出现问题,比如说date什么的。变量的命名,字段的命名遵循一点规律有的时候对自己是一种好处,初学者并不可忽视其重要性。
学会SESSION的使用
SESSION的作用很多,最多用的就是站点内页面间变量传递。
在页面开始我们要session_start();开启SESSION;
然后就可以使用SESSION变量了,比如说要赋值就是:$_SESSION['item']="item1";要得到值就是$item1=$_SESSION['item'];,很简单吧。这里我们可能会使用到一些函数,比如说判断是不是某SESSION变量为空,可以这么写:empty($_SESSION['inum'])返回true or false。
下面综合一下前面所说的我们来看一个登陆程序,判断用户名密码是否正确。
登陆表单是这样:login.php
<table width="100%" height="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<form action="checklogin.php" method="post"><td align="center" valign="middle"><table width="400" border="0" cellpadding="5" cellspacing="1" class="tablebg">
<tr class="tdbg">
<td colspan="2"><p align="center">Administrators Login</p></td>
</tr>
<tr class="tdbg">
<td><p align="center">Username</p></td>
<td><p align="center">
<input name="username" type="text" id="username">
</p></td>
</tr>
<tr class="tdbg">
<td><p align="center">Password</p></td>
<td><p align="center">
<input name="password" type="password" id="password">
</p></td>
</tr>
<tr class="tdbg">
<td colspan="2"><p align="center">
<input type="submit" name="Submit" value="Submit">
<input type="reset" name="Submit2" value="Clear">
</p></td>
</tr>
</table></td></form>
</tr>
</table>
处理文件是这样
<?php
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是这样:
<?php
$conn=mysql_connect ("127.0.0.1", "", "");
mysql_select_db("shop");
?>
由于 $_SESSION['adminname']=$username;我们可以这样写验证是否登陆语句的文件:checkadmin.php
<?php
session_start();
if($_SESSION['adminname']=='')
{
echo "<script>alert('Please Login First');location.href='login.php';</script>";
}
?>
做一个分页显示
关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num
对于$page如果没有我们就让它=0,如果有<0就让它也=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<0)$page=0;
if($page>=ceil($num/10))$page=ceil($num/10)-1;//因为page是从0开始的,所以要-1
}
这样$exec可以这么写 $exec="select * from tablename limit ".($page*10).",10";
//一页是10记录的
最后我们需要做的就是几个连接:
<a href="xxx.php?page=0">FirstPage</a>
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a>
<a href="xxx.php?page=<?=($page+1)?>">NextPage</a>
<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a>
注意事项
1、注意不要漏了分号
2、注意不要漏了变量前的$
3、使用SESSION的时候注意不要遗漏session_start();
如果发生错误的时候,可以采用以下方法:
1、如果是SQL语句出错,就注释了然后输出SQL语句,注意也要注释调后续的执行SQL语句
2、如果是变量为空,大多是没有传递到位,输出变量检查一下,检查一下表单的id和name
3、如果是数据库连接出错,检查是否正确打开MY SQL和是否遗漏了连接语句
4、注意缩进,排除括号不区配的错误
在做大网站的时候,我的思路是先构建数据库,确定每一个字段的作用,和表之间的关系。然后设计后台界面,从添加数据开始做起,因为添加是否成功可以直接到数据库里面验证,做好了添加再做显示的页面,最后才是两者的结合。一般来说后台就包括添加删除修改和显示,后台没有问题了,前台也没有什么大问题。前台还需要注意安全性和容错还有就是输出格式。
学会用PHP上传文件和发邮件
上传文件表单必须加上 enctype="multipart/form-data"
和 <input type="file" name="file">
下面看一下代码:
$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:发件人 Reply-to:发件人的地址");
不过mail()需要服务器的支持,在WINDOWS下还需要配置SMTP服务器,一般来说外面的LINUX空间都行。
好像上传文件和发邮件比ASP简单很多,只要调用函数就可以了。ASP还需要用到服务器的不同组件比如FSO、JMAIL什么的。
;❷ PHP5教程之文件操作
一 引论
在任何计算机设备中 文件是都是必须的对象 而在web编程中 文件的操作一直是web程序员的头疼的地方 而 文件的操作在cms系统中这是必须的 非常有用的 我们经常遇到生成文件目录 文件(夹)编辑等操作 现在我把php中的这些函数做一详细总结并实例示范如何使用 关于对应的函数详细介绍 请查阅php手册 此处只总结重点 和需要注意的地方 (这在php手册是没有的 )( lian )
二 目录操作
首先介绍的是一个从目录读取的函数 opendir() readdir() closedir() 使用的时候是先打开文件句柄 而后迭代列出:
<?php $base_dir = filelist/ ; $fso = opendir($base_dir); echo $base_dir <hr/> ; while($flist=readdir($fso)){ echo $flist <br/> ; } closedir($fso) ?>
这是讲返回文件目录下面的文件已经目录的程序( 文件将返回false)
有时候需要知道目录的信息 可以使用dirname($path)和basename($path) 分别返回路径的目录部分和文件名名称部分 可用disk_free_space($path)返回看空间空余空间
创建命令:
mkdir($path )
是权限码 在非window下可用umask()函数设置
rmdir($path)
将删除路径在$path的文件
dir directory 类也是操作文件目录的重要类 有 个方法 read rewind close 这是一个仿面向对象的类 它先使用的是打开文件句柄 然后用指针的方式读取的 这里看php手册:
<?php$d = dir( /etc/php );echo Handle: $d >handle /n ;echo Path: $d >path /n ;while (false !== ($entry = $d >read())) { echo $entry /n ;}$d >close();?>
输出:
Handle: Resource id # Path: /etc/php apachecgicli
文件的属性也非常重要 文件属性包括创建时间 最后修改时间 所有者 文件组 类型 大小等
下面我们重点谈文件操作
三 文件操作
A 读文件
首先是一个文件看能不能读取(权限问题) 或者存在不 我们可以用is_readable函数获取信息
<?php$file = dirlist php ;if (is_readable($file) == false) { die( 文件不存在或者无法读取 );} else { echo 存在 ;}?>
判断文件存在的函数还有file_exists(下面演示) 但是这个显然无is_readable全面 当一个文件存在的话可以用
<?php$file = filelist php ;if (file_exists($file) == false) { die( 文件不存在 );}$data = file_get_contents($file);echo entities($data);?>
但是file_get_contents函数在较低版本上不支持 可以先创建文件的一个句柄 然后用指针读取全部:
$fso = fopen($cacheFile r ); $data = fread($fso filesize($cacheFile)); fclose($fso);
还有一种方式 可以读取二进制的文件:
$data = implode( file($file));
B 写文件
和读取文件的方式一样 先看看是不是能写:
<?php$file = dirlist php ;if (is_writable($file) == false) { die( 我是鸡毛 我不能 );}?>
能写了的话可以使用file_put_contents函数写入:
<?php $file = dirlist php ; if (is_writable($file) == false) { die( 我是鸡毛 我不能 ); } $data = 我是可鄙 我想要 ; file_put_contents ($file $data); ?>
file_put_contents函数在php 中新引进的函数(不知道存在的话用function_exists函数先判断一下)低版本的php无法使用 可以使用如下方式:
$f = fopen($file w ); fwrite($f $data); fclose($f);
替换之
写文件的时候有时候需要锁定 然后写:
function cache_page($pageurl $pagedata){ if(!$fso=fopen($pageurl w )){ $this >warns( 无法打开缓存文件 );//trigger_error return false; } if(!flock($fso LOCK_EX)){//LOCK_NB 排它型锁定 $this >warns( 无法锁定缓存文件 );//trigger_error return false; } if(!fwrite($fso $pagedata)){//写入字节流 serialize写入其他格式 $this >warns( 无法写入缓存文件 );//trigger_error return false; } flock($fso LOCK_UN);//释放锁定 fclose($fso); return true; }
C 复制 删除文件
php删除文件非常easy 用unlink函数简单操作:
<?php $file = dirlist php ; $result = @unlink ($file); if ($result == false) { echo 蚊子赶走了 ; } else { echo 无法赶走 ; } ?>
即可
复制文件也很容易:
<?php $file = yang txt ; $newfile = ji txt ; # 这个文件父文件夹必须能写 if (file_exists($file) == false) { die ( 小样没上线 无法复制 ); } $result = ($file $newfile); if ($result == false) { echo 复制记忆ok ; } ?>
可以使用rename()函数重命名一个文件夹 其他操作都是这几个函数组合一下就能实现的
D 获取文件属性
我说几个常见的函数:
获取最近修改时间:
<?php $file = test txt ; echo date( r filemtime($file)); ?>
返回的说unix的时间戳 这在缓存技术常用
相关的还有获取上次被访问的时间fileatime() filectime()当文件的权限 所有者 所有组或其它 inode 中的元数据被更新时间 fileowner()函数返回文件所有者
$owner = posix_getpwuid(fileowner($file));
(非window系统) ileperms()获取文件的权限
<?php$file = dirlist php ;$perms = substr(sprintf( %o fileperms($file)) );echo $perms;?>
filesize()返回文件大小的字节数:
<?php
// 输出类似 somefile txt: bytes
$filename = somefile txt ; echo $filename : filesize($filename) bytes ;
?>
获取文件的全部信息有个返回数组的函数stat()函数:
<?php $file = dirlist php ; $perms = stat($file); var_mp($perms); ?>
那个键对应什么可以查阅详细资料 此处不再展开
四 结束语
lishixin/Article/program/PHP/201311/21262
❸ PHP网络编程标准教程的目录
第1章 PHP概述001
1.1什么是PHP002
1.2PHP开发语言的特点002
1.3PHP的发展趋势003
1.4如何学好PHP004
1.5PHP的语法结构005
1.5.1PHP标识符的规则005
1.5.2PHP标记符的作用005
1.6程序注释006
1.6.1使用PHP注释006
1.6.2使用HTML注释007
1.6.3有效使用注释007
1.7PHP输出指令008
1.7.1应用print()语句输出字符008
1.7.2应用echo()语句输出字符009
1.7.3应用printf()语句格式化输出字符010
1.7.4应用sprintf()语句格式化输出字符011
1.8PHP包含语句011
1.8.1应用include()语句包含文件011
1.8.2应用require()语句包含文件012
1.8.3应用include_once()语句包含文件013
1.8.4应用require_once()语句包含文件013
1.8.5include()语句和require()语句的区别014
1.8.6include_once()语句和require_once()语句的区别016
1.9PHP动态网页的工作流程016
1.10体验PHP——编写第1个PHP Web016
1.10.1创建站点016
1.10.2使用Dreamweaver创建PHP文件017
1.10.3创建PHP标记017
1.10.4编写PHP代码017
1.10.5存储文件018
1.10.6网站运行结果018
1.11获取帮助信息018
1.11.1PHP学习工具和资料下载019
1.11.2获取PHP的源代码资源019
1.12本章小结020
第2章PHP环境的安装与配置021
2.1Windows下应用AppServ快速配置PHP开发环境022
2.2Windows下Apache+MySQL+PHP的安装配置024
2.2.1Windows下Apache的安装配置024
2.2.2Windows下MySQL的安装配置027
2.2.3Windows下PHP的安装配置028
2.3在Windows下架设IIS+PHP的执行环境029
2.3.1IIS的安装030
2.3.2架设PHP到IIS030
2.4Linux下Apache+MySQL+PHP的安装配置032
2.4.1Linux下Apache的安装配置032
2.4.2Linux下MySQL的安装配置033
2.4.3Linux下PHP的安装配置034
2.5获取PHP的配置信息035
2.5.1Apache服务器的基本配置035
2.5.2php.ini文件的基本配置035
2.6解决PHP的常见配置问题037
2.6.1解决Apache服务器端口冲突037
2.6.2更改Apache服务器默认存储的文件路径037
2.6.3在php.ini文件中更改上传文件的大小037
2.6.4增加PHP扩展模块038
2.6.5修改php.ini文件以支持MySQL数据库038
2.7本章小结038
第3章PHP语言基础039
3.1PHP常量040
3.1.1声明和使用常量040
3.1.2预定义常量041
3.2PHP变量042
3.2.1理解变量042
3.2.2声明变量043
3.2.3变量作用域043
3.2.4可变变量045
3.2.5预定义变量045
3.2.6变量的生存周期046
3.3数据类型046
3.3.1标量数据类型046
3.3.2复合数据类型050
3.3.3特殊数据类型051
3.3.4转换数据类型052
3.3.5检测数据类型053
3.4PHP的运算符054
3.4.1操作算术运算符054
3.4.2操作字符串运算符055
3.4.3操作赋值运算符055
3.4.4操作位运算符056
3.4.5递增或递减运算符056
3.4.6操作逻辑运算符057
3.4.7操作比较运算符058
3.4.8其他运算符059
3.4.9运算符的使用规则059
3.5PHP的表达式060
3.6自定义函数061
3.6.1定义和调用函数061
3.6.2在函数间传递参数062
3.6.3函数的返回值063
3.7本章小结064
第4章流程控制语句065
4.1算法066
4.1.1什么是算法066
4.1.2算法的描述方法066
4.1.3程序的3种控制结构067
4.2条件控制语句068
4.2.1if条件控制语句068
4.2.2switch多分支语句070
4.2.3if和switch语句的区别072
4.3循环语句074
4.3.1while循环语句074
4.3.2do...while循环语句076
4.3.3for循环语句077
4.3.4foreach循环语句078
4.3.5各循环语句间的区别079
4.4跳转语句080
4.4.1break跳转语句080
4.4.2continue跳转语句081
4.4.3return跳转语句082
4.5try…catch…throw语句083
4.6流程控制语句的嵌套083
4.7本章小结084
第5章 PHP与Web页面交互085
5.1表单数据的提交方式086
5.1.1通过GET方法提交数据086
5.1.2通过POST方法提交数据087
5.2获取提交的表单数据088
5.2.1获取按钮的数据088
5.2.2获取文本区域的数据089
5.2.3获取单选按钮的数据090
5.2.4获取复选框的数据091
5.2.5获取列表框的数据092
5.2.6获取文本域的数据093
5.2.7获取文件域的数据094
5.2.8获取隐藏域的数据094
5.3在PHP中处理表单变量095
5.4对表单传递的变量值进行编码与解码096
5.4.1URL编码与解码096
5.4.2BASE64编码与解码097
5.5本章小节098
第6章字符串操作099
6.1字符串简介100
6.2单引号和双引号的区别100
6.3字符串的连接符101
6.4字符串操作101
6.4.1去除字符串首尾空格和特殊字符101
6.4.2字符串与HTML相互转换103
6.4.3转义、还原字符串数据104
6.4.4获取字符串的长度106
6.4.5截取字符串107
6.4.6比较字符串108
6.4.7检索字符串111
6.4.8替换字符串113
6.4.9格式化字符串116
6.4.10连接、分割字符串117
6.4.11URL编码解码函数119
6.5本章小结121
第7章正则表达式122
7.1什么是正则表达式123
7.1.1正则表达式的发展史123
7.1.2正则表达式中的术语123
7.2正则表达式的语法规则123
7.2.1行定位符(^和$)124
7.2.2单词定界符(、B)125
7.2.3字符类([ ])125
7.2.4选择字符(|)126
7.2.5连字符(-)127
7.2.6排除字符([^])127
7.2.7限定符(? * + {n,m})127
7.2.8点号字符(.)128
7.2.9转义字符()128
7.2.10反斜线()128
7.2.11括号字符(())129
7.2.12反向引用130
7.2.13捕获130
7.2.14断言(环视)130
7.2.15模式修饰符131
7.2.16模式匹配的顺序131
7.3POSIX扩展正则表达式函数132
7.3.1ereg()函数和eregi()函数132
7.3.2ereg_replace()函数和eregi_replace()函数133
7.3.3split()函数和spliti()函数134
7.4PCRE兼容正则表达式函数135
7.4.1preg_grep()函数135
7.4.2preg_match()函数和preg_match_all()函数135
7.4.3preg_quote()函数137
7.4.4preg_replace()函数137
7.4.5preg_replace_callback()函数137
7.4.6preg_split()函数138
7.5本章小结138
第8章 PHP数组139
8.1数组的概述140
8.2数组的基本操作140
8.2.1声明数组140
8.2.2输出数组141
8.2.3定位数组141
8.2.4遍历数组143
8.2.5增加、删除数组元素147
8.2.6确定数组大小和惟一性149
8.2.7数组的排序150
8.2.8数组的合并与拆分151
8.2.9数组和字符串之间的转换154
8.3其他数组函数155
8.3.1创建指定范围的数组155
8.3.2对数组中的元素进行随机排序156
8.3.3对数组中所有元素进行求和156
8.3.4将一维数组拆分为多维数组157
8.4PHP全局数组158
8.4.1$_SERVER[ ]全局数组158
8.4.2$_GET[ ]和$_POST[ ]全局数组158
8.4.3$_COOKIE全局数组158
8.4.4$_ENV[ ]全局数组158
8.4.5$_REQUEST[ ]全局数组158
8.4.6$_SESSION[ ]全局数组158
8.4.7$_FILES[ ]全局数组159
8.5本章小结160
第9章日期和时间161
9.1日期和时间的概述162
9.2处理日期和时间162
9.2.1获取日期和时间163
9.2.2获取日期和时间信息164
9.2.3检验日期和时间的有效性165
9.2.4输出格式化的日期和时间166
9.3PHP的时间戳168
9.3.1PHP中的时间戳168
9.3.2获取格林威治标准时间的时间戳168
9.3.3获取本地化时间戳169
9.3.4获取当前时间戳171
9.4本章小结171
第10章文件和目录处理技术172
10.1文件处理技术的基本操作173
10.1.1打开文件173
10.1.2读取文件173
10.1.3写入文件178
10.1.4删除文件179
10.1.5关闭文件179
10.1.6复制文件179
10.1.7移动和重命名文件180
10.2文件的高级处理技术180
10.2.1访问远程文件181
10.2.2测试文件指针的位置181
10.2.3文件指针的定位181
10.2.4锁定文件183
10.3目录操作技术183
10.3.1打开目录183
10.3.2读取目录183
10.3.3建立目录184
10.3.4删除目录184
10.3.5改变目录185
10.3.6关闭目录185
10.4文件上传和下载技术185
10.4.1开启PHP文件上传功能185
10.4.2POST方法上传文件186
10.4.3上传多个文件187
10.4.4生成临时文件188
10.4.5下载文件188
10.5本章小结189
第11章图形图像处理技术190
11.1GD函数库的概述191
11.1.1Windows下打开GD2函数库支持191
11.1.2Linux下打开GD2函数库支持191
11.1.3应用GD2函数创建图像192
11.2基本的图像处理技术193
11.2.1创建画布193
11.2.2设置颜色193
11.2.3生成图像194
11.2.4销毁图像195
11.2.5绘制点与线195
11.2.6绘制几何图形197
11.2.7填充几何图形198
11.2.8输出文字201
11.3Jpgraph的安装与配置203
11.3.1Jpgraph的安装204
11.3.2Jpgraph的配置204
11.4图形图像的典型应用204
11.4.1应用图像处理技术生成验证码204
11.4.2应用图像处理技术生成饼形图206
11.4.3应用柱形图统计商品月销量208
11.4.4应用折线图分析学习PHP的过程209
11.5本章小结210
第12章 Cookie和会话控制211
12.1概述212
12.1.1Cookie概述212
12.1.2会话控制212
12.2Cookie的操作212
12.2.1设置Cookie212
12.2.2访问Cookie213
12.2.3删除Cookie213
12.2.4Cookie数组214
12.3Cookie的应用215
12.4会话的操作216
12.4.1会话的基本方式216
12.4.2配置PHP的会话217
12.4.3创建会话217
12.5会话的应用219
12.5.1登录验证219
12.5.2通过Session禁用页面刷新221
12.6本章小结222
第13章面向对象223
13.1概述224
13.1.1面向对象的概念224
13.1.2面向对象语言的3大特点224
13.1.3PHP 5.0面向对象的新特性225
13.2类和对象225
13.2.1类的结构及声明方式225
13.2.2属性和方法的定义225
13.2.3使用构造函数226
13.2.4使用析构函数227
13.2.5类的实例化227
13.3控制访问权限228
13.4类的继承和重载228
13.4.1继承的概念228
13.4.2PHP中实现继承的方法228
13.4.3重载的概念229
13.4.4PHP中实现类重载的方法229
13.4.5用final关键字对继承和重载进行限制229
13.5接口230
13.5.1接口的概念230
13.5.2PHP实现接口230
13.6PHP面向对象新特性231
13.6.1Per-Class常量的应用231
13.6.2对象的克隆231
13.6.3__autoload()方法232
13.6.4使用instanceof关键字判断实例类型232
13.6.5使用this关键字调用类成员232
13.6.6使用parent关键字调用父类成员233
13.6.7使用self关键字调用类体中的静态成员233
13.6.8辅助函数234
13.7PHP中面向对象的应用238
13.7.1应用面向对象的方式实现用户身份验证238
13.7.2数据的分页显示239
13.8本章小结241
第14章 MySQL数据库基础242
14.1MySQL概述243
14.1.1MySQL的特点243
14.1.2SQL和MySQL243
14.2MySQL服务器的启动和关闭244
14.2.1启动MySQL服务器244
14.2.2连接MySQL服务器245
14.2.3关闭MySQL服务器245
14.3操作数据库246
14.3.1创建数据库246
14.3.2选择数据库247
14.3.3删除数据库247
14.4操作数据表247
14.4.1创建表248
14.4.2修改表249
14.4.3删除表249
14.5操作数据250
14.5.1添加语句(INSERT)250
14.5.2修改语句(UPDATE)251
14.5.3删除语句(DELETE)251
14.5.4批量增加记录语句(LOAD DATA和MYSQLIMPORT)251
14.6数据查询语句252
14.6.1运用SELECT查询(对数据表的选择)252
14.6.2WHERE条件语句的应用253
14.6.3GROUP BY 对结果分组254
14.6.4DISTINCT在结果中去除重复行254
14.6.5ORDER BY对结果排序254
14.6.6LIKE应用255
14.6.7CONCAT联合多列255
14.6.8LIMIT限定结果行数256
14.6.9使用函数和表达式256
14.7数据类型257
14.7.1数字类型257
14.7.2字符串类型258
14.7.3日期和时间数据类型259
14.8PhpMyAdmin图形化管理工具260
14.8.1库级操作260
14.8.2表级操作261
14.8.3增删改数据262
14.8.4查询数据263
14.8.5数据的导入与导出264
14.9本章小结266
第15章数据库编程技术267
15.1PHP操纵MySQL数据库268
15.1.1建立与MySQL数据库的连接268
15.1.2选择和使用MySQL数据库268
15.1.3执行SQL指令269
15.1.4分析结果集269
15.1.5断开与MySQL数据库的连接270
15.2管理MySQL数据库中的数据271
15.2.1向数据库中添加数据271
15.2.2编辑数据库数据272
15.2.3从数据库中删除数据274
15.2.4批量数据操作276
15.3对MySQL表的查询277
15.3.1通用查询277
15.3.2高级查询279
15.3.3分组统计280
15.3.4对查询结果分页显示282
15.3.5对查询结果进行跳转分页显示283
15.4数据备份和恢复286
15.5本章小结288
第16章PHP的字符编码289
16.1了解网页字符编码290
16.1.1ASCII 字符集290
16.1.2ISO 8859 字符集290
16.1.3GB2312与GBK编码290
16.1.4Unicode字符集291
16.1.5UTF-8编码291
16.2PHP网页的字符编码292
16.2.1正确使用文件编码292
16.2.2编码转换293
16.2.3检测字符串的编码294
16.2.4字符编码的优先级294
16.2.5乱码产生的根源和解决方案295
16.3PHP开发中的中文编码问题295
16.3.1数据库中的字符集编码问题295
16.3.2解决页面中的乱码问题296
16.3.3通过PHP自定义函数无乱码截取中文字符串298
16.4PHP的区域化设置300
16.4.1PHP网页的区域化301
16.4.2使用setlocale()函数设置区域化302
16.5本章小节302
第17章 PHP的调试与异常处理303
17.1基本调试策略304
17.2常见错误分析304
17.2.1语法错误304
17.2.2语义错误307
17.2.3注释错误307
17.2.4运行错误308
17.2.5逻辑错误310
17.3PHP.INI中的错误处理设置310
17.4错误处理312
17.4.1错误的隐藏312
17.4.2错误的定制312
17.4.3超时错误的处理313
17.5程序调试313
17.5.1应用DIE语句调试313
17.5.2应用PRINT语句调试314
17.5.3应用MySQL_error语句输出错误信息315
17.6MySQL的常见错误316
17.6.1PHP与MySQL连接错误316
17.6.2解决数据库乱码问题317
17.6.3上传二进制数据到数据库失败317
17.7本章小结319
第18章PHP与XML的网络开发320
18.1XML的概述321
18.2XML语法321
18.2.1XML文档结构321
18.2.2XML声明321
18.2.3处理指令322
18.2.4XML注释322
18.2.5XML元素322
18.2.6XML属性323
18.2.7使用CDATA标记323
18.2.8XML命名空间324
18.3在PHP中创建XML文档324
18.4通过DOM操作XML文档325
18.4.1通过DOM类库创建XML文档325
18.4.2通过getElementsByTagName()方法读取XML327
18.4.3通过DOM类库向XML中添加数据328
18.4.4通过Xpath查询XML中的数据330
18.4.5通过replaceChild()方法修改XML文档331
18.4.6通过removeChild()方法删除XML文档334
18.5本章小结335
第19章 Smarty模板技术336
19.1Smarty简介337
19.1.1什么是Smarty337
19.1.2Smarty与MVC337
19.1.3Smarty的特点337
19.2Smarty的安装配置337
19.2.1Smarty下载与安装337
19.2.2第1个Smarty程序338
19.2.3配置Smarty339
19.3Smarty模板设计340
19.3.1Smarty模板文件340
19.3.2注释340
19.3.3变量340
19.3.4修饰变量(variable modifers)343
19.3.5内建函数344
19.3.6自定义函数349
19.4Smarty程序设计351
19.4.1Smarty中的常用方法352
19.4.2Smarty的配置变量353
19.4.3Smarty缓存354
19.5本章小结354
第20章注册和登录355
20.1设计思路356
20.1.1功能阐述356
20.1.2程序业务流程356
20.1.3文件组织结构356
20.2数据库设计357
20.3连接数据库358
20.3.1关键函数358
20.3.2功能实现359
20.4用户注册模块359
20.4.1关键函数359
20.4.2页面设计360
20.4.3功能实现361
20.5检测用户是否被占用362
20.5.1关键函数362
20.5.2页面设计363
20.5.3功能实现364
20.6验证用户注册信息是否合法365
20.6.1关键函数365
20.6.2功能实现365
20.7用户登录366
20.7.1关键函数366
20.7.2页面设计367
20.7.3功能实现368
20.8图片验证码功能369
20.8.1关键函数介绍369
20.8.2页面设计371
20.8.3功能实现371
20.9退出登录功能372
20.9.1关键函数372
20.9.2功能实现372
20.10本章小节372
第21章留言本373
21.1设计思路374
21.1.1功能阐述374
21.1.2程序业务流程374
21.1.3文件组织结构375
21.2数据库设计376
21.3连接数据库377
21.3.1关键函数介绍377
21.3.2功能实现377
21.4添加留言模块378
21.4.1关键函数378
21.4.2页面设计378
21.4.3功能实现380
21.5查看留言模块381
21.5.1关键函数381
21.5.2页面设计381
21.5.3功能实现381
21.6修改留言模块383
21.6.1关键函数383
21.6.2页面设计384
21.6.3功能实现385
21.7删除留言模块386
21.7.1关键函数386
21.7.2页面设计386
21.7.3功能实现387
21.8查询留言模块388
21.8.1关键函数388
21.8.2页面设计388
21.8.3功能实现389
21.9本章小结390
第22章电子商务391
22.1需求分析392
22.2系统分析和设计392
22.2.1可行性分析392
22.2.2功能结构分析和设计392
22.2.3系统流程概述393
22.2.4开发环境394
22.3数据库设计394
22.3.1数据库的分析395
22.3.2创建数据库395
22.3.3创建数据表395
22.3.4数据表的结构395
22.4技术准备398
22.4.1代码书写规则398
22.4.2网站架设之初398
22.4.3文件管理规划399
22.5前台开发399
22.5.1设计分析399
22.5.2前台首页的实现399
22.5.3商品展示模块的实现402
22.5.4购物车的实现405
22.5.5收银台的实现408
22.5.6用户登录模块的实现409
22.5.7本站公告模块的实现417
22.6后台开发418
22.6.1设计分析418
22.6.2后台首页418
22.6.3后台登录模块420
22.6.4商品信息管理模块422
22.6.5短信管理模块426
22.6.6订单信息管理模块428
22.7电子商务完整清单431
22.8本章小结432
第23章播客433
23.1了解播客434
23.1.1播客起源434
23.1.2播客的发展前景434
23.2系统设计435
23.2.1系统功能概述435
23.2.2系统功能结构435
23.2.3系统流程概述436
23.2.4开发环境437
23.2.5文件夹组织结构437
23.3Adodb类库的安装配置437
23.4数据库设计438
23.4.1数据库的分析438
23.4.2创建数据库438
23.4.3创建数据表438
23.5前台开发439
23.5.1设计分析439
23.5.2在线播放功能的实现440
23.5.3最新推出功能的实现448
23.5.4上传视频文件功能的实现450
23.5.5视频下载功能的实现452
23.5.6创建播客个人主页453
23.5.7站内订阅457
23.5.8订阅管理458
23.6后台开发462
23.6.1设计分析462
23.6.2上传视频管理功能的实现463
23.6.3动态创建视频文件类型465
23.6.4管理员管理466
23.7本章小结468
附录实例快速检索469