PHP补充

PHP JSON

JSON 函数


函数描述
json_encode对变量进行JSON编码
json_decode对JSON格式的字符串进行解码,转换为PHP变量

json_encode

PHP json_encode() 用于对变量进行JSON编码该函数如果执行成功返回 JSON 数据,否则返回 FALSE 。

语法

string json_encode ($value)

实例

PHP转JSON

<?php
   $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
   echo json_encode($arr);
?>

结果

{"a":1,"b":2,"c":3,"d":4,"e":5}

json_decode


PHP json_decode() 函数用于对 JSON 格式的字符串进行解码,并转换为 PHP 变量。

语法

mixed json_decode ($json_string [,$assoc = false [, $depth = 512 [, $options = 0 ]]])

参数

  • json_string : 待解码的 JSON 字符串,必须是 UTF-8 编码数据

  • assoc : 当该参数为 TRUE 时,将返回数组,FALSE 时返回对象。

  • depth : 整数类型的参数,它指定递归深度

  • options : 二进制掩码,目前只支持 JSON_BIGINT_AS_STRING 。

实例

<?php
   $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
 
   var_dump(json_decode($json));
   var_dump(json_decode($json, true));
?>

结果

object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}
 
array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

PHP 表单


PHP 预定义了 $_POST 和 $_GET 变量来接收表单信息。

HTML 表单

form.html

<html>
<body>
<form name="commentform" method="post" action="comment.php">
<p>
称呼: <input type="text" name="nickname" />
</p>
<input type="submit" value="提 交" />
</form>
</body>
</html>

单信息包含了一个(称呼)输入框和 提交 按钮。当点击 提交 按钮时,网页就会把表单信息(用户输入的称呼)以 POST 方式提交给 comment.php 文件处理。

comment.php 文件

<html>
<body>
<p>您的称呼是:<?php echo $_POST["nickname"]; ?></p>
</body>
</html>

当我们在 form.html 输入框里输出称呼:小明,点击 提交 按钮,comment.php 页面显示:

您的称呼是:小明

HTML 表单验证


表单用于收集客户的输入信息时,不要想当然的以为客户会按照设想中的输入符合规定的内容。任何时刻都要对客户的输入做严格检查。

客户端验证

客户端验证
客户端表单验证一般是基于 Javascript 脚本的验证方式,这种验证方式能有效减少服务器的负担,也能即时提醒客户输入的错误之处。

服务器端验证

在某些情况下,除了进行客户端的验证外,可能还需要进行服务器端的验证(如访问数据库)。这时候需要在 PHP 程序里做好逻辑上的验证。关于服务器端验证

PHP $_POST


$_POST 变量用于获取由 HTTP POST 方式发送的表单数据。其数据结构是一个关联数组,键名为表单元素的 name ,值为对应的表单取值。

form.html

<html>
<body>
<form name="commentform" method="post" action="comment.php">
<p>
称呼: <input type="text" name="nickname" />
</p>
<input type="submit" value="提 交" />
</form>
</body>
</html>

在comment.php中,打印出$_POST信息

<?php
print_r($_POST);
?>

结果为

Array
(
     => 小明
)

访问 $_POST 变量

可以像访问普通数组一样方便的访问 $_POST 变量:

<?php
echo '您的称呼是:',$_POST["nickname"]; 
?>

POST 方法发送的数据对任何人都是不可视的,且对发送信息的量几乎无限制,对于敏感数据(如密码)或者大容量的数据信息提交,通常采用的是 POST 方式。

案例

模拟登登录

$list = array("mumu"=>123,"zql"=>"zmm123","曾庆林"=>"456")  
 
如果用户没有输入 用户名 密码 则退出程序
如果 用户名密码不在list中则提示用户名密码错误
如果 用户名密码都正确 则 提升 欢迎xx,登录成功
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
  <?php
  
 
   
    $list = array("mumu"=>123,"zql"=>123,"曾庆林"=>"456");
  if(isset($_POST["user"])&&isset($_POST["pwd"])){
        $user = $_POST["user"];
        $pwd = $_POST["pwd"];
        if(array_key_exists($user,$list)){
            if($list[$user]==$pwd){     
                echo "<script>alert('登录成功!');</script>";
            }else{            
                echo "<script>alert('用户名或密码错误')</script>";
            }
        }else{
            echo "<script>alert('用户名未注册')</script>";
        }
        
  }
 ?>
 <h1>登录</h1>
<form action="" method="POST">
    用户名: <input type="text" name="user"><br>&emsp;码: <input type="password" name="pwd"/><br>
    &emsp;&emsp;&emsp; <input type="submit" value="登录">
</form>
</body>
</html>

PHP $_GET

$_GET 变量用于接收表单 method=“get” 方式发送的表单信息。

$_GET 变量的数据结构同 $_POST 类似,也是一个关联数组,键名为表单元素的 name,用于收集以 HTTP GET 方式请求的数据。

表单 form.html:

<html>
<body>
<form name="commentform" method="get" action="comment.php">
<p>
称呼: <input type="text" name="nickname" />
</p>
<input type="submit" value="提 交" />
</form>
</body>
</html>

将前面的例子表单改为 GET 方式,输入称呼后,在浏览器地址栏,看起来类似如下(IE 浏览器下中文可能会经 encode 编码):

http://www.5idev.com/html/comment.php?nickname=%D0%A1%C3%F7

取得 GET 表单数据:

<?php
echo '您的称呼是:',$_GET["nickname"]; 		//输出:您的称呼是:小明
?>

1.GET 方式会把表单数据暴露在浏览器地址栏里,因此不宜发送敏感数据(如密码等),敏感信息发送请使用 POST 方式。
2.GET 方式对发送的信息量有一定限制,如果发送较大的信息,请使用POST 方式。
3.GET 方式访问的页面可以加入收藏夹而在以后可以直接访问,而 POST 方式访问的页面则不能。

HTTP GET


HTTP GET 方式不仅是用于表单数据发送,它是指更广泛的以实体的方式得到由请求 URL (浏览器地址)所指定资源的信息。具体参见《XHTML Get与Post》。

利用 HTTP GET 方式还可以向网页传递数据信息,如下面这个地址:
http://www.520mg.com/html/article.php?id=10

article.php 中取得 GET 数据:

<?php
echo $_GET["type"];		//输出 2
echo $_GET["id "];		//输出 10
?>

案例

获取的GET参数
q1 默认0 q2默认是q1+100
产生随机一个 q1 到q2的整数

isset($_GET["q1"])?$q1=$_GET["q1"]:$q1=0;
isset($_GET["q2"])?$q2=$_GET["q2"]:$q2=$q1+100;
      
$num = rand($q1,$q2);
echo "<br/>$num<br/>";

isset()检查变量是否存在


isset()

PHP isset() 用于检测一个或多个变量是否设置,如果被检测的变量存在则返回 TRUE,否则返回 FALSE。

语法:

bool isset( mixed var [, mixed var [, ...]] )

如果检测多个变量时,只要其中一个变量存在,则检测结果就会返回 TRUE 。

例子:

<?php
$var = 1;
if(isset($var)){
    echo '变量 $var 已经被设置';
} else {
    echo '变量 $var 还未被设置';
}
?>

变量 $var 已经被设置
注意

  • isset() 只能用于检测变量,传递任何其它参数都将造成解析错误。
  • isset() 是一个语言结构而非函数,因此它无法被变量函数调用。
    下述情况,isset() 返回 TRUE :
$var = "";
$var = array();
$var = 0;
$var = false;

验证码


1.验证码为全自动区分计算机和人类的图灵测试的缩写。是一种区分用户是计算机和人的公共全自动程序。

2.验证码主要应用场景:登录、注册确定前,发布、回复信息前,疑似机器请求时,做人/机器校验。

3.实现步骤:

(1)生成底图;依赖php图片处理库GD

(2)生成验证内容;产生随机数,使用php函数rand()

(3)生成验证码图片;

(4)校验验证内容 将用户的的输入的验证码与存入session的 验证码比对

创建图片

$image = imagecreatetruecolor(,);

创建图片颜色

$bg = imagecolorallocate(图片,R,G,B);
// RGB是0-255的取值
 
$bg = imagecolorallocate($image,255,255,255);
// 创建白色的背景

图片区域填充

imagefill(图片,x,y,颜色)
 
imagefill($image,0,0,$bgcolor);

内容生成

$data='abcdefghijkmnpqrstuvwxy3456789';
$f=substr($data,rand(0,strlen($data)),1);
从data中随机取出一个字符串

图片上绘制字符

 imagestring(图片,字体大小,x,y,字符,字符颜色)

session存储

$_SESSION["code"] = $code;

输出图片*

header("content-type:image/png");
imagepng($image);

展示

<?php
session_start();
// 开启session
$image = imagecreatetruecolor(100,30);
$bgcolor = imagecolorallocate($image,255,255,255);
imagefill($image,0,0,$bgcolor);
$code="";
for($i=0;$i<4;$i++){
    // $f = rand(0,9);
    $data='abcdefghijkmnpqrstuvwxy3456789';
    $f=substr($data,rand(0,strlen($data)),1);
    $code.=$f;
    $x = $i*25+rand(5,10);
    $y = rand(5,10);
    $fcolor = imagecolorallocate($image,0,0,0);
    imagestring($image,20,$x,$y,$f,$fcolor);
}
$_SESSION["code"] = $code;
header("content-type:image/png");
imagepng($image);
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值