PHP遍历文件及其文件夹下的文件

<?php
$path = '.';  
function getfiles($path)  
{  
    if(!is_dir($path)) return;  
	$handle  = opendir($path);  
    while( false !== ($file = readdir($handle)))  
    {  
        if($file != '.' && $file!='..')  
        {  
            $path2= $path.'/'.$file;  
            if(is_dir($path2))  
            {  
				getfiles($path2);  
            }else 
            {    
               echo $path2.'<br/>';  
            }  
        }  
    }  
}  
 
 print_r( getfiles($path));  
?>

yum安装LAMP

1. 安装Apahce, PHP, MySQL以及php连接mysql库组件。
#yum -y install httpd php mysql mysql-server php-mysql
yum会到指定的服务器(mirror:163.com服务器)下载对应的软件版本,并自动处理依赖关系,并进行安装。

2. 安装apache扩展
#yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql
让apache更好的支持其他的软件。

3. 安装php的扩展
#yum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc
apache本身并不支持php文件,要安装对应的php软件,然后进行http.conf配置;让apache能解析.php文件。

4. 安装MySQL的扩展
#yum -y install mysql-connector-odbc mysql-devel libdbi-dbd-mysql
跟好的实现mysql的功能。

完成后,用/etc/init.d/mysqld start 启动mysql
a.设置mysql密码
#mysqladmin -u root -p password(设置mysql的root密码)
安装后mysql到root密码默认为空,需要重新设置。
b.允许远程登录
mysql -u root -p
Enter Password:
mysql>GRANT ALL PRIVILEGES ON *.* TO ‘用户名’@’%’ IDENTIFIED BY ‘密码’ WITH GRANT OPTION;
完成后就能用mysql-front远程管理mysql了。

5. 配置开机启动服务
#/sbin/chkconfig httpd on [设置apache服务器httpd服务开机启动]
#/sbin/service httpd start [启动httpd服务,与开机启动无关]
#/sbin/service mysqld start [启动mysqld服务,与开机启动无关]

6. 简单配置文件:
apache的配置文件是/etc/httpd/conf下
modules放在/usr/lib/httpd下
php的配置文件在/etc/php.d/下 和/etc/php.ini
php的modules放在/usr/lib/php/modules下

7. 安装Tomcat5
#yum -y install tomcat5 tomcat5-webapps tomcat5-admin-webapps
安装Tomcat5安装包和对应的依赖关系包

8. 启动Tomcat5
#service tomcat5 start
#chkconfig tomcat5 on

9. 在浏览器输入http://你的IP:8080/,可以看到Apache SoftWare Foundation页,如果看不到,请确认是否是防火墙问题
看到一个猫头 ——————>tomcat5安装成功

10. Apache与Tomcat整合(这个文件我是找不到)
如果网站需同时整合Apache与Tomcat可以使用JK或者Proxy方式
使用VI编辑proxy_ajp.conf文件
#vi /etc/httpd/conf.d/proxy_ajp.conf
输入以下内容
ProxyPass /tomcat/ ajp://localhost:8009/
存储文件后,重启Apache

#service httpd restart

在浏览器输入http://你的IP/tomcat/,可以看到Apache SoftWare Foundation页
As you may have guessed by now, this is the default Tomcat home page. It can be found on the local filesystem at:

$CATALINA_HOME/webapps/ROOT/index.jsp

这样就可以解析 .jsp文件。

 

1.apache的根目录为/var/www/html/

2.如果外网不能访问,需要配置iptables防火墙,开放环境就直接关闭好了

a.添加.允许访问端口{21: ftp, 80: http}.
iptables -I RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT
iptables -I RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
b.关闭防火墙{不推荐}.
service iptables stop
c.重置加载防火墙
service iptables restart

 

通过phpmyadmin把(excel->csv)文件导入到mysql

/**************’D:BOOK.csv用写字板打开为,可以发现以“,”换字段,"n"换行********************************/

0,AAA,aaa,100
1,BBB,bbb,200
2,CCC,ccc,300

导入到mysql的sql语句为:

LOAD DATA LOCAL INFILE ‘D:\BOOK.csv’ INTO TABLE `book` FIELDS TERMINATED BY ‘,’ ESCAPED BY ‘\’ LINES TERMINATED BY ‘n';

通过phpmyadmin把(excel->csv)文件导入到mysql

/**************’D:\BOOK.csv用写字板打开为,可以发现以“,”换字段,"\n"换行********************************/

0,AAA,aaa,100
1,BBB,bbb,200
2,CCC,ccc,300

导入到mysql的sql语句为:

LOAD DATA LOCAL INFILE ‘D:\\BOOK.csv’ INTO TABLE `book` FIELDS TERMINATED BY ‘,’ ESCAPED BY ‘\\’ LINES TERMINATED BY ‘\n';

上传文件–PHP

<?php
/******************************************************************************

参数说明:
$max_file_size : 上传文件大小限制, 单位BYTE
$destination_folder : 上传文件路径
$watermark   : 是否附加水印(1为加水印,其他为不加水印);

使用说明:
1. 将PHP.INI文件里面的"extension=php_gd2.dll"一行前面的;号去掉,因为我们要用到GD库;
2. 将extension_dir =改为你的php_gd2.dll所在目录;
******************************************************************************/

//上传文件类型列表
$uptypes=array(
    ‘image/jpg’,
    ‘image/jpeg’,
    ‘image/png’,
    ‘image/pjpeg’,
    ‘image/gif’,
    ‘image/bmp’,
    ‘image/x-png’
);

$max_file_size=2000000;     //上传文件大小限制, 单位BYTE
$destination_folder="uploadimg/"; //上传文件路径
$watermark=1;      //是否附加水印(1为加水印,其他为不加水印);
$watertype=1;      //水印类型(1为文字,2为图片)
$waterposition=1;     //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);
$waterstring="
http://www.xplore.cn/"; //水印字符串
$waterimg="xplore.gif";    //水印图片
$imgpreview=1;      //是否生成预览图(1为生成,其他为不生成);
$imgpreviewsize=1/2;    //缩略图比例
?>
<html>
<head>
<title>ZwelL图片上传程序</title>
<style type="text/css">
<!–
body
{
     font-size: 9pt;
}
input
{
     background-color: #66CCFF;
     border: 1px inset #CCCCCC;
}
–>
</style>
</head>

<body>
<form enctype="multipart/form-data" method="post" name="upform">
上传文件:
<input name="upfile" type="file">
<input type="submit" value="上传"><br>
允许上传的文件类型为:<?=implode(‘, ‘,$uptypes)?>
</form>

<?php
if ($_SERVER[‘REQUEST_METHOD’] == ‘POST’)
{
    if (!is_uploaded_file($_FILES["upfile"][tmp_name]))
    //是否存在文件
    {
         echo "图片不存在!";
         exit;
    }

    $file = $_FILES["upfile"];
    if($max_file_size < $file["size"])
    //检查文件大小
    {
        echo "文件太大!";
        exit;
    }

    if(!in_array($file["type"], $uptypes))
    //检查文件类型
    {
        echo "文件类型不符!".$file["type"];
        exit;
    }

    if(!file_exists($destination_folder))
    {
        mkdir($destination_folder);
    }

    $filename=$file["tmp_name"];
    $image_size = getimagesize($filename);
    $pinfo=pathinfo($file["name"]);
    $ftype=$pinfo[‘extension’];
    $destination = $destination_folder.time().".".$ftype;
    if (file_exists($destination) && $overwrite != true)
    {
        echo "同名文件已经存在了";
        exit;
    }

    if(!move_uploaded_file ($filename, $destination))
    {
        echo "移动文件出错";
        exit;
    }

    $pinfo=pathinfo($destination);
    $fname=$pinfo[basename];
    echo " <font color=red>已经成功上传</font><br>文件名: <font color=blue>".$destination_folder.$fname."</font><br>";
    echo " 宽度:".$image_size[0];
    echo " 长度:".$image_size[1];
    echo "<br> 大小:".$file["size"]." bytes";

    if($watermark==1)
    {
        $iinfo=getimagesize($destination,$iinfo);
        $nimage=imagecreatetruecolor($image_size[0],$image_size[1]);
        $white=imagecolorallocate($nimage,255,255,255);
        $black=imagecolorallocate($nimage,0,0,0);
        $red=imagecolorallocate($nimage,255,0,0);
        imagefill($nimage,0,0,$white);
        switch ($iinfo[2])
        {
            case 1:
            $simage =imagecreatefromgif($destination);
            break;
            case 2:
            $simage =imagecreatefromjpeg($destination);
            break;
            case 3:
            $simage =imagecreatefrompng($destination);
            break;
            case 6:
            $simage =imagecreatefromwbmp($destination);
            break;
            default:
            die("不支持的文件类型");
            exit;
        }

        imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);
        imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white);

        switch($watertype)
        {
            case 1:   //加水印字符串
            imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black);
            break;
            case 2:   //加水印图片
            $simage1 =imagecreatefromgif("xplore.gif");
            imagecopy($nimage,$simage1,0,0,0,0,85,15);
            imagedestroy($simage1);
            break;
        }

        switch ($iinfo[2])
        {
            case 1:
            //imagegif($nimage, $destination);
            imagejpeg($nimage, $destination);
            break;
            case 2:
            imagejpeg($nimage, $destination);
            break;
            case 3:
            imagepng($nimage, $destination);
            break;
            case 6:
            imagewbmp($nimage, $destination);
            //imagejpeg($nimage, $destination);
            break;
        }

        //覆盖原上传文件
        imagedestroy($nimage);
        imagedestroy($simage);
    }

    if($imgpreview==1)
    {
    echo "<br>图片预览:<br>";
    echo "<img src=\"".$destination."\" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);
    echo " alt=\"图片预览:\r文件名:".$destination."\r上传时间:\">";
    }
}
?>
</body>

简单分页–php

下面这段代码功能比较简单,用于了解分页的基本逻辑。仅供学习使用

<?php
include("conn.php");

$pagesize=5;
$url=$_SERVER["REQUEST_URI"];
$url=parse_url($url);
$url=$url[path];

$numq=mysql_query("SELECT * FROM `test`");
$num = mysql_num_rows($numq);

if($_GET[page]){
$pageval=$_GET[page];
$page=($pageval-1)*$pagesize;
$page.=’,';
}
if($num > $pagesize){
if($pageval<=1)$pageval=1;
echo "共 $num 条".
   " <a href=$url?page=".($pageval-1).">上一页</a> <a href=$url?page=".($pageval+1).">下一页</a>";
}

   echo $SQL="SELECT * FROM `test` limit $page $pagesize ";
    $query=mysql_query($SQL);
    while($row=mysql_fetch_array($query)){

    echo "<hr><b>".$row[name]." | ".$row[sex];

    }
?>

完整分页–php

asp的朋友可以通过看懂原理自己书写asp分页代码。也可以到网上找。有很多的现成代码,自己修改下九可以了。

<?php

function _PAGEFT($totle, $displaypg = 20, $url = ”) {

   global $page, $firstcount, $pagenav, $_SERVER;

   $GLOBALS["displaypg"] = $displaypg;

   if (!$page)
    $page = 1;
   if (!$url) {
    $url = $_SERVER["REQUEST_URI"];
   }

   //URL分析:
   $parse_url = parse_url($url);
   $url_query = $parse_url["query"]; //单独取出URL的查询字串
   if ($url_query) {
    $url_query = ereg_replace("(^|&)page=$page", "", $url_query);
    $url = str_replace($parse_url["query"], $url_query, $url);
    if ($url_query)
     $url .= "&page";
    else
     $url .= "page";
   } else {
    $url .= "?page";
   }
   $lastpg = ceil($totle / $displaypg); //最后页,也是总页数
   $page = min($lastpg, $page);
   $prepg = $page -1; //上一页
   $nextpg = ($page == $lastpg ? 0 : $page +1); //下一页
   $firstcount = ($page -1) * $displaypg;

   //开始分页导航条代码:
   $pagenav = "显示第 <B>" . ($totle ? ($firstcount +1) : 0) . "</B>-<B>" . min($firstcount + $displaypg, $totle) . "</B> 条记录,共 $totle 条记录";

   //如果只有一页则跳出函数:
   if ($lastpg <= 1)
    return false;

   $pagenav .= " <a href=’$url=1′>首页</a> ";
   if ($prepg)
    $pagenav .= " <a href=’$url=$prepg’>前页</a> ";
   else
    $pagenav .= " 前页 ";
   if ($nextpg)
    $pagenav .= " <a href=’$url=$nextpg’>后页</a> ";
   else
    $pagenav .= " 后页 ";
   $pagenav .= " <a href=’$url=$lastpg’>尾页</a> ";

   //下拉跳转列表,循环列出所有页码:
   $pagenav .= " 到第 <select name=’topage’ size=’1′ onchange=’window.location=\"$url=\"+this.value’>\n";
   for ($i = 1; $i <= $lastpg; $i++) {
    if ($i == $page)
     $pagenav .= "<option value=’$i’ selected>$i</option>\n";
    else
     $pagenav .= "<option value=’$i’>$i</option>\n";
   }
   $pagenav .= "</select> 页,共 $lastpg 页";
}

include("conn.php");

$result=mysql_query("SELECT * FROM `test`");
$total=mysql_num_rows($result);
//调用pageft(),每页显示10条信息(使用默认的20时,可以省略此参数),使用本页URL(默认,所以省略掉)。
_PAGEFT($total,5);
echo $pagenav;

$result=mysql_query("SELECT * FROM `test` limit $firstcount,$displaypg ");
while($row=mysql_fetch_array($result)){

echo "<hr><b>".$row[name]." | ".$row[sex];

}

?>

简单留言板制作(php100教程内容)

1.conn.php

<?php

/*
* PHP100Job v1.0
* Programmer : Msn/QQ
haowubai@hotmail.com (925939)
*
www.php100.com Develop a project PHP – MySQL – Apache
* Window 2003 – Preferences – PHPeclipse – PHP – Code Templates
*/

$conn = @ mysql_connect("localhost", "root", "") or die("数据库链接错误");
mysql_select_db("bbs", $conn);
mysql_query("set names ‘GBK’"); //使用GBK中文编码;

function htmtocode($content) {
$content = str_replace("\n", "<br>", str_replace(" ", "&nbsp;", $content));
return $content;
}

//$content=str_replace("’","‘",$content);
//htmlspecialchars();

?>

2.head.php

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title></title>
<link href="images/css.css" rel="stylesheet" type="text/css">
<b><a href="add.php">添加留言</a> | <a href="list.php">浏览留言</a> | <a href="login.php">登陆</a> </b>
<hr size=1>
3.login.php

<?php
/*
* PHP100Job v1.0
* Programmer : Msn/QQ haowubai@hotmail.com (925939)
* www.php100.com Develop a project PHP – MySQL – Apache
* Window 2003 – Preferences – PHPeclipse – PHP – Code Templates
*/
include("conn.php");

if($_GET[out]){
setcookie("cookie", "out");
    echo "<script language=\"javascript\">location.href=’login.php';</script>";
}

if($_POST[id]==’admin’){
    $pw=md5($_POST[pw]);
    if($pw==’e1bfd762321e409cee4ac0b6e841963c’){
     setcookie("cookie", "ok");
       echo "<script language=\"javascript\">location.href=’login.php';</script>";
    }
}
include("head.php");
if($_COOKIE[‘cookie’]!=’ok’){
?>

<SCRIPT language=javascript>
function Checklogin()
{
if (myform.id.value=="")
{
   alert("请填写登录名");
   myform.id.focus();
   return false;
}
   if (myform.pw.value=="")
{
   alert("密码不能为空");
   myform.pw.focus();
   return false;
}
}
</SCRIPT>

<form action="" method="post" name="myform" onsubmit="return Checklogin();">
ID:<input type="text" name="id" /><br>
PW:<input type="password" name="pw" /> <input type="submit" name="submit" value="登陆"/>
</form>
<?
}else{
?>
<a href=’?out=login’>退出</a>
<?
}
?>

4.add.php

<?php
/*
* PHP100Job v1.0
* Programmer : Msn/QQ
haowubai@hotmail.com (925939)
*
www.php100.com Develop a project PHP – MySQL – Apache
* Window 2003 – Preferences – PHPeclipse – PHP – Code Templates
*/
include("conn.php");

if($_POST[‘submit’]){

$sql="insert into message (id,user,title,content,lastdate) " .
   "values (”,’$_POST[user]’,’$_POST[title]’,’$_POST[content]’,now())";
mysql_query($sql);
echo "<script language=\"javascript\">alert(‘添加成功’);history.go(-1)</script>";

}
include("head.php");
?>
<SCRIPT language=javascript>
function CheckPost()
{
if (myform.user.value=="")
{
   alert("请填写用户名");
   myform.user.focus();
   return false;
}
if (myform.title.value.length<5)
{
   alert("标题不能少于5个字符");
   myform.title.focus();
   return false;
}
if (myform.content.value=="")
{
   alert("必须要填写留言内容");
   myform.content.focus();
   return false;
}
}
</SCRIPT>

<form action="add.php" method="post" name="myform" onsubmit="return CheckPost();">
用户:<input type="text" size="10" name="user" /><br>
标题:<input type="text" name="title" /><br/>
内容:<textarea name="content" cols="60" rows="9"></textarea><br/>

<input type="submit" name="submit" value="发布留言"/>

</form>

5.list.php

<?php
/*
* PHP100Job v1.0
* Programmer : Msn/QQ haowubai@hotmail.com (925939)
* www.php100.com Develop a project PHP – MySQL – Apache
* Window 2003 – Preferences – PHPeclipse – PHP – Code Templates
*/
include("conn.php");

include("head.php");
$SQL="SELECT * FROM `message` order by id desc";
$query=mysql_query($SQL);
while($row=mysql_fetch_array($query)){
?>

<table width=500 border="0" cellpadding="5" cellspacing="1" bgcolor="#add3ef">
<tr bgcolor="#eff3ff">
<td>标题:<?=$row[title]?> 用户:<?=$row[user]?></td>
</tr>
<tr bgColor="#ffffff">
<td>内容:<?
echo htmtocode($row[content]);
   ?></td>
</tr>
</table>
<?
}
?>

Wrong permissions on configuration file, should not be world writable!

今天服务器上的phpmyadmin打开后出现下面的提示:

    Wrong permissions on configuration file, should not be world writable!

    进入phpMyAdmin页面时显示:Wrong permissions on configuration file, should not be world writable
原因:这个不关XAMPP的事了,是phpmyadmin目录权限设置的问题,如果你把phpmyadmin的所有文件chmod 777就会出现这个提示了
解决方法:只要修改文件属性就可以了,phpmyadmin要运行在755权限下,
终端运行sudo chmod -R 755 /opt/lampp/phpmyadmin

原来是phpmyadmin权限为777,要把所有文件的组和其他用户的写权限全部去掉才行,将权限改为755后一切正常。

以前遇到权限问题都是一律设为777,现在看来不能再这样了,呵呵,安全问题也是很重要D~

PHP基础

转自:http://www.phpchina.com/?action_thematicinfoview_itemid_34132.html

1.从HTML中分离 以下是可以使用的方法:
<? . . . ?>
<?php . . . ?>
<script language="php"> . . . </script>
<% . . . %>

2.语句
与Perl和C一样,在PHP中用“;”来分隔语句。那些从HTML中分离出来的标志也表示语句的结束。
echo 和 print :
echo $a,$b(a.b为变量,而且可以输出多个字符串)
print "a"(输出a,print只能输出一个字符)

3.注释
PHP支持C,C 和Unix风格的注释方式
/* C,C 风格多行注释 */
// C 风格单行注释
# Unix风格单行注释

4.1 数据类型
PHP支持整数、浮点数、字符串、数组和对象。变量类型通常不由程序员决定而由PHP运行过程决定(真是好的解脱!)。当然,如果你喜欢的话,你也可以使用cast或者函数settype()将某种类型的变量转换成指定的类型。

数值
  数值类型可以是整数或是浮点数。你可以用以下的语句来为一个数值赋值:
$a = 1234; # 十进制数
$a = -123; # 负数
$a = 0123; # 八进制数 (等于十进制数的83)
$a = 0x12; # 十六进制数(等于十进制数的18)
$a = 1.234; # 浮点数"双精度数"
$a = 1.2e3; # 双精度数的指数形式

字符串
  字符串可以由单引号或双引号引出的字段定义。注意不同的是被单引号引出的字符串是以字面定义的,而双引号引出的字符串可以被扩展。而且,在双引号字符串中可以使用反斜杠()在字符串中加入转义序列和转换字符。举例如下:
$first = ‘Hello';
$second = "World";
$full1 = "$first $second"; # 产生 Hello World
$full2 = ‘$first $second';# 产生 $first $second
$full3="01DC studio,." 2000 copyright." " ;
  请注意最后一行,如果需要在字符串中使用双引号,可以使用反斜杠字符,象该行语句所示。这里的的反斜杠用来使双引号的功能改变。
  可以将字符和数字利用运算符号连接起来。字符被转化成数字,利用其最初位置。在PHP手册中有详细的例子。

数组与哈希表
  数组与哈希表以同样的方法被支持。怎样运用取决于你怎样定义它们。你可以用list()或者array()来定义它们,也可以直接为数组赋值。数组的索引从0开始。虽然我在这里没有说明,但是你一样可以轻易的使用多维数组。
// 一个包含两个元素的数组
$a[0] = "first";
$a[1] = "second";
$a[] = "third"; // 添加数组元素的简单方法
// 现在$a[2]被赋值为"third"
echo count($a); // 打印出3,因为该数组有3个元素
// 用一个语句定义一个数组并赋值
$myphonebook = array (
"sbabu" => "5348",
"keith" => "4829",
"carole" => "4533"
);
// 噢,忘了教长吧,让我们添加一个元素
$myphonebook["dean"] = "5397";
// 你定义的carale元素错了,让我们更正它
$myphonebook["carole"] => "4522"
// 我还没有告诉你怎样使用数组的相似支持方式吗?让我们看一看
echo "$myphonebook[0]"; // sbabu
echo "$myphonebook[1]"; // 5348
其他一些对数组或哈希表有用的函数包括sort(),next(),prev()和each()。

对象
  使用new语句产生一个对象:
class foo
{
function do_foo ()
{
echo "Doing foo.";
}
}
$bar = new foo;
$bar->do_foo();

改变变量类型
  在PHP手册中提到:"PHP不支持(也不需要)直接在声明变量时定义变量类型;变量类型将根据其被应用的情况决定。如果你为变量var赋值为一个字符串,那么它变成了一个字符串。如果你又为它赋了整数值,那么它就变成了整数。"
$foo = "0"; // $foo是字符串(ASCII 48)
$foo ; // $foo是字符串"1" (ASCII 49)
$foo = 1; // $foo现在是整数(2)
$foo = $foo 1.3; // $foo是一个双精度数(3.3)
$foo = 5 "10 Little Piggies"; // $foo是一个整数(15)
$foo = 5 "10 Small Pigs"; // $foo是一个整数(15)
如果想要强行转换变量类型,可以使用与C语言相同的函数settype()。

4.2 变量与常量
  可能你已经注意到,变量都有一个美元符号($)的前缀。所有变量都是局部变量,为了使得定义的函数中可以使用外部变量,使用global语句。而你要将该变量的作用范围限制在该函数之内,使用static语句。
$g_var = 1 ; // 全局范围
function test()
{
global $g_var; // 这样就可以声明全局变量了
}
  更先进一些的是变量的变量表示。请参考PHP手册。这在有时会显得很有用。
  PHP内置了许多已定义的变量。你也可以用define函数定义你自己的常量,比如define("CONSTANT","value")。

4.3 运算符
  PHP具有C,C 和Java中的通常见到的运算符。这些运算符的优先权也是一致的。赋值同样使用"="。
算术和字符
  以下只有一种运算符是有关字符的:
$a $b :加
$a – $b :减
$a * $b :乘
$a / $b :除
$a % $b :取模(余数)
$a . $b :字符串连接
逻辑和比较
逻辑运算符有:
$a || $b :或
$a or $b :或
$a && $b :与
$a and $b :与
$a xor $b :异或 (当$a或$b为true时为true,两者一样时为false)
! $a :非
比较运算符有:
$a == $b :相等
$a != $b :不等
$a < $b :小于
$a <= $b :小于等于
$a > $b :大于
$a >= $b :大于等于
与C一样PHP也有三重运算符(?:)。位操作符在PHP同样存在。
优先权就和C以及Java一样!

4.4 控制流程结构
  PHP有着与C一样的流程控制。我将在下面大概介绍。
if, else, elseif, if(): endif
if (表达式一)
{ . . . }
elseif (表达式二)
{ . . . }
else
{ . . . }

// 或者像Python一样
if (表达式一) :
. . .
. . .
elseif (表达式二) :
. . .
else :
. . .
endif ;

Loops. while, do..while, for
while (表达式)
{. . . }

do
{ . . . }
while (表达式);

for (表达式一; 表达式二; 表达式三)
{ . . . }

//或者像Python一样
while (expr) :
. . .
endwhile ;

switch
switch是对多重if-elseif-else结构的最好的替换:
switch ($i)
{
case 0:
print "i equals 0";
case 1:
print "i equals 1";
case 2:
print "i equals 2";
}

break, continue
break中断当前的循环控制结构。
continue被用来跳出剩下的当前循环并继续执行下一次循环。

require, include
  就像C中的#include预处理一样。你在require中指定的那个文件将替代其在主文件中的位置。在有条件的引用文件时,可以使用include()。这样就使得你可以将复杂的PHP文件分割成多个文件并且在不同需要时分别引用它们。

4.5 函数
  你可以像以下的例子一样定义自己的函数。函数的返回值可以是任何数据类型:
function foo (变量名一, 变量名二, . . . , 变量名n)
{
echo "Example function.n";
return $retval;
}
  所有PHP代码都可以出现在函数定义中,甚至包括对其他函数和类的定义。函数必须在引用之前定义

4.6 类
  利用类模型建立类。可以参考PHP手册中对类的详细解释。
class Employee
{
var $empno; // 员工人数
var $empnm; // 员工姓名
function add_employee($in_num, $in_name)
{
$this->empno = $in_num;
$this->empnm = $in_name;
}
function show()
{
echo "$this->empno, $this->empnm";
return;
}
function changenm($in_name)
{
$this->empnm = $in_name;
}
}

$sbabu = new Employee;
$sbabu->add_employee(10,"sbabu");
$sbabu->changenm("babu");
$sbabu->show();

<?
/*调用HTML页面的头部*/
require(\"head.htm\"); (\"转意)
?>

5.5 计数器
  让我们在首页上加上一个计数器。这个例子已经被讲过多次了,但是还是有利于演示怎样读写文件以及创建自己的函数。counter.inc包含以下代码:
<?
/* 一个简单的计数器 */
function get_hitcount($counter_file)
{
/* 将计数器归零这样如果计数器还未被使用,初始值将是1,你也可以把初始值设成20000来骗人*/
$count=0;
// 如果存放计数器文件已经存在,读取其中的内容
if ( file_exists($counter_file) )
{
$fp=fopen($counter_file,"r");
// 我们只取了前20位,希望你的站点不要太受欢迎啊
$count=0 fgets($fp,20);
// 由于函数fgets()返回字符串,我们可以通过加0的方法将其自动转换为整数
fclose($fp);
// 对文件操作完毕
}
// 增加一次计数值
$count ;
// 将新的计数值写入文件
$fp=fopen($counter_file,"w");
fputs($fp,$count);
fclose($fp);
# 返回计数值
return ($count);
}
?>
然后我们更改front.php3文件以显示这个计数器:
<?
include("include/counter.inc");
// 我把计数值放在文件counter.txt中,读出并输出
printf ("<CENTER><B>-d</B></CENTER> <BR> n",
get_hitcount("counter.txt"));
include("include/footer.inc");
?>
看看我们的新front.php3

连接Mysql
通过PHP你可以轻松的连接到数据库,请求数据并将其显示在你的web站点中,甚至修改数据库中的数据。在这一节里我们主要以在互联网上跟PHP一起使用得最多的MySQL数据库为例,介绍一下相关的MySQL数据库的操作函数以及数据库的基本操作等方面的知识。
在MySQL数据库中,我们用来连接数据库的函数有两个,它们分别为:
integer mysql_connect(string host,string user,string password);
integer mysql_pconnect(string host,string user,string password);
mysql_connect函数和mysql_pconnect函数都是对指定主机上MySQL数据库的连接,如果该数据库位于一个不同的端口,则可以在主机名后加上冒号和端口号。函数的参数也可以缺省不填,如果不填参数,默认的主机名是“localhost”,用户名为数据库管理员,默认值为“root”,密码为空。与数据库连接成功之后,这两个函数都可以返回一个连接号,如果连接失败,则返回一个false值。让我们来看看下面几句语句:
<?
$db=mysql_connect("localhost","user","password");
mysql_select_db("mydb",$db);
?>
注释:
$db=mysql_connect("localhost","user","password"); 我们将mysql的链接参数,包括主机名、用户名和密码作为mysql_connect()的参数,同时得到返回值为$db,这样,在下面的语句中,我们就可以将变量$db作为一个连接mysql数据库的连接号来使用。
mysql_select_db("mydb",$db); 将PHP程序链接到mydb数据库中,这样程序与数据库的链接就完成了。