PHP 表单和用户输入
PHP 的 $_GET 和 $_POST 用于检索表单中的值,比如用户输入。
PHP 表单处理
表单实例:
上面的 HTML 页面实例包含了两个输入框和一个提交按钮。当用户填写该表单并单击提交
按钮时,表单的数据会被送往 “welcome.php” 这个文件。
“welcome.php” 文件类似这样:
Welcome .
You are years old.
上面这个脚本的输出样本类似这样:
Welcome John.
You are 28 years old.
我们将在下一章解释 PHP $_GET 和 $_POST。
表单验证
应该在任何可能的时候对用户输入进行验证。客户端的验证速度更快,并且可以减轻服务器
的负载。
不过,任何流量很高以至于不得不担心服务器资源的站点,也有必要担心站点的安全性。如
果表单访问的是数据库,就非常有必要采用服务器端的验证。
在服务器验证表单的一种好的方式是,把表单传给它自己,而不是跳转到不同的页面。这样
用户就可以在同一张表单页面得到错误信息。用户也就更容易发现错误了。
PHP $_GET
$_GET 变量用于收集来自 method=”get” 的表单中的值。
$_GET 变量
$_GET 变量是一个数组,内容是由 HTTP GET 方法发送的变量名称和值。
$_GET 变量用于收集来自 method=”get” 的表单中的值。从带有 GET 方法的表单发送的信
息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送的信息量也有限制(最
多 100 个字符)。
例子
当用户点击提交按钮时,发送的 URL 会类似这样:
“welcome.php” 文件现在可以通过 $_GET 变量来获取表单数据了(请注意,表单域的名称会
自动成为 $_GET 数组中的 ID 键):
Welcome .
You are years old!
为什么使用 $_GET?
注释:在使用 $_GET 变量时,所有的变量名和值都会显示在 URL 中。所以在发送密码或
其他敏感信息时,不应该使用这个方法。不过,正因为变量显示在 URL 中,因此可以在收
藏夹中收藏该页面。在某些情况下,这是很有用的。
注释:HTTP GET 方法不适合大型的变量值;值是不能超过 100 个字符的。
$_REQUEST 变量
PHP 的 $_REQUEST 变量包含了 $_GET, $_POST 以及 $_COOKIE 的内容。
PHP 的 $_REQUEST 变量可用来取得通过 GET 和 POST 方法发送的表单数据的结果。
例子
Welcome .
You are years old!
PHP $_POST
$_POST 变量用于收集来自 method=”post” 的表单中的值。
$_POST 变量
$_POST 变量是一个数组,内容是由 HTTP POST 方法发送的变量名称和值。
$_POST 变量用于收集来自 method=”post” 的表单中的值。从带有 POST 方法的表单发送的
信息,对任何人都是不可见的(会显示在浏览器的地址栏),并且对发送信息的量也没有限
制。
例子
当用户点击提交按钮,URL 不会含有任何表单数据,看上去类似这样:
“welcome.php” 文件现在可以通过 $_POST 变量来获取表单数据了(请注意,表单域的名称
会自动成为 $_POST 数组中的 ID 键):
Welcome .
You are years old!
为什么使用 $_POST?
· 通过 HTTP POST 发送的变量不会显示在 URL 中。
· 变量没有长度限制。
不过,由于变量不显示在 URL 中,所有无法把页面加入书签。
$_REQUEST 变量
PHP 的 $_REQUEST 变量包含了 $_GET, $_POST 以及 $_COOKIE 的内容。
PHP 的 $_REQUEST 变量可用来取得通过 GET 和 POST 方法发送的表单数据的结果。
例子
Welcome .
You are years old!
PHP Date()
PHP 的 date() 函数用于格式化时间或日期。
PHP Date() 函数
PHP Date() 函数可把时间戳格式化为可读性更好的日期和时间。
语法
date(format,timestamp)
参数描述
format 必需。规定时间戳的格式。
timestamp 可选。规定时间戳。默认是当前的日期和时间。
PHP 日期 – 什么是时间戳(Timestamp)?
时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数。它也被称为 Unix 时间戳
(Unix Timestam)。
PHP 日期 – 格式化日期
date() 函数的第一个参数规定了如何格式化日期/时间。它使用字母来表示日期和时间的格式。
这里列出了一些可用的字母:
· d – 月中的天 (01-31)
· m – 当前月,以数字计 (01-12)
· Y – 当前的年(四位数)
您可以在我们的 PHP Date 参考手册中,找到格式参数中可以使用的所有字母。
可以在字母之间插入其他字符,比如 “/”、”.” 或者 “-“,这样就可以增加附加格式了:
echo date(“Y/m/d”);
echo “
”;
echo date(“Y.m.d”);
echo “
”;
echo date(“Y-m-d”);
?>
以上代码的输出类似这样:
2006/07/11
2006.07.11
2006-07-11
PHP 日期 – 添加时间戳
date() 函数的第二个参数规定了一个时间戳。此参数是可选的。如果您没有提供时间戳,当
前的时间将被使用。
在我们的例子中,我们将使用 mktime() 函数为明天创建一个时间戳。
mktime() 函数可为指定的日期返回 Unix 时间戳。
语法
mktime(hour,minute,second,month,day,year,is_dst)
如需获得某一天的时间戳,我们只要设置 mktime() 函数的 day 参数就可以了:
$tomorrow = mktime(0,0,0,date(“m”),date(“d”)+1,date(“Y”));
echo “Tomorrow is “.date(“Y/m/d”, $tomorrow);
?>
以上代码的输出类似这样:
明天是 2006/07/12
PHP 日期 – 参考手册
PHP 引用文件
服务器端引用 (SSI) 用于创建可在多个页面重复使用的函数、页眉、页脚或元素。
服务器端引用(Server Side include s)
通过 include() 或 require() 函数,您可以在服务器执行 PHP 文件之前在该文件中插入一个
文件的内容。除了它们处理错误的方式不同之外,这两个函数在其他方面都是相同的。
include() 函数会生成一个警告(但是脚本会继续执行),而 require() 函数会生成一个致命错
误(fatal error)(在错误发生后脚本会停止执行)。
这两个函数用于创建可在多个页面重复使用的函数、页眉、页脚或元素。
这会为开发者节省大量的时间。这意味着您可以创建供所有网页引用的标准页眉或菜单文件。
当页眉需要更新时,您只更新一个包含文件就可以了,或者当您向网站添加一张新页面时,
仅仅需要修改一下菜单文件(而不是更新所有网页中的链接)。
include() 函数
include() 函数可获得指定文件中的所有文本,并把文本拷贝到使用 include 函数的文件中。
例子 1
假设您拥有一个标准的页眉文件,名为 “header.php”。如需在页面中引用这个页眉文件,请
使用 include() 函数,就像这样:
Welcome to my home page
Some text
例子 2
现在,假设我们有一个在所有页面上使用的标准菜单文件。请看下面这个 “menu.php”:
Home |
About Us |
三个文件,https://www.zhihuclub.com/%E2%80%9Ddefault.php%E2%80%9D、https://www.zhihuclub.com/%E2%80%9Dabout.php%E2%80%9D 以及 “contact.php” 都引用了 “menu.php” 文件。这是
“default.php” 中的代码:
Welcome to my home page
Some text
如果您在浏览器中查看 “default.php” 的源代码,应该类似这样:
Home |
About Us |
Welcome to my home page
Some text
同时,当然,我们也将用相同的方法处理 “about.php” 和 “contact.php”。通过使用引用文件,
在您需要重命名链接、更改链接顺序或向站点添加另一张网页时,只要简单地更新
“menu.php” 文件中的文本即可。
require() 函数
require() 函数与 include() 相同,不同的是它对错误的处理方式。
include() 函数会生成一个警告(但是脚本会继续执行),而 require() 函数会生成一个致命错
误(fatal error)(在错误发生后脚本会停止执行)。
如果在您通过 include() 引用文件时发生了错误,会得到类似下面这样的错误消息:
PHP 代码:
include(“wrong file .php”);
echo “Hello World!”;
?>
错误消息:
Warning: include(wrongFile.php) [function.include]:
failed to open stream:
No such file or directory in C:\home\website\test.php on line 5
Warning: include() [function.include]:
Failed opening ‘wrongFile.php’ for inclusion
(include_path=’.;C:\php5\pear’)
in C:\home\website\test.php on line 5
Hello World!
请注意,echo 语句依然被执行了!这是因为警告不会中止脚本的执行。
现在,让我们使用 require() 函数运行相同的例子。
PHP 代码:
require(“wrongFile.php”);
echo “Hello World!”;
?>
错误消息:
Warning: require(wrongFile.php) [function.require]:
failed to open stream:
No such file or directory in C:\home\website\test.php on line 5
Fatal error: require() [function.require]:
Failed opening required ‘wrongFile.php’
(include_path=’.;C:\php5\pear’)
in C:\home\website\test.php on line 5
由于在致命错误发生后终止了脚本的执行,因此 echo 语句不会执行。
正因为在文件不存在或被重命名后脚本不会继续执行,因此我们推荐使用 require() 而不是
include()。
PHP 文件处理
fopen() 函数用于在 PHP 中打开文件。
打开文件
fopen() 函数用于在 PHP 中打开文件。
此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件:
$file=fopen(“welcome.txt”,”r”);
?>
文件可能通过下列模式来打开:
模式描述
r 只读。在文件的开头开始。
r+ 读/写。在文件的开头开始。
w 只写。打开并清空文件的内容;如果文件不存在,则创建新文件。
w+ 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。
a 追加。打开并向文件文件的末端进行写操作,如果文件不存在,则创建新文件。
a+ 读/追加。通过向文件末端写内容,来保持文件内容。
x 只写。创建新文件。如果文件以存在,则返回 FALSE。
x+
读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。
注释:如果 fopen() 无法打开指定文件,则返回 0 (false)。
例子
如果 fopen() 不能打开指定的文件,下面的例子会生成一段消息:
$file=fopen(“welcome.txt”,”r”) or exit(“Unable to open file!”);
?>
关闭文件
fclose () 函数用于关闭打开的文件。
$file = fopen(“test.txt”,”r”);
//some code to be executed
fclose($file);
?>
检测 End-of-file
feof() 函数检测是否已达到文件的末端 (EOF)。
在循环遍历未知长度的数据时,feof() 函数很有用。
注释:在 w 、a 以及 x 模式,您无法读取打开的文件!
if (feof($file)) echo “End of file”;
逐行读取文件
fgets() 函数用于从文件中逐行读取文件。
注释:在调用该函数之后,文件指针会移动到下一行。
例子
下面的例子逐行读取文件,直到文件末端为止:
$file = fopen(“welcome.txt”, “r”) or exit(“Unable to open file!”);
//Output a line of the file until the end is reached
while(!feof($file))
{
echo fgets($file). “
”;
}
fclose($file);
?>
逐字符读取文件
fgetc() 函数用于从文件逐字符地读取文件。
注释:在调用该函数之后,文件指针会移动到下一个字符。
例子
下面的例子逐字符地读取文件,直到文件末端为止:
$file=fopen(“welcome.txt”,”r”) or exit(“Unable to open file!”);
while (!feof($file))
{
echo fgetc($file);
}
fclose($file);
?>
PHP 文件上传
通过 PHP,可以把文件上传到服务器。
创建一个文件上传表单
允许用户从表单上传文件是非常有用的。
请看下面这个供上传文件的 HTML 表单:
请留意如下有关此表单的信息:
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~