PHP网站开发实例教程之知识点归纳3(WEB表单与会话技术)

通常使用表单传递并提交客户端写入的相关信息,在后台需要获取用户传来的信息,则需要使用PHP中的一些变量以及方法

1.超全局变量:

PHP脚本运行时,会自动将一些数据放在超全局变量里面,它是PHP预先定义好了的变量,常用的超全局变量:
    1>$_POST[$name]:获取通过post方式提交到PHP脚本的变量
    2>$_GET[$name]:获取通过get方式提交到PHP脚本的变量
    3>$_FILES[..]:获取通过post方式上传文件到PHP脚本的变量
    4>$_SERVER[..]:获取当前服务器的相关信息以及HTTP的请求信息
    5>$_COOKIE[...]:获取由HTTP提交至PHP脚本的cookie的相关信息
    6>$_SESSION[...]:获取或者设置用户的会话信息
    7>$_REQUEST[...]:获取由get、post和cookie方式提交至PHP脚本的变量

2.获取表单数据示例:

//传递数据的表单
<form action="get.php" method="post">
    <label for="username">username:</label>
    <input type="text" name="username" placeholder="please input your username" />
    <br />
    <label for="password">password:</label>
    <input type="password" name="password" placeholder="please input your password" oncopy="return false;" onpaste="return false;" />
    <br />
    <button type="submit" onclick="this.disabled=true;this.form.submit();">登录</button>
    <span>   </span>
    <button type="reset">重写</button>
</form>

//get.php
<?php
    //获取传来的数据
    if(isset($_POST['username'])){
        echo "你好".$_post['username']."<br />";
        if(isset($_POST['password'])){
            echo "你的密码是".$_POST['password'];
        }   
    }
?>

使用isset(name)方法可以用于判断name变量是否存在,也可以使用empty($_POST)来判断post超全局变量是否为空,从而判断表单是否已经提交

3.表单的基本验证相关函数

这里就不解说那些正则表达式了

1.in_array($val,$arr):可以使用该函数来判断表单传来的数据val是否存在于指定的数组里面

2.nl2br($text):用于将text文本中的换行符转换成浏览器能够识别的<br />换行符,通常我们使用textarea输入框输入换行时,当输出该原文本时,浏览器不会原封不动的进行换行,因为我们输入的换行符浏览器并不认识,因此还需要将这些特殊的字符转换成浏览器能够识别的标签等,这个方法还是仅仅转换文本里面的换行符

3.trim($str):取出字符串str前后两边的空格

4.intval($str):将字符串str转换成整型变量 intval('das23')=0;

5.strip_tags($str):取出字符串中的大于号和小于号,防止浏览器将其解析为标签的大于号和小于号

6.htlspecialchars($str):将字符串中的HTML特殊字符转换成浏览器可以识别的HTML实体字符,以原封不动的形式输出

4.Cookie技术

cookie是网站为了辨别用户身份而存储在用户本地终端上面的数据,可以实现历史浏览登录记录等功能

1.setcookie($name,$value,$expiretime):创建cookie数据键值对$name=>$value并且指定expiretime之后过期

2.setcookie($name,$value,$expiretime): 如果name的cookie已经存在,那么这行代码就用户修改name的cookie信息

3.setcookie($name,'',time()-1):删除name的cookie

4.读取cookie的相关信息使用PHP预先定义好的超全局变量$_COOKIE$_COOKIE[$name];

5.cookie也是不安全的,在页面输入如下代码就可以显示所有的cookie信息:
    <script>
        alert(document.cookie);
    </script>
 这样别人就可以很轻易的获取该页面的全部记住的密码cookie信息。因此为了防止这一泄露发生,浏览器为cookie提供了一个HttpOnly属性,该属性为true可以使cookie只能通过http协议进行访问而不能通过js代码来访问了:
     setcookie($name,$value,..,..,..,..,HttpOnly);

5.通过cookie实现简单的用户记住密码的示例:

//假设现在本地终端机已经存在两个cookie,信息如下
//setcookie('username','chengxi',time()+1800);
//setcookie('password','123456',time()+1800);

//实现用户记住密码
<?php
    echo "<form action='get.php' method='post'>";
    echo "<label for='username'>username:</label>";
    $username = "";
    if(isset($_COOKIE['username'])){
        $username ="value=". $_COOKIE['username'];
    }
    echo "<input type='text' name='username'".$username."placeholder='please input your username' /><br />";
    echo "<label for='password'>password:</label>";
    $password = "";
    if(isset($_COOKIE['password'])){
        $password = "value=".$_COOKIE['password'];
    }
    echo "<input type='password' name='password'".$password."placeholder='please input your password' /><br />";
    echo "<button type-'submit' onclick='this.disable=true;this.form.submit()'>登录</button>";
    echo "<span>  </span>";
    echo "<button type='reset'>重置</button>";    
?>
运行结果可以看出来,使用cookie可以实现用户第一次登录之后后续登录可以不需要再输入用户名和密码了

6.Session会话技术

session在网络应用中称为会话,是用户在浏览某个网站时,从进入网站到关闭网站所经过的这段时间

1.当创建一个session时,客户端和服务器会分别保存会话的ID,其中客户端会以cookie的方式来保存会话的ID,而服务器会以文件的形式来保存,文件的位置可以通过php.ini进行修改,默认的位置是"C://window/temp"

2.使用session需要经过下面几步
    1>启动session:session_start();
    2>然后就可以通过超全局变量$_SESSION来进行添加、读取、修改session数据的操作了
        1.添加:$_SESSION['username'] = 'chengxi';
        2.读取:$username = $_SESSION['username'];
        3.修改:$_SESSION['username'] = 'yuanfenwuyue';
    3>删除session:unset($_SESSION[$name])
    4>删除session之后,在服务器中的仍然保存了session的文件,只不过该文件已经为空了,我们还是需要删除这个空文件;session_destroy();

7.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值