15-10-10 day3
今天目标计划,是做出来,登陆,注销,注册,查看,回复,删除功能。
但是登陆注销 这个和用户登陆状态有关的东西,就不会用这个session了。
有必要在这里赘述一下session的使用过程!
作为一个全局开启的的类, session start(); 这一句就写在了 connect.php 文件内,因为主要的页面都链接数据库。
然后获取值的部分在
$check_query = mysql_query("select * from userinfo where username='$username' and psw='$psw' limit 1");
这个是查询出来数据库内和表单提交的相匹配的数据。
然后
$result = mysql_fetch_array($check_query, 1)
把查询到的结果传递到 result 这里面
安全起见,释放掉unset($result['psw']); 这个里面的密码(MD5值)。
接着就把值传到session里面 $_SESSION['userinfo'] = $result;
由于整个过程,总监只用了几分钟帮我加这个代码,导致我不理解这个运行机制- -,所以我每天晚上都会写博客,回忆总结今天学习的东西。
在一个赋值的语句里面有 $_SESSION['userinfo']['username'] 这样的表达式 我觉得可以认为是一个数组。
解释一波
在$result = mysql_fetch_array($check_query, 1) 这个之后 添加一个var_dump($result); 会有如下的输出结果
array(3) { ["userid"]=> string(2) "12" ["username"]=> string(5) "admin" ["psw"]=> string(32) "7fef6171469e80d32c0559f88b377245" }
然后把$_SESSION['userinfo'] = $result; //认为这个是赋值
同时,
$_SESSION['userinfo']['username'] 这个的值正好是 admin ,就是正好读取数组 userinfo 下表的 username 里面的值 admin
目前的表达水平仅限于我自己能看懂!
还有一个就是session的清除,以及index.php 调用本身页面的语句。
<td align="right">
<?php
if(!empty($_SESSION['userinfo']))
{?>
<a οnclick="return confirm('是否确认注销?');" href="index.php?action=loginout">注销</a>
<?php }
?>
</td>
分清这几个问号大括号 简直狗带。。。
这个语句,作用就是,点击注销之后弹框,询问是否确认注销。
如果确认,就调用自身,给自己传一个 action ,动作是loginout
if(!empty($_GET['action']) && $_GET['action']=="loginout")
session_destroy();
此时,在文件头部会有这个语句。
如果这个if 条件满足的话,就销毁session (清除用户登陆的信息)
再看一下这个判断语句里面
get 方式下的action 不为空 并且 action 为 loginout ( 为什么这里不直接判断一个action 为 loginout?)
就销毁session 。
同时,在有session的情况下 可改变很多东西
<?php if(empty($_SESSION['userinfo'])){?>
<td align="right"> <a href="login.php">登陆</a></td>
<td align="right"> <a href="register.php">注册</a></td>
<?php } ?>
比如这个,只有在session为空的情况下,上方的选项有 登陆和注册
<td align="right"> <?php if(!empty($_SESSION['userinfo'])){?> <a οnclick="return confirm('是否确认注销?');" href="index.php?action=loginout">注销</a><?php } ?></td>
这个玩意儿就是表示,在session为空的情况下,就只显示一个注销的选项……
well