0x00 起源
从零学习php,最终目的实现代码审计入门,软件采用sublime text,环境使用phpstudy搭建,需要有简单的html基础和php基础,跟随流沙前辈视频学习记录。
0x01 COOKIE和SESSION
cookie保存在浏览器端,session保存在server端,session依靠cookie才能实现;更深入了解,推荐文章 你真的了解 Cookie 和 Session 吗? - 纯洁的微笑 - 博客园
0x02 关于cookie的例子
设置cookie值的有效时间
<?php //9-27 php会话技术 cookie保存在浏览器端的数据
//setcookie("id",$id,time()+36002430 ,'/'); 语法
setcookie("ccc",123456,time()+60) //设置cookie的有效时间1min
setcookie("aaa",123456.time()+600); //10min
setcookie("bbb",123456,time()+60*60); //1h 依次类推,可自由设置
用cookie来计算当前页面的访问次数
代码一 简单的例子
<?php /*cookie来计算当前页面的访问次数 */
setcookie("num",20);
//(第一次设置cookie 当前页面是取不出来的),经测试,第一次访问页面会报错,第二次才会显示值为20,为php一个特性
$num = $_COOKIE["num"];
echo $num;
代码二 正常代码执行但有坑
<?php
$num = 0;
if(empty($_COOKIE["access"])) //先判断access(访问计数)值是否为空
{
setcookie("access",1); //如果为空,设置access值是1
echo $_COOKIE["accesss"];
}else{
$num = $_COOKIE["access"]; //不为空时
$num++; //因为是对浏览器的访问次数计数,所以没访问一次,num值要自加
setcookie("access",$num);
echo $_COOKIE["access"];
}
代码三 代码二修正版
/*因为第一次访问会报错,所以代码修改为第一次访问为空直接echo 1,不为空接收$num的值,这样会成功避免掉访问报错的问题*/
<?php
$num = 0;
if(empty($_COOKIE["access"])) //先判断access(访问计数)值是否为空
{
setcookie("access",1); //如果为空,设置access值是1
//echo $_COOKIE["accesss"];
echo 1;
}else{
$num = $_COOKIE["access"]; //不为空时
$num++; //因为是对浏览器的访问次数计数,所以没访问一次,num值要自加
setcookie("access",$num);
//echo $_COOKIE["access"];
echo $num;
}
0x03 有关session的例子
需要注意一点,在使用session之前要用session_start()函数
session清空有两种方法
session_destory(); //使用session_destory()函数
$_SESSION = arrary(); //用数组的方法
session登陆测试,此例子需要三个php页面
页面一 t4.php
<!DOCTYPE html>
<html>
<head>
<title>session登陆测试页面</title>
</head>
<body>
<form action="session.php" method="post">
用户名:<input type="text" name="name1">
密码:<input type="password" name="pass1">
<input type="submit" value="登陆">
</form>
</body>
</html>
页面二 session.php
<?php
header("Content-type:text/html;charset=utf-8");
session_start();
if(empty($_POST)){ //POST数据为空
echo "登陆失败,请输入账号密码<br/>";
echo "<a href = 't4.php'>请登录</a>"; //注意t4.php为''
}else{
$name = $_POST["name1"]; //接收账号密码
$pass = $_POST["pass1"];
if($name == "admin" && $pass == "123456"){ //对账号密码值进行匹配,正常情况下是有数据库的,但是现阶段学习从零开始
$_SESSION["name"] = "admin";
header("Location:t5.php"); //跳转使用header加Location
}else{
echo "登陆失败,用户名或密码错误<br/>"; //账号密码错误进行提醒
echo "<a href = 't2.php'>请登录</a>";
}
}
页面三 t5.php
<?php
header("Content-type:text/html;charset=utf-8");
session_start();
if(empty($_SESSION)){ //判断session值是否为空
echo "无权登录</br>";
echo "<a href = 't4.php'>请登录</a>"; //t4.php使用''
}else{
$name = $_SESSION["name"];
echo "欢迎".$name."登陆系统"; //如果成功,欢迎admin登陆系统
}
测试页面结果
0x04 总结
边学边记录,不知不觉已到深夜。学习起来还是蛮有意思,有兴趣的童鞋可以敲敲代码。
如有错误,欢迎指出,毕竟个人也是新手。