PHP学习笔记

网址:amzoo.cn 发布时间:2009/6/22 来源:广州扬帆科技网 人气:
【PHP探针】—————————————————————————————————————————————————
1)关于asp,jsp,php三种语言的特点和区别
2)PHP语言的发展历史、特点、功能


——————————————————————————————————————————————————————

2008年12月16日:

2008-12-18
轮流显示:
<table width="750" border="0" cellspacing="1" cellpadding="1">
<?php
for ($i=0;$i<5;$i++) {
$color = (($coloralternator++ %2) ? "e0e0e0" : "ff6666");
echo "<tr bgcolor='".$color."'><td>大家好</td></tr>";
}
?>
</table>
 
2008-12-17
 
 
2008-12-14、15、16
今天解决了图片上传返回参数问题。
 
PHP的变量与常数
文件:test.php
<?php
//这是一种单行注释方法
#这是另一种单行注释方法
/*这是一种多行注释的方法
以下让我们看看例了吧*/
funtion display($file,$line)
{
global $message;
echo "FILE:$file<br>";
echo "LINE:$line<br>";
echo "Message:$message<br>";
}
 
$message="这是一个例程。";
display(_FILE_,_LINE_);
?>
显示结果为:
text.php
15
这是一个例程
 
上例中,function 是定义一个自定义函数。其后的两个变量$file和$line是两个局域变量,它们只在函数体中起作用,与函数体外的变崐量互不干扰,如果在函数体外还有$file或$line的话,两个$file和两个$line的值是不一定会相同的。_FILE_和_LINE_是两个常量,它们的崐值是早已定好了的。_FILE_为本文件的文件名,_LINE_为执行行所在的行号。在函数体内还有一句为 global $message; 它的作用是使全崐局变量$message能作用到函数体中,这句还可写成$GLOBAL["message"];
 
 
对于GET、POST和Cookie等机制产生的信息,PHP会自动地将其视为PHP的变量。这样,使提交表单的信息处理显地是格外的轻松。如下:
文件:
 
form.html
<html><head><title></title></head>
<body>
<form action="deal.php">
用户名:<input type="text" name="uname" size=20><br>
<input type="submit" value="OK">
</form>
</body>
</html>
 
<?php
echo "你的用户名为:$uname";
?>
 
以上程序会要求用户输入一个用户名,提交表单后,后回用户名确认信息。可看出,表单中的uname已成为了deal.php程序中的$uname变崐量。简单吧。:-)
 
日期时间的编程
 用$dd=getdate(time())取得当前日期时间的数组
 $dd["year"] 年号
 $dd["mon"] 月份数字(1,2,...,12)
 $dd["mday"] 号数
 $dd["hours"] 小时
 $dd["minutes"] 分
 $dd["seconds"] 秒
 $dd["wday"] 星期数字(0,1,...,6)
<?
 $dd=getdate(time());/*取得系统当前日期*/
 $xsj=$dd["year"]."年".$dd["mon"]."月".$dd["mday"]."日"; /*将系统日期赋给变量xsj*/
 $xq=array("星期日","星期一","星期二","星期三","星期四","星期五","星期六");
 $xsj.=" ".$xq[$dd["wday"]];
 $xsj.=" ".$dd["hours"].":".$dd["minutes"].":".$dd["seconds"];
 echo $xsj."<BR>";?>
 
 
PHP基础:PHP的语法
 
例:
<?php
echo "Hello, World!";
?>
运行结果:
Hello, World!
你也可以将上面的“Hello, World!”写为如下代码:
<?php
message = "Hello, World!";
echo message;
?>
 
字符串的串联则是用“.”(一个英文句点)标示出来;其他有关数字的运算符号则如同你所预期的一样:
<?php
greeting = "Hello ";
num = 3 + 2;
num++;
echo "greeting num people!";
?>
运行结果:
Hello 6 people!
 
PHP 有完整的运算符,其功能同你所预期的一样——特别是当你有C或者C++的知识背景时的时候。使用PHP一条很好的经验法则是:“遇到问题,先试试看,很可能成功。”
正如在Perl一样,一个字符串用双引号括起来,这将使得其中的变量被值置换,而如果以单引号括起来,则不会。因此,如下代码:
<?php
name = 'Susannah';
greeting_1 = "Hello, name!";
greeting_2 = 'Hello, name!';
echo "greeting_1\n";
echo "greeting_2\n";
?>
运行结果:
Hello, Susannah!
Hello, name!
注意字串中“\n ”是换行符号,就跟在Perl或C一样。不过这仅在以双引号括起来的字符串内才有效。
 
 
变量
PHP 可以把环境变量当作一般变量使用。这包括由服务器为一段CGI 程序所设定的环境变量(即使当你以模块方式执行PHP)。因此,如果页面http://www.domain.com/farm/cattle/cow-cow.cow.html包括以下代码:
<?php
echo "[REQUEST_URI]";
?>
它将输出[/farm/cattle/cow-cow-cow.html]
 
 
数组
使用方括弧([ and ])设置数组索引(一般或关联性):
fruit[0] = 'banana';
fruit[1] = 'papaya';
favorites['animal'] = 'turtle';
favorites['monster'] = 'cookie';
如果你对数组赋值,但索引是空白的,PHP则会把对象放于数组末尾。上面对变量fruit的声明同下面代码的结果是一样的:
fruit[] = 'banana';
fruit[] = 'papaya';
你也可以用多维数组:
people['David']['shirt'] = 'blue';
people['David']['car'] = 'minivan';
people['Adam']['shirt'] = 'white';
people['Adam']['car'] = 'sedan';
 
一个创建数组的简便方法是
array()
 
函数为:
fruit = array('banana','papaya');
favorites = array('animal' => 'turtle',
'monster' => 'cookie);
或者
people = array ('David' => array('shirt' => 'blue',
'car' => 'minivan'),
'Adam' => array('shirt' => 'white',
'car' => 'sedan'));
内建函数count()表明一个数组里有多少元素:
fruit = array('banana','papaya');
print count(fruit);
得到如下结果
2
 
控制结构
你可以利用循环结构例如for以及while:
for (i = 4; i < 8; i++) {
print "I have eaten i bagels today.\n"; }
结果:
I have eaten 4 bagels today.
I have eaten 5 bagels today.
I have eaten 6 bagels today.
I have eaten 7 bagels today.
同样可写为
i = 4; while (i < 8) {
print "I have eaten i bagels today.\n";
i++;
}
 
你可以使用控制结构if以及elseif:
if (user_count > 200) {
print "The site is busy right now!";
}
elseif (user_count > 100) {
print "The site is sort of active right now!";
else {
print "The site is lonely - only user_count user logged on.";
}
使用运算符的经验法则同样也可以运用在控制结构上面。你还可以使用switch,do...while,甚至是 ?: 结构。
 
 
PHP语法基础
一,概述 二,PHP脚本标记
1、 PHP脚本有四种标记: 短标签和asp标签虽方便但移植性及发行性较差,通常不推荐。此外注意如果将 PHP 嵌入到 XML 或 XHTML 中则需要使用标准标签 <?php ?> 以保持符合标准。
A, 标准标签:<?php .. ?>
B, 脚本标签:<script language=”php”>...</script>
C, 短标签:<? ... ?> 需要在php.ini中设置short _open_tag=on,默认是on,或者在 PHP 编译时加入了 --enable-short-tags 选项。(PHP 3版本还可以通过 short_tags() 函数激活使用短标记。)
D, asp标签(PHP 3.0.4 版后支持): <% ... %>需要在php.ini中设置asp_tags=on,默认是off
2, 指令分隔符: 同 C,java 或 Perl 一样,PHP 需要在每个语句除末行(因为结束标记隐含表示了一个分号 )后用分号结束指令。而文件末行省略分号有利于使用输出缓冲和 include() 或者 require()
3, 注释: PHP 支持 C,C++ 和 Unix Shell 风格(Perl 风格)的注释。例如: 单行注释:// ,# 多行注释:/* */ <?php echo "This is a test"; // 单行注释 (c++ 风格), /* 多行注释:单行注释说明1:"// ?>"中 ?&gt;有效, 单行注释说明2:"// </script>"中 </script>无效 */ echo "This is yet another test"; echo "One Final Test"; # 单行注释 (shell风格) ?&gt;
三,PHP数据类型
1, 基本数据类型:Integer,Double,String,Boolean,Object(对象或类),Array(数组)
A, 四种标量类型:
(1), boolean(布尔型) :布尔值 FALSE情况是:整型0,浮点0.0,空白字符串和字符串 "0",没有成员变量的数组,没有单元的对象(仅适用于 PHP 4),特殊类型 NULL(包括尚未设定的变量)。其它值都被认为是 TRUE(包括任何资源)
(2), integer(整型):八进制前缀0,十六进制前缀0x,如果向八进制数如01090传递了一个非法数字(即 8 或 9),则后面其余数字会被忽略,等于010。
(3), float(浮点型,也作double,浮点数,双精度数或实数):浮点数精度是不准确的
(4), string(字符串):
B, 两种复合类型:
(1), array(数组) :PHP 中的数组实际上是把一个优化过的有序图类型当成数组来使用。应该始终在用字符串(除常量或变量)表示的数组索引上加上引号。
定义 array(): array( [key =&gt;] // key 可以是 integer 或者 string value // value 可以是任何值 , ... ) <?php $arr = array("foo" => "bar", 12 =&gt; true); //key如果是浮点数则取整为integer echo $arr["foo"]; // bar echo $arr[12]; // 1 ?&gt; 缺省的键名取当前最大的整数索引值,而新的键名索引为当前最大索引加一。如果指定的键名已经有了值,则该值会被覆盖。 自 PHP 4.3.0 起,上述的索引生成方法改变了。如今如果给一个当前最大键名是负值的数组添加一个新值,则新生成的的索引将为零(0)。以前新生成的索引为当前最大索引加一,和正值的索引相同。
添加/修改数组元素: <?php $arr = array(5 => 1, 12 =&gt; 2); $arr[] = 56; // This is the same as $arr[13] = 56; // at this point of the script $arr["x"] = 42; // This adds a new element to // the array with key "x" unset($arr[5]); // This removes the element from the array unset($arr); // This deletes the whole array ?&gt;
(2), object(对象)
对象初始化:要初始化一个对象,用 new 语句将对象实例到一个变量中。 <?php class foo { function do_foo() { echo "Doing foo."; } } $bar = new foo; $bar->do_foo(); ?&gt;
转换为对象:如果将一个对象转换成对象,它将不会有任何变化。如果其它任何类型的值被转换成对象,内置类 stdClass 的一个实例将被建立。如果该值为 NULL,则新的实例为空。对于任何其它的值,名为 scalar 的成员变量将包含该值。 <?php $obj = (object) 'ciao'; echo $obj->scalar; // outputs 'ciao' ?&gt;
C, 特殊数据类型:
(1), Resourse(对第三方资源(如数据库)的引用,PHP 4 引进):资源是一种特殊变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。
禁止类型转换为资源:由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此无法将其它类型的值转换为资源。
释放资源:由于 PHP4 Zend 引擎引进了资源计数系统,可以自动检测到一个资源不再被引用了(和 Java 一样)。这种情况下此资源使用的所有外部资源都(除了持久数据库连接)会被垃圾回收系统释放。由此原因,很少需要用某些 free-result 函数来手工释放内存。
(2), Null(空,未初始化的变量,PHP4引进):特殊的 NULL 值表示一个变量没有值。NULL 类型唯一可能的值就是 NULL。 在下列情况下一个变量被认为是 NULL:被赋值为 NULL,尚未被赋值, 被 unset()。
语法:NULL 类型只有一个值,就是大小写敏感的关键字 NULL。 <?php $var = NULL; ?>
D, 伪类型:
(1), mixed :mixed 说明一个参数可以接受多种不同的(但并不必须是所有的)类型。
(2), number :number 说明一个参数可以是 integer 或者 float。
(3), callback :有些诸如 call_user_function() 或 usort() 的函数接受用户自定义的函数作为一个参数。Callback 函数不仅可以是一个简单的函数,它还可以是一个对象的方法,包括静态类的方法。 一个 PHP 函数用函数名字符串来传递。可以传递任何内置的或者用户自定义的函数,除了 array(),echo(),empty(),eval(),exit(),isset(),list(),print() 和 unset()。
一个对象的方法以数组的形式来传递,数组的下标 0 指明对象名,下标 1 指明方法名。
对于没有实例化为对象的静态类,要传递其方法,将数组 0 下标指明的对象名换成该类的名称即可。
2, 字符串可以用三种字面上的方法定义。
(1), 单引号: 除可转义(')和字符串末的(\),其中出现的变量和转义序列不会被其对应的值替代。 <?php // 输出结果: Arnold once said: "I'll be back \" echo 'Arnold once said: "I\'ll be back \\"';//转义表示(')和字符串末的(\)用(\)转义 // 两个输出结果一样: You deleted C:\*.*? echo 'You deleted C:\\*.*?';//可转义(\)本身,但不必要 echo 'You deleted C:\*.*?'; //因为试图转义除(')和字符串末的(\)之外字符都会连带转义(\) // 输出结果: This will not expand: \n a newline, Variables do not $expand $either echo 'This will not expand: \n a newline, Variables do not $expand $either'; //单引号变量和转义序列不会生效。 ?>
(2), 双引号 :其中出现的变量和转义序列会被解析生效。
序列
含义
\n
换行(LF 或 ASCII 字符 0x0A(10))
\r
回车(CR 或 ASCII 字符 0x0D(13))
\t
水平制表符(HT 或 ASCII 字符 0x09(9))
\\
反斜线
\$
美元符号
\"
双引号
\[0-7]{1,3}
此正则表达式序列匹配一个用八进制符号表示的字符
\x[0-9A-Fa-f]{1,2}
此正则表达式序列匹配一个用十六进制符号表示的字符
此外,如果试图转义任何其它字符,反斜线本身也会被显示出来!
(3), 定界符(PHP4开始支持): 格式严格干净。结束标识符格式严格,前面必须只有上段换行符(\x41 ,\r),后面只有分号和换行符。不能用定界符语法初始化类成员。必须用其它字符串语法替代。其中出现的变量和转义序列会被解析生效。而且其中可以省略转义引号。 <?php $str = &lt;&lt;&lt;EOD //标识符(必须遵循 PHP 中标签的命名规则) Example of string spanning multiple lines using heredoc syntax. EOD; //结束标识符格式必须干净
3, 类型转换:PHP 在变量定义中不需要(或不支持)明示的类型定义;变量类型是根据使用该变量的上下文所决定的。
A, 类型戏法:
B, 类型强制转换:和 C 中的非常像:在要转换的变量之前加上用括号括起来的目标类型。 &lt;?php $foo = 10; // $foo is an integer $bar = (boolean) $foo; // $bar is a boolean ?> 允许的强制转换有: (int),(integer) - 转换成整型 (bool),(boolean) - 转换成布尔型 (float),(double),(real) - 转换成浮点型 (string) - 转换成字符串 (array) - 转换成数组 (object) - 转换成对象
四,PHP变量和常量
1, 变量:$variable,变量以字母、_开始,不能有空格。赋值$variable=value。PHP的变量是弱类型,可直接赋值而不需要显示声明数据类型,是由 PHP 根据该变量使用的上下文在运行时决定其类型。
PHP 中变量,标签的命名规则:只能包含字母数字下划线,而且必须以下划线或非数字字符开始。
2, 变量解析: 当用双引号或者定界符指定字符串时,其中的变量会被解析。
有两种语法,一种简单的和一种复杂的。
A, 简单语法最通用和方便,它提供了解析变量,数组值,或者对象属性的方法。 如果遇到美元符号($),解析器会尽可能多地取得后面的字符以组成一个合法的变量名。如果想明示指定名字的结束,用花括号把变量名括起来。
B, 复杂语法是 PHP 4 引进的,可以用花括号括起一个表达式。事实上,用此语法可以在字符串中包含任何在名字空间的值。仅仅用和在字符串之外同样的方法写一个表达式,然后用 { 和 } 把它包含进来。因为不能转义“{”,此语法仅在 $ 紧跟在 { 后面时被识别(用“{\$”或者“\{$”来得到一个字面上的“{$”)。注意,如果数组索引用了字符,要用单引号括起来。
3, 定义常量:define(“CONSTANS_NAME”,value)
五,操作符
1)赋值操作符:=
2)算术操作符:+,-,*,/,%(取模)
3)连接操作符:. ,无论操作数是什么,都当成String,结果返回String
4)合计赋值操作符(Combined Assignment Operators):+=,*=,/=,-=,%=,.=
5)自动增减操作符(Automatically Incrementing and Decrementing):
(1)$variable+=1 <=>$variable++;$variable-=1 <=>$variable-,跟c语言一样,先做其他操作,后++或-
(2)++$variable,-$variable,先++或-,再做其他操作
6)比较操作符: = =(左边等于右边),!=(左边不等于右边), = = =(左边等于右边,且数据类型相同), &gt;=,&gt;,<,&lt;= 7)逻辑操作符:|| or,&& and,xor(当左右两边有且只有一个是true,返回true),!
六,流程控制语句
1)if语句:
(1)if(expression) { //code to excute if expression evaluates to true } (2)if(expression) { } else { } (3)if(expression1) { } elseif(expression2) { } else { } 2) swich语句 switch ( expression ) { case result1: // execute this if expression results in result1 break; case result2: // execute this if expression results in result2 break; default: // execute this if no break statement // has been encountered hitherto }
3) ?操作符:
( expression )?returned_if_expression_is_true:returned_if_expression_is_false;
4) while语句: (1) while ( expression ) { // do something } (2)do { // code to be executed } while ( expression ); 5) for语句: for ( initialization expression; test expression; modification expression ) { // code to be executed } 6) break;continue
七,函数
1) 定义函数: function function_name($argument1,$argument2,……) //形参 { //function code here; } 2) 函数调用 function_name($argument1,$argument2,……); //形参 3) 动态函数调用(Dynamic Function Calls): 1: &lt;html> 2: <head> 3: <title>Listing 6.5</title> 4: </head> 5: <body> 6: <?php 7: function sayHello() { //定义函数sayHello 8: print "hello&lt;br>"; 9: } 10: $function_holder = "sayHello"; //将函数名赋值给变量$function_holder 11: $function_holder(); //变量$function_holder成为函数sayHello的引用, //调用$function_holder()相当于调用sayHello 12: ?&gt; 13: </body> 14: </html> 4) 变量作用域:
全局变量: 1: <html> 2: <head> 3: <title>Listing 6.8</title> 4: </head> 5: <body> 6: <?php 7: $life=42; 8: function meaningOfLife() { 9: global $life; /*在此处重新声明$life为全局变量,在函数内部访问全局变量必须这样,如果在函数内改变变量的值,将在所有代码片段改变*/ 10: print "The meaning of life is $life&lt;br>"; 11: } 12: meaningOfLife(); 13: ?&gt; 14: </body> 15: </html> 5) 使用static 1: <html> 2: <head> 3: <title>Listing 6.10</title> 4: </head> 5: <body> 6: <?php 7: function numberedHeading( $txt ) { 8: static $num_of_calls = 0; 9: $num_of_calls++; 10: print "&lt;h1>$num_of_calls. $txt</h1>"; 11: } 12: numberedHeading("Widgets"); //第一次调用时,打印$num_of_calls值为1 13: print("We build a fine range of widgets<p>"); 14: numberedHeading("Doodads"); /*第一次调用时,打印$num_of_calls值为2,因为变量是static型的,static型是常驻内存的*/ 15: print("Finest in the world<p>"); 16: ?&gt; 17: </body> 18: </html> 6) 传值(value)和传址(reference):
传值:function function_name($argument) 1: <html> 2: <head> 3: <title>Listing 6.13</title> 4: </head> 5: <body> 6: <?php 7: function addFive( $num ) { 8: $num += 5; 9: } 10: $orignum = 10; 11: addFive( &$orignum ); 12: print( $orignum ); 13: ?> 14: </body> 15: </html> 结果:10
传址:funciton function_name(&$argument) 1: <html> 2: <head> 3: <title>Listing 6.14</title> 4: </head> 5: <body> 6: <?php 7: function addFive( &$num ) { 8: $num += 5; /*传递过来的是变量$num的引用,因此改变形参$num的值就是真正改变变量$orignum物理内存中保存的值*/ 9: } 10: $orignum = 10; 11: addFive( $orignum ); 12: print( $orignum ); 13: ?> 14: </body> 15: </html> 结果:15
7) 创建匿名函数:create_function(‘string1’,’string2’); create_function是PHP内建函数,专门用于创建匿名函数,接受两个string型参数,第一个是参数列表,第二个是函数的主体 1: <html> 2: <head> 3: <title>Listing 6.15</title> 4: </head> 5: <body> 6: <?php 7: $my_anon = create_function( '$a, $b', 'return $a+$b;' ); 8: print $my_anon( 3, 9 ); 9: // prints 12 10: ?> 11: </body> 12: </html> 8) 判断函数是否存在:function_exists(function_name),参数为函数名
八,用PHP连接MySQL
1) 连接:&conn=mysql_connect("localhost", "joeuser", "somepass");
2) 关闭连接:mysql_close($conn);
3) 数据库与连接建立联系:mysql_select_db(database name, connection index);
4) 将SQL语句给My SQL执行:$result = mysql_query($sql, $conn); //增删改查都是这句
5) 检索数据:返回记录数:$number_of_rows = mysql_num_rows($result);
将记录放入数组:$newArray = mysql_fetch_array($result); 例子: 1: <?php 2: // open the connection 3: $conn = mysql_connect("localhost", "joeuser", "somepass"); 4: // pick the database to use 5: mysql_select_db("testDB",$conn); 6: // create the SQL statement 7: $sql = "SELECT * FROM testTable"; 8: // execute the SQL statement 9: $result = mysql_query($sql, $conn) or die(mysql_error()); 10: //go through each row in the result set and display data 11: while ($newArray = mysql_fetch_array($result)) { 12: // give a name to the fields 13: $id = $newArray['id']; 14: $testField = $newArray['testField']; 15: //echo the results onscreen 16: echo "The ID is $id and the text is $testField &lt;br>"; 17: } 18: ?&gt;
九,PHP连接Access
16、PHP连接Access: <? $dbc=new com("adodb.connection"); $dbc->open("driver=microsoft access driver (*.mdb);dbq=c:\member.mdb"); $rs=$dbc-&gt;execute("select * from tablename"); $i=0; while (!$rs-&gt;eof){ $i+=1 $fld0=$rs-&gt;fields["UserName"]; $fld0=$rs-&gt;fields["Password"]; .... echo "$fld0-&gt;value $fld1-&gt;value ...."; $rs-&gt;movenext(); } $rs-&gt;close(); ?&gt;
十,表单
1, 接受表单元素:$_POST[表单元素名],
如<input type=text name=user>ó$_POST[user]
2, 接受url中queryString中值(GET方式):$_GET[queryString]
十一,页面转向
12、转向其他页面:header("Location: http://www.samspublishing.com");
十二,字符串操作
13、字符串操作:
1)explode(“-”,str)óJava中的splite
2)str_replace($str1,$str2,$str3) =&gt;$str1要查找的字符串,$str2用来替换的字符串,$str3从这个字符串开始查找替换
3)substr_replace:
十二,session
1)打开session:session_start(); //也可以在php.ini设置session_auto_start=1,不必再每个script都写这句,但是默认为0,则必须要写。
2)给session赋值:$_SESSION[session_variable_name]=$variable;
3)访问session:$variable =$_SESSION[session_variable_name];
4)销毁session:session_destroy();
十三,打印语句
print,与c语言相同
十四,分类
15、显示分类的完整例子: 1: <?php 2: //connect to database 3: $conn = mysql_connect("localhost", "joeuser", "somepass") 4: or die(mysql_error()); 5: mysql_select_db("testDB",$conn) or die(mysql_error()); 6: 7: $display_block = "&lt;h1>My Categories</h1> 8: <P>Select a category to see its items.</p>"; 9: 10: //show categories first 11: $get_cats = "select id, cat_title, cat_desc from 12: store_categories order by cat_title"; 13: $get_cats_res = mysql_query($get_cats) or die(mysql_error()); 14: 15: if (mysql_num_rows($get_cats_res) < 1) { //如果返回记录行数小于1,则说明没有分类 16: $display_block = "&lt;P><em>Sorry, no categories to browse.</em></p>"; 17: } else { 18: 19: while ($cats = mysql_fetch_array($get_cats_res)) { //将记录放入变量$cats中 20: $cat_id = $cats[id]; 21: $cat_title = strtoupper(stripslashes($cats[cat_title])); 22: $cat_desc = stripslashes($cats[cat_desc]); 23: 24: $display_block .= "<p><strong><a 25: href=\"$_SERVER[PHP_SELF][U1] ?cat_id=$cat_id\">$cat_title</a></strong> //点击此url,刷新本页,第 28行读取cat_id,显示相应分类的条目 26: <br>$cat_desc</p>"; 27: 28: if ($_GET[cat_id] == $cat_id) { //选择一个分类,看下面的条目 29: //get items 30: $get_items = "select id, item_title, item_price 31: from store_items where cat_id = $cat_id 32: order by item_title"; 33: $get_items_res = mysql_query($get_items) or die(mysql_error()); 34: 35: if (mysql_num_rows($get_items_res) < 1) { 36: $display_block = "&lt;P><em>Sorry, no items in 37: this category.</em></p>"; 38: } else { 39: 40: $display_block .= "<ul>"; 41: 42: while ($items = mysql_fetch_array($get_items_res)) { 43: $item_id = $items[id]; 44: $item_title = stripslashes($items[item_title]); 45: $item_price = $items[item_price]; 46: 47: $display_block .= "<li><a 48: href=\"showitem.php?item_id=$item_id\">$item_title</a> 49: </strong> (\$$item_price)"; 50: } 51: 52: $display_block .= "</ul>"; 53: } 54: } 55: } 56: } 57: ?&gt; 58: <HTML> 59: <HEAD> 60: <TITLE>My Categories</TITLE> 61: </HEAD> 62: <BODY> 63: <? print $display_block; ?> 64: </BODY> 65: </HTML>
十五,Hello World程序范例
Hello World程序
下面是一个在标准输出设备上输出Hello World的简单程序,这种程序通常作为开始学习编程语言时的第一个程序: <?php echo 'Hello World!'; ?> 或 <? echo 'Hello World!'; ?> 从中我们可以看出,PHP语言是嵌入在“<?php...?>”或“<?...?>” 之间的部分。而这个程序最终结果将是:
Hello World!
但建议您使用 <?php ... ?> 此种方式撰写您的程序,在php缺省的设定档php.ini中,通常此设定值为Off,若您有打开此设定的需要,您可以参见 php.ini 中关于 “short_open_tag = Off ”这部份的设定。
phpinfo
下面是一个在标准输出设备上输出关于PHP的设置的简单程序, 如PHP变量, 模块: <?php phpinfo(); ?>
 
 
表单的处理
上面的东西已经够你搞一段时间了,下面的基本能看明白了。
其中$_GET是用来接收表单通过get方式发送过来的数据,$_POST是用来接收表单通过post方式发送过来的数据。
 
<html>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>nnd我就不信PHP学不好</title>
<body>
<form name="formname" method="post" action="">
<input name="name" type="text" id="name">
<input type="submit" name="submit" value="提交">
</form>
<form name="formname" method="get" action="">
<input name="name" type="text" id="name">
<input type="submit" name="submit" value="提交">
</form>
<?PHP
//if用来判断submit按钮是否已经被按下,如果被按下,则submit的值就不是空的.
if( $_GET['submit']!='' or $_POST['submit']!='' )
{
    echo 'GET方式提交结果:'.$_GET['name'];
    echo 'POST方式提交结果:'.$_POST['name'];
}
?>
</body>
</html>
 
PHP基础语法
 
一、PHP脚本代码标记
PHP的脚本是文件中一对特殊标记所包括的内容,如ASP是“<%....%>”,PHP可看成是“<?...?>”。
然而为了适应XML标准以将PHP嵌入到XML或XHTML中,PHP不建议使用短格式的“<?...?>”,而建议使用长格式标记“<?php...?>”
此外PHP代码块还支持 <script language="php">...</script>的标记形式。
 
二、PHP指令分隔符
PHP的每条语句需要由分号“;”隔开,但对于PHP结束标记“?>”来说,因其自动隐含一个分号,所以不需要追加分号。
所以,一个PHP脚本的格式可如下:
 
三、PHP的注释
PHP多行注释使用 “/* ......... */”
单行注释使用“#”或“//”
 
四、PHP的输出
ASP中使用“<%=...%>”快速输出单行,或使用“<%Response.Write("...")%>”
在PHP中直接使用“echo()”或“print()”
 
 
看看PHP的基本流程控制:
  if…else…Elseif
  语法一:
  if (条件) {
  语句体
}
  语法二:
  if (条件) {
  语句体一
  }else{
语句体二
  }
  语法三:
  if (条件1) {
  语句体一
}elseif(条件2) {
  语句体二
  }else{
  语句体三
  }
  我们把上面的deal.php程序改为:
<?php
if ($uname=="小明") {
echo "见到你真高兴,小明。";
}elseif ($uname=="小华"){
echo "喔,是小华呀。";
}else{
echo "你是$uname,对吧";
}
?>
  除了if 语句外,还有while循环,它的语法如下:
  while(条件){
语句体
  }
  当条件为true时,执行语句体。
  do…while的语法如下:
  do {
  语句体
  }while(条件)
  先执行一次语句体,若条件为true,则循环再次执行语句体。
  for循环的语法同C一样,如下:
  for (条件初始;判断条件;条件改变) {语句}
  而break 跳出正在执行的循环,continue 为中断本次循环
 
正则表达式的基本语法
 
  首先让我们看两个特别的符号'^'和'$'。他们的作用是分别指出一个字符串的开始和结束。例子如下:
  "^The":表示所有以"The"开始的字符串("There","The cat"等);
  "of despair$":表示所以以"of despair"结尾的字符串;
  "^abc$":表示开始和结尾都是"abc"的字符串——呵呵,只有"abc"自己了;
  "notice":表示所有包含"notice"的字符串。
  象最后那个例子,如果你不使用两个特别字符,你就在表示要查找的串在被查找串的任意部分——你并不把他定位在某一个顶端。
  其他更有'*','+'和'?'这三个符号,表示一个或一序列字符重复出现的次数。他们分别表示“没有或更多”,“一次或更多”更有“没有或一次”。下面是几个例子:
  "ab*":表示一个字符串有一个a后面跟着零个或若干个b。("a", "ab", "abbb",……);
  "ab+":表示一个字符串有一个a后面跟着至少一个b或更多;
  "ab?":表示一个字符串有一个a后面跟着零个或一个b;
  "a?b+$":表示在字符串的末尾有零个或一个a跟着一个或几个b。
  你也能使用范围,用大括号括起,用以表示重复次数的范围。
  "ab{2}":表示一个字符串有一个a跟着2个b("abb");
  "ab{2,}":表示一个字符串有一个a跟着至少2个b;
  "ab{3,5}":表示一个字符串有一个a跟着3到5个b。
  请注意,你必须指定范围的下限(如:"{0,2}"而不是"{,2}")。更有,你可能注意到了,'*','+'和'?'相当于"{0,}","{1,}"和"{0,1}"。
  更有一个'|',表示“或”操作:
  "hi|hello":表示一个字符串里有"hi"或"hello";
  "(b|cd)ef":表示"bef"或"cdef";
  "(a|b)*c":表示一串"a""b"混合的字符串后面跟一个"c";
  '.'能替代所有字符:
  
  "a.[0-9]":表示一个字符串有一个"a"后面跟着一个任意字符和一个数字;
  "^.{3}$":表示有任意三个字符的字符串(长度为3个字符);
  方括号表示某些字符允许在一个字符串中的某一特定位置出现:
  "[ab]":表示一个字符串有一个"a"或"b"(相当于"a|b");
  "[a-d]":表示一个字符串包含小写的'a'到'd'中的一个(相当于"a|b|c|d"或"[abcd]");
  "^[a-zA-Z]":表示一个以字母开头的字符串;
  "[0-9]%":表示一个百分号前有一位的数字;
  ",[a-zA-Z0-9]$":表示一个字符串以一个逗号后面跟着一个字母或数字结束。
  你也能在方括号里用'^'表示不希望出现的字符,'^'应在方括号里的第一位。(如:"%[^a-zA-Z]%"表示两个百分号中不应该出现字母)。
  为了逐字表达,你必须在"^.$()|*+?{"这些字符前加上转移字符''。
请注意在方括号中,不必转义字符。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
什么是PHP
 PHP是一种易于学习和使用的服务器端的HTML嵌入式脚本语言,PHP是一种真正跨平台、跨服务器的开发语言它只需要你有很少的编程知识就能使用其建立一个真正交互的WEB站点。
 
简介
 PHP是一种HTML嵌入式脚本语言,混合了C语言、Java语言和Perl语言的特点,是一个Web服务器端的脚本环境,能让你生成动态网页的工具之一。
  PHP(“PHP: Hypertext Preprocessor”,超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML中,尤其适合 WEB 开发。PHP是完全免费的,你可以在PHP官方站点(http://www.php.net)自由下载。PHP遵守GNU公共许可(GPL),在这一许可下诞生了许多流行的软件诸如Linux和Emacs。你可以不受限制的获得源码,甚至可以从中加进你自己需要的特色。PHP支持多种系统平台:在各种Unix系统和微软Windows NT、Windows98/Me、Windows 2000系列、Windows 2003系列系统上均可以运行。怎样在Windows环境的PC机器或Unix机器上安装PHP的资料可以在PHP官方站点上找到。安装过程很简单。
 
PHP的发展历史
  PHP从1994年秋天开始孕育,创始人是Rasmus Lerdorf。1995年发布了第一个公开版本Personal Home Page Tools,这个版本的功能非常简单,包含了一个极其简单的分析引擎,只能理解一些主页后台的常见功能(如:留言本、计数器等)和一些指定的宏。1995年Rasmus Lerdorf重写了这个引擎并命名为PHP/FI2.0版本。此后,PHP/FI便以惊人的速度传播开来。其后越来越多的人们注意到了这种语言并对其扩展提出了各种建议。在许多程序员和电脑爱好者的无私奉献下以及这种语言本身的源代码自由性质,现在它已成为一种特点丰富的语言,而且现在还在成长中。
 
PHP的功能特点
◎快速。PHP是一种强大的CGI脚本语言,语法混合了C、Java、Perl和PHP式的新语法,执行网页比CGI、Perl和ASP更快,这是它的第一个突出的特点。
◎具有很好的开放性和可扩展性。PHP属于自由软件,其源代码完全公开,任何程序员为PHP扩展附加功能非常容易。
◎数据库支持。PHP支持多种主流与非主流的数据库,如:、Adabas D、DBA、dBase、dbm、filePro、Informix、InterBase、mSQL、MySQL、Microsoft SQL Server、Solid、Sybase、ODBC、oracle、oracle 8、PostgreSQL等。其中,PHP与MySQL是现在绝佳的组合,它们的组合可以跨平台运行。
◎面向对象编程。PHP提供了类和对象。为了实现面向对象编程,PHP4及更高版本提供了新的功能和特性,包括对象重载、引用技术等。
◎版本更新速度快。与数年才更新一次的ASP相比,PHP的更新速度就要快得多,因为PHP每几周就更新一次。
◎具有丰富的功能。从对象式的设计、结构化的特性、数据库的处理、网络接口应用、安全编码机制等,PHP几乎涵盖了所有网站的一切功能。
◎可伸缩性。传统上网页的交互作用是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP就可以以这种方式安装,虽然很少有人愿意这样以CGI方式安装它。内嵌的PHP可以具有更高的可伸缩性。
 
◎易学好用。学习PHP的过程非常的简单。与Java和Perl不同,你不必把头埋进100多页的文档中努力学习才可以写出一个象样的程序。只要了解一些基本的语法和语言特色,你就可以开始你的PHP编码之旅了。之后你在编码过程中如果遇到了什么麻烦,还可以再去翻阅相关文档。
  你只需要30分钟就可以将PHP的核心语言特点全部掌握,你可能已经非常了解HTML,甚至你已经知道怎样用编辑设计软件或者手工来制作好看的WEB站点。由于PHP代码能够嵌入HTML,在你设计和维护站点的同时,你可以很轻松的加入PHP使得你的站点更加具有动态特性。
◎功能全面。PHP包括图形处理、编码与解码、压缩文件处理、XML解析、支持HTTP的身份认证、Cookie、POP3、SNMP等。你可以利用PHP连接包括Oracle,MS-Access,Mysql在内的大部分数据库。
 
PHP语言发展历史
 
  1994年,Rasmus Lerdorf首次设计出了PHP程式设计语言。
 
  1995年6月,Rasmus Lerdorf在Usenet新闻组comp.infosystems.www.authoring.cgi上发布了PHP 1.0 声明。
 
  1996年4月,Rasmus Lerdorf在Usenet新闻组comp.infosystems.www.authoring.cgi上发布了PHP第二版声明。相比PHP 1 单纯的标签置换代码,PHP第二版含有了能处理更复杂的嵌入式标签语言的解析程式。
 
  1997年,Tel Aviv 公司的Zeev Suraski 和 Andi Gutmans 自愿重新编写了底层的解析引擎,其他非常多人也自愿加入了PHP的其他部分而工作,从此PHP成为了真正意义上的开源项目。
 
  1998年6月,PHP.net发布了PHP 3.0 声明。发布以后,用户数量才真正开始了飞涨。
 
  2000年5月22日,PHP 4.0 发布。该版本的研发是由希望对PHP的体系结构做一些基本改动的研发者推动的,这些改动包括将语言和Web服务器之间的层次抽象化,并且加入了线程安全机制,加入了更先进的两阶段解析和执行标签解析系统。这个新的解析程式依然由Zeev Suraski 和 Andi Gutmans 编写,并且被命名为Zend引擎。
 
  2004年7月13日,PHP 5.0 发布。该版本以Zend引擎II为引擎, 并且加入了新功能如PHP Data Objects (PDO)。
 
  2004年7月13日,PHP 5.0 发布.该版本以Zend引擎II为引擎, 并且加入了新功能如PHP Data Objects (PDO)。
 
PHP语言的特点
 
    PHP从一种网络开发语言发展成为一个适合于企业级部署的技术平台,成为最热门的Web开发语言。PHP具有如下特点:
    快速:PHP是一种强大的CGI脚本语言,语法混合了C、Java、Perl和PHP式的新语法,执行网页比CGI、Perl和ASP更快。
    具有很好的开放性和可扩展性:PHP属于自由软件,其源代码完全公开,任何程序员为PHP扩展附加功能非常容易。
    数据库支持:PHP支持多种主流与非主流的数据库,如:、Adabas D、DBA、dBase、dbm、filePro、Informix、InterBase、mSQL、MySQL、Microsoft SQL Server、Solid、Sybase、ODBC、oracle、oracle8、PostgreSQL等。其中,PHP与MySQL是现在绝佳的组合,它们的组合可以跨平台运行。
    面向对象编程:PHP提供了类和对象。为了实现面向对象编程,PHP4及更高版本提供了新的功能和特性,包括对象重载、引用技术等。
    版本更新速度快:与数年才更新一次的ASP相比,PHP的更新速度就要快得多,因为PHP每几周就更新一次。
    具有丰富的功能:从对象式的设计、结构化的特性、数据库的处理、网络接口应用、安全编码机制等,PHP几乎涵盖了所有网站的一切功能。
可伸缩性:传统上网页的交互作用是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP就可以以这种方式安装。
 


2008年12月11日:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2008-12-13
1、PHP5/MYSQL5/DATA 这路径是存放数据库的
2、创建新表,先选中左栏的数据库,然后在右栏下面创建新表:名字(表名)、Number of fields(列数)
字段、类型、长度值、整理、属性、Null\、额外(是否为自动递增)
Id,int(4), ,,not null,auto_increment
Name/pwd,varchar,50, gbk_chinese_ci, null,,
3、练习操作数据库的增删显,分页显示等功能。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2008-12-12(再次巩固PHP配置搭建以及练习一些实例)
1、包含模块<?php include("header.php");?>,相当于<!--#include file="header.asp"-->
2、数据库连接脚本:
<?php
     $conn=mysql_connect("localhost:6033","root","root") or die("数据库服务器连接错误".mysql_error());
     mysql_select_db("db_shop",$conn) or die("数据库访问错误".mysql_error());
       mysql_query("set character set gb2312");
     mysql_query("set names gb2312");
?>
3、<?php
 $sql=mysql_query("select * from tb_gonggao order by id desc",$conn);
 $info=mysql_fetch_array($sql);
 if($info==false){
?>
——
<?php
 }
 else{
   do{
?>
——
<a href="test_show.php?id=<?php echo $info[id];?>">
         <?php
               echo substr($info[title],0,24);
                if(strlen($info[title])>24){
                     echo "...";
                }
          ?>
</a>
——
<?php
        }
   while($info=mysql_fetch_array($sql));
 }
?>
4.练习创建数据库、表增删列、追加记录。
admin的加密密码:21232f297a57a5a743894a0e4a801fc3
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2008-12-11(PHP配置搭建基本完成)
例二、测试php和mysql数据库的关联
在网站根目录下创建一个test.php 文件()
<?php
$link=mysql_connect("localhost","root","12345");  //12345改成你的mysql密码
if(!$link) echo "失败!";
else echo "成功!";
mysql_close();
?>
例一、在网站根目录下创建一个 phpinfo.php 文件
在浏览器打开
http://localhost/phpinfo.php
<?php
phpinfo();
?>



2007年8月1日:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
PHP安装真实版:
小凌的PHP安装+张绍辉的AppServ V2.6
注意,PHP是区分大小写的!
运行CMD,输入mysql -u root –p
http://coolersky.com/articles/base/app/web/2005/0325/267.html
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apache2+PHP5+MySQL5+Zend Optimizer3.2.6配置总结
Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部。
下面是用到的配置]软件版本都是最新的:
apache_2.2.4-win32-x86-no_ssl.msi
php-5.2.1-Win32.zip
mysql-5.2.3-falcon-alpha-win32.zip
ZendOptimizer-3.2.6-Windows-i386.exe
 
还是从PHP开始
将php-5.2.1-Win32.zip解压到准备用于安装PHP的目录,这里我就解压到C:\PHP5;找到php目录下php.ini-recommend文件改名为php.ini;
首先打开php.ini,修改几个地方:
extension_dir = "C:\php5\ext"
用于指定动态连接库的目录
 
查找以下几行:
;extension=php_dba.dll
;extension=php_gd2.dll
;extension=php_mysql.dll
;extension=php_mbstring.dll
 
去掉前面的分号.这样做的目的是让php加载mysql等各种模块,在需要的时候可以随时配置;
接下来修改一些限制条件:
memory_limit = 20M
post_max_size = 20M
upload_max_filesize = 20M
最后保存,也不需要复制任何文件到系统目录,这样PHP基本上就OK了!
(张绍辉,安装他的“AppServ V2.6”是PHP 网页架站工具组合包,泰国作者将这几个软件包装成单一的安装文件,
Apache HTTP Server
MySQL Database
PHP Hypertext Preproessor
phpMyAdmin
首先输入网址:www.fanhongjiang.com,邮箱:fhj2084355@163.com,端口80;然后登陆root的MYSQL服务器的密码:12345)
--------------------------------------------
Apache
1、安装
双击打开apache_2.2.4-win32-x86-no_ssl.msi开始安装,一路NEXT,同意许可协议后会有填写服务器信息的页面,因为是本地调试,network domain和servername两项都填localhost,最后那项administrator's email address填自己的邮件地址,继续NEXT,直到FINISH;
完成之后Apache会启动相关服务,并在任务栏右下角运行一个Apache监控器,可测试Apache是否安装成功:
打开浏览器,输入http://localhost/,页面显示“It Works!”,表示Apache安装OK了
2、配置
打开C:\Apache2.2\conf目录下httpd.conf文件,添加下面几行:
LoadFile c:/php5/libmysql.dll
LoadFile c:/php5/libmcrypt.dll
LoadFile c:/php5/php5ts.dll
LoadModule php5_module c:/php5/php5apache2_2.dll
 
AddType application/x-httpd-php .php
AddType application/x-httpd-php .html——找不到???
 
找到 DirectoryIndex index.html
改成 DirectoryIndex index.html index.php index.htm index.shtml
 
找到 DocumentRoot "c:\Apache2.2\htdocs" 和 <Directory "c:\Apache2.2\htdocs">,修改成自定
义的默认网页文件存放目录,这样,Apache基本上也配置好了
--------------------------------------------
MySQL
1、安装
双击setup.exe安装文件,开始安装MySQL Server 5.2
2、配置
进入MySQL Server Instance Configuration Wizard,点Next开始配置,第一步选择配置模式,这里已经安装了MySQL,所以选择第一种Detailed模式,Next进入下一步; 这一步select a server type,不同的选择决定MySQL占用不同的系统内存和CPU资源,这里我选的是Developer Machine; 继续Next,选择数据库用途,我选的是Multifunctional多功能型的; 下一步设定InnoDB引擎的存储目录,点击Next进入下一步; 设置MySQL数据库的并发连接数,这里需要了解什么是并发连接数,可根据实际情况进行设定.我这里选的是Manual Setting,并且设置连接数为10000;
Next进入下一步,set the networking options,采用默认的,继续Next;
设置默认语言,选择第三个,设定character为gbk;
Next将MySQL设置为Windows系统服务,采用默认的,Next进入下一步;
选择设置root帐户密码,或者可以同时新建一个匿名帐户Anonymous.值得注意的是设置root密码的下面有一个小选项,是否允许root用户从别的计算机登陆,为了方便可以勾选上,为了安全当然最好就别选;
进入下一步Press Execute开始配置,完成 Finish 关闭设置向导!
-------------------------------------------
Zend Optimizer
 
运行ZendOptimizer-3.2.6-Windows-i386.exe,开始安装:Next,确认接受条款;
继续Next,选择安装目录,这里我设置的是c:\ZendOptimizer;
Next进入下一步,选择webserver,选Apache 2.X;
继续下一步,选择php.ini文件存放目录,我的是c:\php5目录,选择好后继续Next;
这一步选择Apache Server的安装目录,我的是c:\Apache2.2,继续Next;
确认刚才几步所设置的目录信息是否正确,点Install开始安装,安装的过程中会提醒你关闭Apache Sever/IIS,关闭后点确认,继续安装,最后完成;。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apache2.2.4 php5.2.1 mysql 配置方法【这个正确的!】
一.php的安装与调试
     由于php是一个zip文件(非install版),安装较为简单,解压就行。把解压的 php5.1.1-Win32重命名为 php5。并复制到C盘目录下。即安装路径为 c:\php5
1  找到php目录下的 php.ini-dist或 php.ini.recommended文件,重命名为 php.ini
并复制到系统盘的windows目录下(以c:\windows为例).
2  再把php目录下的php5ts.dll,libmysql.dll(没有)复制到目录 c:\windows\system32下。
3  把php5\ext目录下的php_gd2.dll,php_mysql.dll,php_mbstring.dll文件复制到c:\windows\system32下 如果没有加载 php_gd2.dll  php将不能处理图像。没有加载php_mysql.dll php将不支持mysql函数库
php_mbstring.dll在后面使用phpmyadmin时支持宽字符。
4 打开c:\windows\php.ini文件(关联到mysql)
设置扩展路径
查找 extension_dir 有这么一行
extension_dir = "./"
将此行改成
extension_dir = "C:\php5\ext"
其中C:\php5是你安装php的路径。路径不正确将无法加载dll
(注意:有些php版本是 ;extension_dir = "./" 要把前面的分号去掉)
查找 extension
extension=php_mbstring.dll
extension=php_gd2.dll
extension=php_mysql.dl
把上面3项前面的分号去掉,这样apache启动时就可以加载这些dll了
当然前面我们也把这些dll复制到system32下了l
php5时差问题
<?php echo date("Y-m-d H:i:s");?>时间相差八小时
为什么呢?PHP5系列版本新增了时区设置,默认为格林威治时间,与中国所在的东8区正好相差8个小时
查找date.timezone有这么一行
;date.timezone =
将;去掉,改成
date.timezone = PRC
二.apache的调试和整合
1.修改网站根目录
   查找 DocumentRoot有这么一行
DocumentRoot"C:/Program Files/Apache Group/Apache2/htdocs"
这就是你网站的根目录,你可以修改,也可以用默认的.如果改,还要修改下面这项,否则可能会出现 403 错误
查找  This should be changed to whatever you set DocumentRoot to
在它下面两行有
<Directory "C:/Program Files/Apache Group/Apache2/htdocs">
把上面两项的 C:/Program Files/Apache Group/Apache2/htdocs 改成你想要的目录
2.让apache支持*.php(网页)
查找  DirectoryIndex index.html index.html.var
修改成
DirectoryIndex index.html index.html.var  index.php
这样index.php 可以充当默认页面了
3.Apache中模块化安装php
查找 # LoadModule foo_module modules/mod_foo.so
在此行后加入一行
LoadModule php5_module C:/php5/php5apache2.dll       //注意:其中C:/php5/php5apache2.dll是你安装php的相应路径.不要把php5apache2.dll和php5apache.dll混淆.php5apache.dll只适用于apache 版本1的.PHP5压缩包里的php5apache2.dll只适用于apache2.0.*版本,如果是2.2.*以上版本,就可能会出现"Cannot load C:/php/php5apache2.dll into server: The specified module could not be found."或者:"The requested operation has failed"
4.查找 AddType application/x-gzip .gz .tgz
在此行后加入一行
AddType application/x-httpd-php .php (记住:前边有一个空格哦!!!)
这样apache就可以解释php文件了
5.测试
在网站根目录下创建一个 phpinfo.php 文件
<?php
phpinfo();
?>
在浏览器打开
http://localhost/phpinfo.php
5.测试php和mysql数据库的关联
在网站根目录下创建一个test.php 文件

<?php
$link=mysql_connect("localhost","root","12345");  //12345改成你的mysql密码
if(!$link) echo "失败!";
else echo "成功!";
mysql_close();
?>

在浏览器打开 http://localhost/test.php
如果输出成功,则说明大功告成了.
.安装phpmyadmin

下载得到 phpMyAdmin-2.7.0.zip,将其解压到 你网站根目录下并重命名为phpMyAdmin,
找到并打开 config.defaut.php (有些版本是config.inc.php或者 libraries/config.default.php)
做以下修改:
1 查找 password 有如下两行
$cfg['Servers'][$i]['user']          = 'root';    
$cfg['Servers'][$i]['password']      = '';
把你的mysql密码填到$cfg['Servers'][$i]['password']      = ''; 单引号里边
2 搜索 $cfg['PmaAbsoluteUri'],将其设置为 phpMyAdmin 目录路径,如:http://localhost/phpMyAdmin/
3 搜索 $cfg['DefaultLang'],将其设置为gbk;
打开浏览器,输入:http://localhost/phpMyAdmin/,Apache 和 MySQL 均已启动,
如果出现引导页面则phpmyadmin安装完成并可以使用了。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
你是要让你的装了IIS的机器支持PHP呢还是只是单纯的打开*.php的文件?
如果是要支持PHP,那么你要装专门的PHP解释器。
首先你去下载php-4.3.4-Win32.zip。

下面为配置步骤:
1)将php-4.3.3RC4-Win32.zip里面的所有文件和文件夹解压缩并放置在C:\\php4\\文件夹中,没有自己创建该文件夹
2)进入php4文件夹,查看根目录和子目录,把所有.dll文件都统统复制粘贴到C:\\WINNT\\system32(WIN2K)或C:\\WINDOWS\\system32(WINXP)中
3)把php4文件夹里面的php.ini-dist和php.exe(有两个取根目录下的)文件复制到
C:\\WINNT\\(WIN2K)或C:\\WINDOWS\\(WINXP)中,并将php.ini-dist文件改为php.ini
4)双击php.ini打开该配置文件,进行下面3个地方的修改:
1> 把extension_dir = "C:\\php4\\extensions" 改为你安装php4的 extensions文件夹路径
2> 把 ;cgi.force_redirect = 1 改为 cgi.force_redirect = 0
3> 把 register_globals = Off 改为 register_globals = On
4> 找到 ;Windows Extensions 段,你应该可以看到如下代码
;
;extension=php_bz2.dll
;extension=php_cpdf.dll
;extension=php_crack.dll
;extension=php_curl.dll
;extension=php_db.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_dbx.dll
;extension=php_domxml.dll
;extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
;extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_hyperwave.dll
;extension=php_iconv.dll
;extension=php_ifx.dll
;extension=php_iisfunc.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_java.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
;extension=php_mssql.dll
;extension=php_msql.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
;extension=php_pdf.dll
;extension=php_pgsql.dll
;extension=php_printer.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_sockets.dll
;extension=php_sybase_ct.dll
;extension=php_w32api.dll
;extension=php_xmlrpc.dll
;extension=php_xslt.dll
;extension=php_yaz.dll
;extension=php_zip.dll
具体还得看你需要加载哪些.dll文件,不过你按照下面我这样改也行,主要是要加载的.dll文件就去掉前面的分号( ; ) :
;
;extension=php_bz2.dll
;extension=php_cpdf.dll
;extension=php_crack.dll
;extension=php_curl.dll
;extension=php_db.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_dbx.dll
;extension=php_domxml.dll
extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_hyperwave.dll
;extension=php_iconv.dll
;extension=php_ifx.dll
;extension=php_iisfunc.dll
extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_java.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
;extension=php_mssql.dll
;extension=php_msql.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
;extension=php_pdf.dll
;extension=php_pgsql.dll
;extension=php_printer.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_sockets.dll
;extension=php_sybase_ct.dll
;extension=php_w32api.dll
;extension=php_xmlrpc.dll
;extension=php_xslt.dll
;extension=php_yaz.dll
;extension=php_zip.dll
5)再次打开控制面板-管理工具-Internet服务管理器,在"默认web站点"上右键单击,选择"属性"
6)选中"默认 Web 站点 属性"窗口的"主目录"选项卡,点击右下角的"配置"按钮,出现"应用程序配置"窗口,点击"应用程序映射"下面的"添加"按钮,添加下面的程序映射:
可执行文件: C:\\php4\\php.exe %s %s (也就是你的php4文件夹路径)
扩展名: .php
确定完成配置!
7)切换到"默认 Web 站点 属性"窗口的"ISAPI筛选器"选项卡,点击右边的"添加"按钮,添加下面的一个筛选器:
筛选器名称: PHP
可执行文件: C:\\php4\\sapi\\php4isapi.dll (也就是你的php4文件夹的 sapi文件夹路径)
确定后关闭"Internet服务管理器"
8)继续切换到"默认 Web 站点 属性"窗口的"文档"选项卡,点击右边的"添加"按钮,添加如下"启用默认文档":
index.php 也可以添加 index.php3 index.php4 等等 看你的需要而定
点击左边的"↑"按钮,把index.php文档提升到最上面
现在你的IIS也支持PHP了. (我的还没有搭建好啊!!??2008-12-10)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.php是什么格式的文件?
 
PHP是一个基于服务端来创建动态网站的脚本语言,您可以用PHP和HTML生成网站主页。当一个访问者打开主页时,服务端便执行PHP的命令并将执行结果发送至访问者的浏览器中,这类似于ASP和CoildFusion,然而PHP和他们不同之处在于PHP开放源码和跨越平台,PHP可以运行在WINDOWS NT和多种版本的UNIX上。它不需要任何预先处理而快速反馈结果,它也不需要mod_perl的调整来使您的服务器的内存映象减小。PHP消耗的资源较少,当PHP作为Apache Web服务器一部分时,运行代码不需要调用外部二进制程序,服务器不需要承担任何额外的负担。
 
除了能够操作您的页面外,PHP还能发送HIIP的标题。您可以设置cookie,管理数字签名和重定向用户,而且它提供了极好的连通性到其它数据库(还有ODBC),集成各种外部库来做用PDF文档解析XML的任何事情。
 
有了PHP就无需特殊的开发环境和IDE,您可以以<?php 作为程序块的开始,可以以 ?>作为PHP代码块的结束,当然您也可以用带有<% %>的标记甚至用<SCRIPT LANGUAGE=“php”></script>的ASP的格式来配置PHP,PHP会在那些标志间处理所有的事情。
 
PHP的编程语言类似与C和Perl。在使用它们之前您没必要声明任何变量,而且建立数组和Hash是很简单的事情。PHP还有一些面向对象的特征,可以为组织和打包您的代码提供很好的帮助。
 
虽然PHP在Apache里能快速运行,但是在PHP网站里有一些用来对Microsoft IIS 和Netscape Enterprise Server无缝结合的指令集。如果您还没有copy PHP的话,您可以在 http://www.php.com/下载,您也可以使用操作手册,它里边包括了所有的关于PHP的功能和特性的说明。
参考资料:http://zhidao.baidu.com/question/949887.html
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
php连接mysql数据库的主要函数的作用与格式
 
mysql可通过两种方式通过php与web相连,一种通过php的mysql相关函数,另一种通过php的odbc相关函数
 
相关函数如下:
 
mysql函数
 
mysql_affected_rows: 得到 mysql 最后操作影响的列数目。
mysql_close: 关闭 mysql 伺服器连线。
mysql_connect: 开启 mysql 伺服器连线。
mysql_create_db: 建立一个 mysql 新资料库。
mysql_data_seek: 移动内部传回指标。
mysql_db_query: 送查询字串 (query) 到 mysql 资料库。
mysql_drop_db: 移除资料库。
mysql_errno: 传回错误讯息代码。
mysql_error: 传回错误讯息。
mysql_fetch_array: 传回阵列资料。
mysql_fetch_field: 取得栏位资讯。
mysql_fetch_lengths: 传回单列各栏资料最大长度。
mysql_fetch_object: 传回物件资料。
mysql_fetch_row: 传回单列的各栏位。
mysql_field_name: 传回指定栏位的名称。
mysql_field_seek: 设定指标到传回值的某栏位。
mysql_field_table: 获得目前栏位的资料表 (table) 名称。
mysql_field_type: 获得目前栏位的型态。
mysql_field_flags: 获得目前栏位的旗标。
mysql_field_len: 获得目前栏位的长度。
mysql_free_result: 释放传回占用记忆体。
mysql_insert_id: 传回最后一次使用 insert 指令的 id。
mysql_list_fields: 列出指定资料表的栏位 (field)。
mysql_list_dbs: 列出 mysql 伺服器可用的资料库 (database)。
mysql_list_tables: 列出指定资料库的资料表 (table)。
mysql_num_fields: 取得传回栏位的数目。
mysql_num_rows: 取得传回列的数目。
mysql_pconnect: 开启 mysql 伺服器长期连线。
mysql_query: 送出一个 query 字串。
mysql_result: 取得查询 (query) 的结果。
mysql_select_db: 选择一个资料库。
mysql_tablename: 取得资料表名称。
 
 
 
 
odbc函数
 
使用odbc函数需安装mysql odbc
 
odbc_autocommit: 开关自动更动功能。
odbc_binmode: 设定二进位资料处理方式。
odbc_close: 关闭 odbc 连结。
odbc_close_all: 关闭所有 odbc 连结。
odbc_commit: 更动 odbc 资料库。
 
odbc_connect: 连结至 odbc 资料库。
odbc_cursor: 取得游标名。
odbc_do: 执行 sql 指令。
odbc_exec: 执行 sql 指令。
odbc_execute: 执行预置 sql 指令。
odbc_fetch_into: 取得传回的指定列。
odbc_fetch_row: 取得传回一列。
odbc_field_name: 取得栏位名称。
odbc_field_type: 取得栏位资料形态。
odbc_field_len: 取得栏位资料长度。
odbc_free_result: 释出传回资料的记忆体。
odbc_longreadlen: 设定传回栏的最大值。
odbc_num_fields: 取得栏位数目。
odbc_pconnect: 长期连结至 odbc 资料库。
odbc_prepare: 预置 sql 指令。
odbc_num_rows: 取得传回列数目。
odbc_result: 取得传回资料。
odbc_result_all: 传回 html 表格资料。
odbc_rollback: 撤消当前交易。
odbc_setoption: 调整 odbc 设定。
 
参考资料:http://www.77new.cn/netprogram/b/1173293079453/001/072/163854.html
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
坚信“好的开始是成功的一半”!
今天李伟伟给我传了apache2_php_mysql.rar这个文件过来。
Usr
一、docs文件夹:
二、Local文件夹
三、WAPM.bat文件
(一、)README.txt
(1、)安装
  注意:如果您已经安装过以前版本的WAPM网络服务器系统,请先卸载原有的WAPM,并将原有的usr目录更名为usr-old
  以下举例,安装在C盘(如果你安装在其他盘,下面的C:应该是所在安装盘的盘符,例如:安装在D盘,则应该看到D:\usr\local)
  解压,将usr目录移动或者复制到C盘根目录,您应该看到C:\usr\local
  然后,请点击WAPM.bat
(2、)快速安装
  1. 点击WAPM.bat
  2. 选择1安装WAPM服务
  3. 安装完成之后,根据提示回车,启动WAPM服务
  4. 启动服务之后,http://localhost/查看系统状态,http://127.0.0.1/或者http://www.localtest.yi.org查看演示站点
  5. 127.0.0.1所对应的网站目录为/usr/local/www/data
  6. www.localtest.yi.org所对应的网站目录为/usr/local/www/www_localtest_yi_org
(二、)许可协议.txt
四、WAPMMonitor.exe
——2007-8-1
【打印】【关闭】【加入收藏】 top↑
上一篇:Session和Cookies
下一篇:WAP手机上网探针