下面介绍该论坛的用户登录部分,采用session来记录用户名username,如果username这个session变量已经注册了,则认为已经登录。下面看实现代码:
<? //判断用户名、密码是否正确的函数(在funcdef.php文件中定义)
function checkuser($username, $password)
{ if(!$username || !$password)
{
return false;
}
if(!file_exists("rec/userpsw"))
{
$fp = fopen("rec/userpsw", "w+"); }
$fp = fopen("rec/userpsw", "r+"); while(!feof($fp))
{
$rows = fgets($fp, 1024);
$rows = trim($rows);
$recuser = strtok($rows, "t");
$recpsw = strtok("t");
if($recuser == $username)
{
$namefound = 1;
if($recpsw == $password)
{
fclose($fp);
return true;
}
}
}
if(!$namefound)//不存在该用户,则自动注册成为新用户
{
fwrite($fp, "$usernamet$passwordn");
fclose($fp);
return true;
}
fclose($fp);
return false; }
?>
在主程序的最前面有登录和注销部分,通过判断$submit的值来进行登录和注销:
<? //文件forum.php @session_start(); require("funcdef.php");
if($submit == "登录") {
if(checkuser($username, $password) == true)
{
session_register("username"); //注册$username变量
$headstr = "Location:forum.php?".session_name()."=".session_id();
header($headstr); //转跳回主页面 } else
{
include("loginerr.php"); //显示登录错误的信息 } } if($submit == "注销") {
session_unregister("username");
$headstr = "Location:forum.php?".session_name()."=".session_id(); header($headstr);
} ?>
用户可以在主界面上登录,也可以在发帖子的时候才输入名字、密码来登录,两者的效果是完全相同的。至于在发帖子时登录的代码会在后面给出。
下次将介绍主题列表部分的代码。(未完待续)
|
|