您的位置:首页 > 运维架构 > 网站架构

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

2017-03-20 19:59 766 查看
通常使用表单传递并提交客户端写入的相关信息,在后台需要获取用户传来的信息,则需要使用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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: