PHP学习笔记
1.VC9是专门为IIS定制的,VC6 是为了其他WEB服务软件提供的,如 Apache。
2.PHP5新版本中出现了php.ini-developmen和php.ini-production
这些文件有了新的命名:
php.ini-production对应于php.ini-recommended
php.ini-development对应于php.ini-dist
在Windows下安装PHP,通常要将php.ini-dist或php.ini-recommended重命名为php.ini。
根据说明,二者不同之处在于 php.ini-dist 适合开发程式使用(测试用),
而 php.ini-recommended 拥有较高的安全性设定,则适合上线当产品使用。
3.迅雷会占用80端口
4.phpinfo()为系统函数,输出php环境信息
5.PHP 是一门松散类型的语言(Loosely Typed Language)
在 PHP 中,不需要在设置变量之前声明该变量。
根据变量被设置的方式,PHP 会自动地把变量转换为正确的数据类型。
6.在 PHP 中,只有一个字符串运算符。
并置运算符 . 用于把两个字符串值连接起来。
如:echo $txt1 . ” ” . $txt2;
为了分隔这两个变量,我们在 $txt1 与 $txt2 之间插入了一个空格。
7.strlen() 函数用于计算字符串的长度。
如:echo strlen(“Hello world!”);
8.strpos() 函数用于在字符串内检索一段字符串或一个字符。
如果在字符串中找到匹配,该函数会返回第一个匹配的位置。如果未找到匹配,则返回 FALSE。
如:echo strpos(“Hello world!”,”world”);
注意:字符串中的首个索引位置从0开始,而不是1。
9.array() 函数用于新建一个数组。
10.数值数组:
$names = array(“AAA”, “BBB”, “CCC”);
等同于:
$names[0] = “AAA”;
$names[1] = “BBB”;
$names[2] = “CCC”;
11.关联数组:
$ages = array(“AAA”=>42, “BBB”=>60, “CCC”=>34);
等同于:
$ages[‘AAA‘] = “42″;
$ages[‘BBB‘] = “60″;
$ages[‘CCC‘] = “34″;
12.多维数组:
$families = array
(
“Griffin”=>array
(
“Peter”,
“Lois”,
“Megan”
),
“Quagmire”=>array
(
“Glenn”
),
“Brown”=>array
(
“Cleveland”,
“Loretta”,
“Junior”
)
);
13.foreach用法:
$arr=array(“one”, “two”, “three”);
foreach ($arr as $value)
{
echo “Value: ” . $value . “<br />”;
}
14.换行:<br/>
15.表单验证:
应该在任何可能的时候对用户输入进行验证。客户端的验证速度更快,并且可以减轻服务器的负载。
不过,任何流量很高以至于不得不担心服务器资源的站点,也有必要担心站点的安全性。如果表单访问的是数据库,就非常有必要采用服务器端的验证。
在服务器验证表单的一种好的方式是,把表单传给它自己,而不是跳转到不同的页面。这样用户就可以在同一张表单页面得到错误信息。用户也就更容易发现错误了。
16.$_GET 变量用于收集来自 method=”get” 的表单中的值。
$_GET 变量是一个数组,内容是由 HTTP GET 方法发送的变量名称和值。
从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送的信息量也有限制(最多 100 个字符)。
注意:在使用 $_GET 变量时,所有的变量名和值都会显示在 URL 中。所以在发送密码或其他敏感信息时,不应该使用这个方法。不过,正因为变量显示在 URL 中,因此可以在收藏夹中收藏该页面。在某些情况下,这是很有用的。
17.$_POST 变量是一个数组,内容是由 HTTP POST 方法发送的变量名称和值。
从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。
18.$_REQUEST 变量包含了 $_GET, $_POST 以及 $_COOKIE 的内容。
可用来取得通过 GET 和 POST 方法发送的表单数据的结果。
不过,由于变量不显示在 URL 中,所以无法把页面加入书签。
19.Date() 函数:可把时间戳格式化为可读性更好的日期和时间。
时间戳是指:自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数。它也被称为 Unix 时间戳(Unix Timestamp)。
字母的特殊含义:
d – 月中的天 (01-31)
m – 当前月,以数字计 (01-12)
Y – 当前的年(四位数)
用法如:
echo date(“Y/m/d”);
echo date(“Y.m.d”);
echo date(“Y-m-d”);
20.mktime()函数:取得一个日期的 Unix 时间戳
语法:mktime(hour,minute,second,month,day,year,is_dst)
用法:
$tomorrow = mktime(0,0,0,date(“m”),date(“d”)+1,date(“Y”));
echo “明天是 “.date(“Y/m/d”, $tomorrow);
21.include 和 require 语句用于在服务器执行 PHP 文件之前把该文件插入另一个 PHP 文件中。
include 和 require 很相似,除了在错误处理方面的差异:
require 会产生致命错误 (E_COMPILE_ERROR),并停止脚本。
include 只会产生警告 (E_WARNING),脚本将继续。
因此,如果希望即使包含文件已丢失,也想让脚本继续执行,并向用户输出结果,那么请使用 include。否则,在框架、CMS 或者复杂的 PHP 应用程序编程中,请始终使用 require 向执行流引用关键文件。这有助于提高应用程序的安全性和完整性,在某个关键文件意外丢失的情况下。
包含文件省去了大量的工作。这意味着您可以为所有页面创建标准页头、页脚或者菜单文件。然后,在页头需要更新时,只需更新这个页头包含文件即可。
用法:
<div class=”header”>
<?php include ‘header.php’; ?>
</div>
另外,在调用文件中还可以直接使用包含文件中定义好的变量
22.fopen() 函数用于打开文件。
用法:
<?php
$file=fopen(“test.txt”,”r”);
?>
r:只读。在文件的开头开始。
w:只写。打开并清空文件的内容;如果文件不存在,则创建新文件。
a:追加。打开并向文件文件的末端进行写操作,如果文件不存在,则创建新文件。
x:只写。创建新文件。如果文件已存在,则返回 FALSE。
注意:在 w 、a 以及 x 模式下,无法读取打开的文件!
fclose() 函数用于关闭打开的文件。
feof() 函数检测是否已达到文件的末端 (EOF)。
用法:if (feof($file)) echo “End of file”;
fgets() 函数用于从文件中逐行读取文件。
注意:在调用该函数之后,文件指针会移动到下一行。
fgetc() 函数用于从文件逐字符地读取文件。
注意:在调用该函数之后,文件指针会移动到下一个字符。
23.文件上传表单:
<form> 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 “multipart/form-data”。
<input> 标签的 type=”file” 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。
可以添加上传限制,如用户只能上传 .gif 或 .jpeg 文件,文件大小必须小于 20 kb:
if ((($_FILES["file"]["type"] == “image/gif”)
|| ($_FILES["file"]["type"] == “image/jpeg”)
|| ($_FILES["file"]["type"] == “image/pjpeg”))
&& ($_FILES["file"]["size"] < 20000))
注意:对于 IE,识别 jpg 文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg。
在提交文件上传表单后,服务器只是创建了一个被上传文件的临时副本。
这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:
move_uploaded_file()函数用于将上传的文件移动到新位置
24.cookie:常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。
setcookie() 函数用于设置 cookie。
用法:setcookie(“user”, “David”, time()+3600);
注意:setcookie() 函数必须位于 <html> 标签之前。
而且,在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码(因此,为防止 URL 编码,请使用 setrawcookie() 取而代之)。
$_COOKIE 变量用于取回 cookie 的值。
当要删除 cookie 时,应当使过期日期变更为过去的时间点。
如:setcookie(“user”, “”, time()-3600);
25.isset()函数可用于检测变量是否设置
用法:
<?php
if (isset($_COOKIE["user"]))
echo “Welcome ” . $_COOKIE["user"] . “!<br />”;
else
echo “Welcome guest!<br />”;
?>
26.session 变量用于存储有关用户会话的信息,或更改用户会话的设置。Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。
Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传输。
在把用户信息存储到session 中之前,首先必须启动会话。然后便会向服务器注册用户的会话,以便可以开始保存用户信息,同时会为用户会话分配一个 UID。
如:<?php session_start(); ?>
注意:session_start() 函数必须位于 <html> 标签之前。
存储和取回 session 变量的正确方法是使用$_SESSION 变量:
27.unset()函数可用于释放给定的变量,如Session变量。
session_destroy() 函数用于彻底终结 session:
因此希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。
注意:session_destroy() 将重置 session,您将失去所有已存储的 session 数据。
28.mail() 函数用于从脚本中发送电子邮件。
语法:mail(to,subject,message,headers,parameters);
to:必需。规定 email 接收者。
subject:必需。规定 email 的主题。注释:该参数不能包含任何新行字符。
message:必需。定义要发送的消息。应使用 LF (\n) 来分隔各行。
headers:可选。规定附加的标题,比如 From、Cc 以及 Bcc。应当使用 CRLF (\r\n) 分隔附加的标题。
parameters:可选。对邮件发送程序规定额外的参数。
Cc:副本抄送
Bcc:密件抄送
防止 e-mail 注入的最好方法是对输入进行验证。如使用PHP 过滤器:
filter_var() 函数通过指定的过滤器过滤变量。
如果成功,则返回已过滤的数据,如果失败,则返回 false。
语法:filter_var(variable, filter, options);
variable:必需。规定要过滤的变量。
filter:可选。规定要使用的过滤器的 ID。
options:规定包含标志/选项的数组。检查每个过滤器可能的标志和选项。
options:
FILTER_SANITIZE_EMAIL 从字符串中删除电子邮件的非法字符
FILTER_VALIDATE_EMAIL 验证电子邮件地址
29.PHP中不同的错误处理方法:
(1)die()函数–等同于exit()函数:都用于输出一个消息并且退出当前脚本;
(2)自定义错误和错误触发器;
(3)错误报告。
详细内容以后再了解。
30.异常机制:详细内容以后再了解。
31.PHP过滤器:详细内容以后再了解。
32.mysql_connect()函数用于打开或重复使用一个到 MySQL 服务器的连接。
如:$con = mysql_connect(“localhost”,”root”,”xiandan123″);
mysql_error()函数用于返回上一个 MySQL 操作产生的文本错误信息。
mysql_close()函数用于关闭 MySQL 连接。
如:mysql_close($con);
mysql_query() 函数用于发送一条 MySQL 查询命令。失败则返回FALSE.
如:mysql_query(“CREATE DATABASE php_db”,$con);
或mysql_query($sql,$con);
mysql_select_db() 函数用于选择 MySQL 数据库。
如:mysql_select_db(“php_db”, $con);
注意:在创建表之前,必须首先通过 mysql_select_db() 函数选取数据库。
SQL 语句对大小写不敏感。
mysql_fetch_array() 函数用于从结果集中取得一行作为关联数组,或数字数组,或二者兼有。返回根据从结果集取得的行生成的数组,如果没有更多行则返回 false。本函数返回的字段名是区分大小写的。
语法:mysql_fetch_array(data,array_type);
data:可选。规定规定要使用的数据指针。该数据指针是 mysql_query() 函数产生的结果。
array_type:可选。规定返回哪种结果。可能的值如下:
MYSQL_ASSOC – 关联数组
MYSQL_NUM – 数字数组
MYSQL_BOTH – 默认。同时产生关联和数字数组
注意:mysql_fetch_array() 是 mysql_fetch_row() 的扩展版本。除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。
用mysql_fetch_array() 并不明显比用 mysql_fetch_row() 慢,而且还明显提供了更多的值。
用法:
$result = mysql_query(“SELECT * FROM table_name”);
while($row = mysql_fetch_array($result));
33.XML 文件描述了数据的结构。
在 XML 中,没有预定义的标签。您必须定义自己的标签。
XML 解析器:按需读取和更新及创建并处理一个 XML 文档。
有两种基本的 XML 解析器类型:
(1)基于树的解析器:这种解析器把 XML 文档转换为树型结构。它分析整篇文档,并提供了 API 来访问树种的元素,例如文档对象模型 (DOM)。
(2)基于事件的解析器:将 XML 文档视为一系列的事件。当某个具体的事件发生时,解析器会调用函数来处理。
基于事件的解析器集中在 XML 文档的内容,而不是它们的结果。正因如此,基于事件的解析器能够比基于树的解析器更快地访问数据。
没有与它关联的文档类型声明 (DTD),也没有内嵌的 DTD的XML文件=无效的 XML。
Expat 解析器是基于事件且非验证的解析器。Expat 是不检查有效性的解析器,忽略任何 DTD。
xml_parser_create()函数用于建立一个 XML 解析器。
如:$parser=xml_parser_create();
xml_set_element_handler()函数用于建立起始和终止元素处理器。如果处理器被成功的建立,该函数将返回 true;否则返回 false。
语法:xml_set_element_handler(parser,start,end);
parser:必需。规定要使用的 XML 解析器。
start:必需。规定在元素开始调用的函数。
end:必需。规定在元素结束调用的函数。
xml_set_character_data_handler()函数用于建立字符数据处理器。规定当解析器在XML 文件中找到字符数据时所调用的函数。如果处理器被成功的建立,该函数将返回 true;否则返回 false。
语法:xml_set_character_data_handler(parser,handler);
parser:必需。规定要使用的 XML 解析器。
handler:必需。规定作为事件处理器使用的函数。
xml_parse()函数用于开始解析一个XML文档。如果成功,则返回 true。否则,返回 false。
语法:xml_parse(parser,xml,end);
34.SimpleXML 是 PHP 5 中的新特性。
详细内容以后再了解。
35.AJAX = 异步 JavaScript 及 XML。
AJAX 并不是一种新的编程语言,而仅仅是一种新的跨平台跨浏览器的技术。
AJAX 使用 JavaScript 在 web 浏览器与 web 服务器之间来发送和接收数据。使网页从服务器请求少量的信息,而不是整张页面。
通过 AJAX,web 应用程序无需重载网页,就可以发送并取回数据。完成这项工作,需要通过向服务器发送 HTTP 请求(在幕后),并通过当服务器返回数据时使用 JavaScript 仅仅修改网页的某部分。
一般使用 XML 作为接收服务器数据的格式,尽管可以使用任何格式,包括纯文本。
36.XMLHttpRequest 对象:是 AJAX 技术实现的关键。
不同的浏览器使用不同的方法来创建 XMLHttpRequest 对象:
IE使用 ActiveXObject。
其他浏览器使用名为 XMLHttpRequest 的 JavaScript 内建对象。
解决方法:
var XMLHttp=null
if (window.XMLHttpRequest)
{
XMLHttp=new XMLHttpRequest()
}
else if (window.ActiveXObject)
{
XMLHttp=new ActiveXObject(“Microsoft.XMLHTTP”)
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。