| 超全局变量 | 值 |
| $_POST | 获取客户端以POST方式发送的HTTP请求信息。 |
| $_GET | 获取客户端以GET方式发送的HTTP请求信息。 |
| $_REQUEST | 包含了$_GET,$_POST和$_COOKIE数组中信息。 |
| $_SERVER | 获取HTTP请求中的环境变量信息。 |
| $_SESSION | 存储单个用户的信息。 |
| $_COOKIE | 读取和写入客户端的Cookie信息。。 |
| $_FILE | 获取通过POST方式上传文件时的相关信息,为多维数组。 |
语法:$_POST[控件名称]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>系统登录</title>
</head>
<body>
<form action="check.php" method="post" name="frm" onsubmit="return check();">
<p>
<input type="text" name="username" placeholder="用户名" >
</p>
<p>
<input type="password" name="password" placeholder="密码">
</p>
<p>
<label>
<input type="checkbox" name="save_username" >记住密码
</label>
</p>
<p>
<input type="submit" value="登录">
</p>
</form>
<script>
//前端数据验证
function check(){
var username=frm.username;
if (username.value==‘‘) {
alert(‘用户名不能为空‘);
username.focus();
return false;
}
return true;
}
</script>
</body>
</html>
<?php
header("Content-type: text/html; charset=utf-8");
$username=trim($_POST[‘username‘]);
//服务器端验证
if (empty($username)) {
echo ‘<script>alert("用户名必须输入");history.back()</script>‘;
exit();
}
//防止xss攻击
$username=htmlspecialchars((strtolower($username)));
$password=$_POST[‘password‘];
if ($username==‘admin‘ && $password==‘123‘) {
echo ‘登录成功!‘;
}else{
echo ‘用户名或密码错误‘;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>多值表单</title>
</head>
<body>
<form action="city.php" method="post">
你去过的城市:
<label>
<input type="checkbox" name="city[]" value="bj">北京
</label>
<label>
<input type="checkbox" name="city[]" value="sh">上海
</label>
<label>
<input type="checkbox" name="city[]" value="gz">广州
</label>
<label>
<input type="checkbox" name="city[]" value="sz">深圳
</label>
<input type="submit" value="提交">
</form>
</body>
</html>
<?php
$city=$_POST[‘city‘];
// echo implode(‘,‘,$city);
foreach ($city as $key => $value) {
var_dump($value);
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>试卷</title>
</head>
<body>
<form action="test2.php" method="post">
<?php
$x=mt_rand(0,9);
$y=mt_rand(0,9);
$z=$x+$y;
$op=mt_rand(0,3);
?>
<p>
<?=$x?> + <?=$y?> =
<?php
for ($i=0; $i < 4; $i++) {
?>
<label>
<input type="radio" name="Q" value="<?=$z+$i-$op?>"><?=$z+$i-$op?>
</label>
<?php
}
?>
</p>
<input type="hidden" name="answer" value="<?=$z?>">
<input type="submit" value="提交">
</form>
</body>
</html>
<?php
header(‘Content-type:text/html;charset=utf8‘);
// var_dump($_POST);
$result=intval($_POST[‘Q‘]);
$answer=intval($_POST[‘answer‘]);
if ($result==$answer) {
echo "回答正确";
}else{
echo "回答错误";
}
?>
$_GET[]:获取GET方式提交的表单数据http://网址?变量1=值1&变量2=值2…$_GET[变量名]1. 搜索案例:(客户端实现)<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>$_GET</title>
</head>
<body>
<form action="search.php" method="post" name="frmSearch">
<p>
<input type="text" name="key" placeholder="搜索">
<input type="button" value="搜索" id="btn-search">
</p>
<p>
<label>
<input type="radio" name="rdo" value="baidu">百度
</label>
<label>
<input type="radio" name="rdo" value="bing" checked>必应
</label>
<label>
<input type="radio" name="rdo" value="taobao">淘宝
</label>
</p>
</form>
<script>
var btn=document.getElementById(‘btn-search‘);
btn.onclick=function(){
key=frmSearch.key.value;
if (key.length==0) {
alert(‘请输入搜索的关键字‘);
return false;
}
var rdo=frmSearch.rdo.value;
var url;
switch(rdo){
case ‘baidu‘:
url=‘https://www.baidu.com/s?wd=‘+key;
break;
case ‘bing‘:
url=‘http://cn.bing.com/search?q=‘+key;
break;
default:
url=‘https://world.taobao.com/search/search.htm?q=‘+key;
break;
}
location.href=url;
}
</script>
</body>
</html>
serach.html<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>$_GET</title>
</head>
<body>
<form action="search.php" method="post">
<p>
<input type="text" name="key" placeholder="搜索">
<input type="submit" value="搜索">
</p>
<p>
<label>
<input type="radio" name="rdo" value="baidu">百度
</label>
<label>
<input type="radio" name="rdo" value="bing" checked>必应
</label>
<label>
<input type="radio" name="rdo" value="taobao">淘宝
</label>
</p>
</form>
</body>
</html>
<?php
header(‘Content-type:text/html;charset=utf-8‘);
$rdo=$_POST[‘rdo‘];
$key=$_POST[‘key‘];
// var_dump($rdo);
// exit();
if (empty($key)) {
echo ‘<script>alert("搜索关键字不能为空");history.back();</script>‘;
exit();
}
switch ($rdo) {
case ‘baidu‘:
$url=‘https://www.baidu.com/s?wd=‘.$key;
break;
case ‘bing‘:
$url=‘http://cn.bing.com/search?q=‘.$key;
break;
default:
$url=‘https://world.taobao.com/search/search.htm?q=‘.$key;
break;
}
header(‘Location:‘.$url);
?>
$_SERVER[]:用于获取http请求的相关信息元素 |
描述 |
$_SERVER[‘PHP_SELF‘] |
返回当前执行脚本的文件名。 |
$_SERVER[‘REQUEST_METHOD‘] |
返回访问页面使用的请求方法(例如 POST)。 |
$_SERVER[‘PHP_SELF‘] |
返回当前执行脚本的文件名。 |
$_SERVER[‘REMOTE_ADDR‘] |
返回浏览当前页面的用户的 IP 地址。 |
$_SERVER[‘REMOTE_HOST‘] |
返回浏览当前页面的用户的主机名。 |
$_SERVER[‘HTTP_USER_AGENT‘] |
返回访问者浏览器信息。 |
$_SERVER[‘HTTP_COOKIE‘] |
返回传递的cookie信息。 |
header() 函数header()函数用于设置服务器发送给客户端网页的头信息。header()函数应该放在所有内容输出之前。<?php
$url=‘http://web.3eol.com.cn‘;
header("Location:$url");
?>
<?php
//3秒后,挑战到微博
header(‘refresh:3;url=http://weibo.com‘);
?>
header(‘Content-type:text/html;charset=utf-8;‘);
<?php
$filename=‘test.gif‘;
header(‘Content-type:image/gif‘);
header(‘Content-Disposition:attachment; filename="‘.$filename.‘"‘);
header(‘Content-Length:‘.filesize($filename));
?>
http 协议是一种无状态协议。Cookie 和 session 的技术。
最早是网景公司的前雇员Lou Montulli在1993年3月的发明。Cookie 是当你浏览某网站时,服务器存储在你机器上的一个小文本文件,再次来到该网站时,网站通过读取 Cookie,得知你的相关信息,就可以做出相应的动作。
Cookie是利用网页代码中的 HTTP头信息进行传递的,浏览器的每一次网页请求,都可以伴随Cookie传递。
http request:浏览器向服务器发起的每个请求都会带上cookie:
Host: www.example.org Cookie: foo=value1;bar=value2 Accept: */*
服务器将Cookie添加到网页的HTTP头信息中,伴随网页数据传回到你的浏览器,浏览器会根据你电脑的Cookie设置选择是否保存这些数据。
如果浏览器不允许Cookie保存,则关掉浏览器后,这些数据就消失。
http response:服务器给浏览器的返回可以设置cookie:
HTTP/1.1 200 OK Content-type: text/html Set-Cookie: name=value Set-Cookie: name2=value2; Expires=Wed,09 June 2021 10:18:32 GMT (content of page)
Cookie有一个Expires(有效期)属性,这个属性决定了Cookie的保存时间,服务器可以通过设定Expires字段的数值,来改变Cookie的保存时间。
如果不设置该属性,或设为0,那么Cookie只在浏览网页期间有效,关闭浏览器,这些Cookie自动消失。
文本文件,保存在客户端。
由服务端写入。
每次浏览器访问服务器,将 cookie 的发送给服务器。
cookie 有有效期:可分为会话型和长效型。
每个网站都可以有自己的 cookie ,但是每个网站只能读取自己的 cookie 。
记录用户登录信息,简化登录。
记录用户行为,提供个性化服务。
在php 中,利用setcookie()函数创建和修改cookie,以及设置cookie的有效期;而使用$_COOKIE[]数组可以读取cookie变量的值。
语法:
setcookie(name, value, expire, path, domain,secure,httponly);
setcookie() 函数必须位于 <html> 标签之前,cookie变量的值总是字符串型。
<?php setcookie(‘username‘,‘admin‘); //会话型cookie,浏览器关闭即删除 setcookie(‘username‘,‘admin‘,time()+60);//长效型cookie,有效期为60秒 setcookie(‘username‘,‘admin‘,time()+24*60*60);//长效型cookie,有效期为1天 ?>
修改cookie方法仍然是采用setcookie,注意要带上有效时间,否则cookie将变成会话型cookie。
<?php setcookie(‘username‘,‘teacher‘,7*24*3600);//将username的值改为teacher,并且有效期更新为1个月 ?>
没有直接删除cookie的方法,要删除一个cookie,就是将该cookie的有效期设置为过期。
<?php
// set the expiration date to one hour ago
setcookie("user", "", time()-3600);
?>
PHP 的 $_COOKIE 变量用于取回 cookie 的值。
<?php
foreach ($_COOKIE as $key => $value) {
var_dump($value);
}
<?php
header(‘content-type:text/html;charset=utf-8‘);
if (!isset($_COOKIE[‘login‘][‘count‘])) {
echo ‘欢迎您第一次访问本网站<br>‘;
setcookie(‘login[count]‘,1,time()+24*3600);
setcookie(‘login[time]‘,strval(time()),time()+24*3600);
}else{
$log_count=intval($_COOKIE[‘login‘][‘count‘]);
$log_count++;
$log_time=intval($_COOKIE[‘login‘][‘time‘]);
echo "欢迎你第" . $log_count . ‘次访问本网站<br>‘;
echo ‘上次访问的时间是:‘ . date(‘Y-m-d H:i:s‘ ,$log_time);
setcookie(‘login[count]‘,strval($log_count),time()+24*3600);
setcookie(‘login[time]‘,strval(time()),time()+24*3600);
}
?>
login.php
<?php
if ($_COOKIE[‘auto‘]!=‘‘) {
header(‘Location:index.php‘);
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>系统登录</title>
</head>
<body>
<form action="check.php" method="post" name="frm" onsubmit="return check();">
<p>
<input type="text" name="username" placeholder="用户名" >
</p>
<p>
<input type="password" name="password" placeholder="密码">
</p>
<p>
<label>
<input type="checkbox" name="auto_login" value="1">十天内免登录
</label>
</p>
<p>
<input type="submit" value="登录">
</p>
</form>
</body>
</html>
check.php
<?php
header("Content-type: text/html; charset=utf-8");
$username=trim($_POST[‘username‘]);
$username=htmlspecialchars((strtolower($username)));
$password=$_POST[‘password‘];
if ($username==‘admin‘ && $password==‘123‘) {
if ($_POST[‘auto_login‘]==‘1‘) {
setcookie(‘auto‘,$username,10*24*3600);
}
header(‘Location:index.php‘);
}else{
echo ‘用户名或密码错误‘;
}
?>
Session 用于存储用户的信息。存储于 Session 中的变量持有单一用户的信息,并且对于一个应用程序中的所有页面都是可用的,用 session_id 来标识每一个会话。SessionHTTP 协议是一种无状态(stateless)的协议,每一次请求之间都是独立的,利用HTTP协议无法跟踪用户,无法记录访问行为。
session的创建和使用过程:
session 会话时,session_id 会分别保存在客户端和服务端两个位置,对于客户端使用临时的 cookie 保存(Cookie名称为PHPSESSID)或者通过URL字符串传递,服务端也以文本文件形式保存在指定的Session目录中。
session 通过ID接受每一个访问请求,从而识别当前用户、跟踪和保存用户具体资料,以及 session 变量(在session 活动期间,可在 session 中存储数字或文字资料),比如 session_name 等等,这些变量信息保存在服务端。
每个会话都有一个独立的 session 对象,该 session 对象含有一个session ID来标识它,还包含0个到多个独立的 session 变量。
session 中之前,首先必须启动会话。session_start() 函数必须位于 <html> 标签之前:
<?php session_start(); ?> <html> <body> </body> </html>
上面的代码会向服务器注册用户的会话,以便您可以开始保存用户信息,同时会为用户会话分配一个 UID。
存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量:
<?php session_start(); // store session data $_SESSION[‘views‘]=1; ?> <html> <body> <?php //retrieve session data echo "Pageviews=". $_SESSION[‘views‘]; ?> </body> </html>
session 的默认有效期为24分钟(1440秒)。
修改session有效期:
修改 php.ini 中的默认值,session.gc_maxlifetime=1440。
使用 ini_set() 方法修改session有效期。
<?php
session_start();
ini_set(‘sesson.gc_maxlifetime‘,60); //保存1分钟
setcookie(session_name(),session_id(),time()+60,"/");
?>
如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。
unset() 函数可以删除指定的 session 变量,使用session_unset()函数可删除当前内存中的 $_SESSION 数组中的所有元素。
<?php session_start(); unset($_SESSION[‘username‘]);//删除$_SESSION中的一个session变量 session_unset(); //删除$_SESSION中所有的session变量 ?>
但 session_unset 只能删除 $_SESSION 中的所有元素,并不能删除对应的SessionID,也不能删除保存SessionID的文件。而session_destroy()函数能删除 SessionID,并销毁Session文件,但他不会删除内存中的 $_SESSION 数组中的所有元素。
因此,如果要彻底删除Session,实现用户的安全注销功能,可以将 session_unset() 与session_destroy()函数结合使用。
<?php session_start(); session_unset(); session_destroy(); ?>
| 方面 | session | cookie |
| 功能 | 存储和跟踪特定用户的信息。 | 同。 |
| 优势 | 在整个网站的所有页面都可以访问。 | 同。 |
| 建立方式 | 每次访问网页时会自动建立session对象。 | 需要代码建立。 |
| 存储位置 | 服务器端。 | 客户端。 |
| 应用场合 | 记住正在访问的用户信息。 | 记住曾经访问过的用户信息。 |
| 优缺点 | session需要cookie的支持。 |
cookie大小有限制:文件大小不超过4k,每个 站点最多20个,且会泄露用户隐私,不够安全。 |
<?php
session_start();
echo session_id().‘<br>‘;
if(isset($_SESSION[‘views‘])){
$views=intval($_SESSION[‘views‘])
$_SESSION[‘views‘]=strval($views+1);
}else{
$_SESSION[‘views‘]=1;
}
echo "Views=". $_SESSION[‘views‘];
?>
<?php
session_start();
if(!isset($_SESSION[‘username‘])){
echo ‘<script>alert("登录超时");location.href="login.html";</script>‘;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>系统登录</title>
</head>
<body>
<form action="check.php" method="post" name="frm" onsubmit="return check();">
<p>
<input type="text" name="username" placeholder="用户名" >
</p>
<p>
<input type="text" name="password" placeholder="密码">
</p>
<p>
<label>
<input type="checkbox" name="save_username" >记住密码
</label>
</p>
<p>
<input type="submit" value="登录">
</p>
</form>
</body>
</html>
<?php
session_start();
header("Content-type: text/html; charset=utf-8");
$username=trim($_POST[‘username‘]);
//防止xss攻击
$username=htmlspecialchars((strtolower($username)));
$password=$_POST[‘password‘];
if ($username==‘admin‘ && $password==‘123‘) {
// echo ‘登录成功!‘;
$_SESSION[‘username‘]=$username;
header(‘Location:index.php‘);
}else{
echo ‘用户名或密码错误‘;
}
?>
<?php
session_start();
if (!isset($_SESSION[‘username‘])) {
header(‘Location:login.html‘);
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>商城首页</title>
</head>
<body>
<h3>商品分类</h3>
<ul>
<li><a href="book.php">图书</a></li>
<li><a href="toy.php">玩具</a></li>
</ul>
<ul>
<li><a href="show_car.php">查看购物车</a></li>
<li><a href="log_out.php">退出</a></li>
</ul>
</body>
</html>
<?php
session_start();
if (!isset($_SESSION[‘username‘])) {
header(‘Location:login.html‘);
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图书</title>
</head>
<body>
<h3>图书</h3>
<form action="add_car.php" method="post">
<ul>
<li>
<label>
<input type="checkbox" name="goods[]" value="C">C语言从入门到放弃
</label>
</li>
<li>
<label>
<input type="checkbox" name="goods[]" value="Andriod">Andriod从入门到改行
</label>
</li>
<li>
<label>
<input type="checkbox" name="goods[]" value="Cplus">C++从入门到崩溃
</label>
</li>
<li>
<label>
<input type="checkbox" name="goods[]" value="bigdata">大数据从被忽悠到会忽悠
</label>
</li>
</ul>
<button type="submit">加入购物车</button>
</form>
</body>
</html>
<?php
session_start();
if (!isset($_SESSION[‘username‘])) {
header(‘Location:login.html‘);
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图书</title>
</head>
<body>
<h3>图书</h3>
<form action="add_car.php" method="post">
<ul>
<li>
<label>
<input type="checkbox" name="goods[]" value="ball">球
</label>
</li>
<li>
<label>
<input type="checkbox" name="goods[]" value="bear">小熊
</label>
</li>
<li>
<label>
<input type="checkbox" name="goods[]" value="minicar">小汽车
</label>
</li>
<li>
<label>
<input type="checkbox" name="goods[]" value="watergun">水枪
</label>
</li>
</ul>
<button type="submit">加入购物车</button>
</form>
</body>
</html>
<?php
session_start();
if (!isset($_SESSION[‘username‘])) {
header(‘Location:login.html‘);
}
header(‘Content-type:text/html;charset=utf-8‘);
$car=$_POST[‘goods‘];
// unset($_SESSION[‘car‘]);
var_dump($car);
if (isset($_SESSION[‘car‘])) {
foreach ( $_SESSION[‘car‘] as $key => $value) {
$good_name=$value[‘good_name‘];
// var_dump($good_name);
$index=array_search($good_name,$car);
// var_dump($index);
if ($index!==false) {
$_SESSION[‘car‘][$key][‘count‘]++;
unset($car[$index]);
}
}
}
foreach ($car as $key => $value) {
$good=array(
‘good_name‘=>$value,
‘count‘=>1,
);
$_SESSION[‘car‘][]=$good;
}
var_dump($_SESSION[‘car‘]);
// unset($_SESSION[‘car‘]);
?>
<?php session_start();?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>查看购物车</title>
</head>
<body>
<table>
<thead>
<tr>
<th>商品</th>
<th>数量</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<?php
// var_dump($_SESSION[‘car‘]);
if (isset($_SESSION[‘car‘])) {
foreach ($_SESSION[‘car‘] as $key => $value) {
?>
<tr>
<td><?php echo $value[‘good_name‘];?></td>
<td><?php echo $value[‘count‘]; ?></td>
<td><a href="del_car.php?good_name=<?php echo $value[‘good_name‘]; ?>">删除</a></td>
</tr>
<?php }
}else{
echo ‘购物车无商品‘;
}
?>
</tbody>
</table>
<a href="clear_car.php">清空购物车</a>
</body>
</html>
<?php
session_start();
if (!isset($_SESSION[‘username‘])) {
header(‘Location:login.html‘);
}
var_dump($_SESSION[‘car‘]);
$good_name=$_GET[‘good_name‘];
if (isset($_SESSION[‘car‘])) {
foreach ($_SESSION[‘car‘] as $key => $value) {
if ($value[‘good_name‘]==$good_name) {
unset($_SESSION[‘car‘][$key]);
}
}
}
header(‘Location:show_car.php‘);
?>
<?php
session_start();
if (!isset($_SESSION[‘username‘])) {
header(‘Location:login.html‘);
}
unset($_SESSION[‘car‘]);
header(‘Location:index.php‘);
?>
<?php session_start(); session_unset(); session_destroy(); header(‘Location:login.html‘); ?>
原文:https://www.cnblogs.com/315sky/p/12115742.html