PHP 知识量:7 - 20 - 67
php可以帮助我们创建出动态网站,用户可以与服务器进行各种交互。但是这种交互依然是无状态的,也就是说多个页面间没有任何联系,即使每一个页面都是访问同一个网站,甚至是同一个网页也是如此。要想让同一个网站页面间相互认识或传递什么信息,需要借助一些特别的家伙。
cookie是web服务器存储在客户端电脑上的小文件,它由一些“名-值”对组成,还可以设置cookie的过期时间。每当客户访问服务器网页时,服务器会将cookie写入客户电脑上,之后服务器就可以通过读取cookie来确认客户身份了。cookie通过setcookie()方法和$_COOKIE超全局变量来使用,具体使用方法如下所示:
HTML代码(index.php)如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> <?php $name = 'john'; setcookie('username', $name); ?> <a href="page2.php">page2</a> </body> </html>
HTML代码(page2.php)如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>page2</title> </head> <body> <?php $name = $_COOKIE['username']; echo "$name"; ?> <a href="index.php">index</a> </body> </html>
以上代码中,index.php中设置了一个cookie,它有两个参数,第一个是cookie变量名,第二个是cookie变量值。当index.php运行时,会向客户端电脑写入这个cookie文件。点击链接page2后,会跳转到page2.php,这时会通过$_COOKIE超全局变量读取存储在客户端的cookie文件,并将其值打印出来。
需要注意的是:要想让cookie发挥作用,浏览器必须设置为允许网页使用cookie,以下是chrome浏览器的设置示例:
session会话是另一个在客户端与服务器间建立联系的方法。session与cookie非常类似,它与cookie不同之处在于,它不是将有关文件写到客户端,而是在客户端浏览器未关闭前一直驻留在服务器端。因此,它是不依赖客户端浏览器设置情况的。
sesseion通过$_SESSION超全局变量来设置和读取数据。
HTML代码(index.php)如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> <?php session_start(); $name = 'john'; $_SESSION['username'] = $name; ?> <a href="page2.php">page2</a> </body> </html>
HTML代码(page2.php)如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>page2</title> </head> <body> <?php session_start(); $name = $_SESSION['username']; echo "$name"; ?> <a href="index.php">index</a> </body> </html>
以上代码中,index.php页面中使用$_SESSION超全局变量设置了一个session变量“username”。点击链接后,页面跳转到page2.php,再次通过$_SESSION超全局变量读取变量并打印出来。这里一定要特别注意:在使用session的页面中,首先要通过session_start()函数启用session会话,否则session无法使用。
php的get方法是通过超全局变量$_GET来实现的,这个变量的值包含在URL查询字符串中,通常是键-值对的形式。例如:
http://www.pnotes.cn/index.php?mark=firstPage
其中,mark=firstPage就是一组键-值对,可以在接收页面中通过$_GET超全局变量获取它们。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> <?php $mark = $_GET['mark']; echo "The mark is $mark"; ?> </body> </html>
以上代码中,使用$_GET['mark']获取了URL中的mark值,然后打印出来。这样,index.php页面会显示“The mark is firstPage”。
与get方法类似,php的post方法是通过超全局变量$_POST来实现的。它使用HTTP协议中的post方法(提交数据)在页面间传递数据。其传输的数据并不设置在URL中,因此安全性更好,可以传输的数据量也更大。
表单页面(prev.php):
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>prev</title> </head> <body> <form action="index.php" method="post"> Input the value of mark: <input name="mark" type="text"/> <input type="submit"/> </form> </body> </html>
接收页面(index.php):
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> <?php $mark = $_POST['mark']; echo "The mark is $mark"; ?> </body> </html>
在表单页面中,定义了一个文本输入框,可以输入mark的值,点击提交后,表单数据提交到接收页面index.php。
在接收页面中,通过_POST['mark']获取了表单中的mark值,然后打印出来。如果在表单页面输入了“ok”,index.php页面会显示“The mark is ok”。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6