[php] 我的微型论坛的简单教程[已完成]第6/8页
现在数据库中还没有数据,所以,我们运行首页,只显示“对不起,论坛尚在建设中……”。既然我们很希望看到结果,就往数据库中加几条数据吧!!当然,直接在MySQL客户端运行查询语句"insert into forums (field1,field2,...fieldN) values (value1,value2,...valueN)"是可行的,但是,作为WEB程序,这样做显然没啥意义。我们靠表单来插入数据。
建立一个新文件:add_forum.php。首先说明的是,这个页面是管理员用来添加版块的,开始肯定要判断当前用户有没有管理权限。现在我们只为了首页显示数据而已,所以,可以先不加验证程序。我用DW做的添加论坛版块的表单如下图:
其中排序指论坛排列顺序,SQL语句"order by forum_list asc";完全开放的话游客可以发表、回复帖子,否则只注册会员才可以发帖。
表单的HTML部分如下:
<form name="form" action="save_forum.php" method="post"><table width="400" border="0" align="center" cellpadding="5" cellspacing="1" class="mrg-top maintable">
<tr id="title">
<td colspan="2">论坛管理</td>
</tr>
<tr>
<td width="23%"><strong>论坛名称</strong></td>
<td width="77%"><input name="forum_name" type="text" class="input" id="forum_name" /></td>
</tr>
<tr>
<td><strong>论坛简介</strong></td>
<td><textarea name="forum_description" cols="30" rows="5"></textarea></td>
</tr>
<tr>
<td><strong>论坛排序</strong></td>
<td><input name="forum_order" type="text" class="input" id="forum_order" />
<input name="isguest" type="checkbox" id="isguest" value="1" />
完全开放</td>
</tr>
<tr>
<td></td>
<td><input name="Submit" type="submit" class="btn" value="添加" />
<input name="Submit2" type="reset" class="btn" value="重置" /></td>
</tr>
</table></form>
表单可以用JS或VBS进行验证,也可以提交到save_forum.php后进行必要的验证。我这里对字符串检验不多说了,只研究插入数据的部分。
首先接收表单的值,要区分POST和GET方式,分别使用$_POST["**"]和$_GET["**"]来接受数据。
<?php
$forum_name=$_POST["forum_name"];
$forum_description=$_POST["forum_description"];
$forum_order=$_POST["forum_order"];
$isguest=$_POST["isguest"];
//这里注意isguest是复选框,在MYSQL里用0和1来表示是否选中
$isguest=isset($isguest)?1:0; //选中的话就是1,不选中的话就是0;
?>
写入数据库数据的SQL语句大家都很熟悉了,用insert来实现:
<?php
require_once("conn.php");
//刚才接收值的程序
$sql="insert into forums (forum_name,forum_description,forum_order,isguest)values('$forum_name','$forum_description','$forum_order','$isguest')";
mysql_query($sql); //到这里,数据已经插入了数据库
header("location:index.php"); //执行完插入则跳转到首页
?>
看看我添加页面和显示页面吧:
最终显示效果:
OK,现在已经实现了基本的数据插入和读取了。嘿嘿……下一步,和上面道理一样,注册和登陆界面,同样是用DW做表单,HTML代码我不在赘述,抓个图吧!会员注册就填写四个条件可以了(现在都讲究用户体验,能少填就少填吧^@^必要的验证自己研究去)
会员登陆见图
先写处理注册信息的部分代码:
<?php
//reg.php
require_once "conn.php";$username=$_POST["username"];
$password=md5(trim($_POST["password"]));
$email=trim($_POST["email"]);$groupID=1; //默认用户等级:1为注册会员,2为管理员
$real_name="未知"; //默认真实姓名,登陆后自己修改吧
$no_of_post=0; //刚注册用户发贴量肯定为0
$headimg="head/0.gif"; //默认用户头像
$sign="Nothing..."; //默认用户的签名$num=mysql_result(mysql_query("select count(*) from member where username='$username'"),0); //检查用户名是否已经被注册
/*上面程序其实就是:
$sql="select count(*) from member where username='$username'";
$result=mysql_query($sql);
$num=mysql_result($result,0);
*/
if($num){ //当用户名已经被注册时
echo "<script>alert('该用户名已经被注册!');location.href='register.php';</script>";
}else{
$sql="insert into member (groupID,username,password,real_name,jointime,no_of_post,headimg,
email,sign) values ('$groupID','$username','$password','$real_name',now(),'$no_of_post','$headimg','$email','$sign')";
$db->db_query($sql);
//注意插入当前时间,00:00:00 00:00:00格式时用now(),看起来和ASP一样哦……
//这里要特别注意了,注册后会员就会自动登陆,如下:
$_SESSION["username"]=$username;
$_SESSION["groupID"]='1';
$_SESSION["islogined"]="OK"; //我自己加的一个项目,可有可无
echo "<script>alert('注册成功!');location.href='index.php';</script>";
}
这里出现了SESSION,用来标识用户是否登陆。在PHP中的SESSION是怎样用的呢?按照书上说的,注册SESSION时应该这样:
<?php
$username="abc";
session_register("username");
?>
实际上,我们可以这样来用(象ASP那样直接赋值给SESSION变量),使用SESSION时直接拿来用就可以了。
<?php //下面查看SESSION是否已经生效
$username="abc";
$_SESSION["username"]=$username;
if(session_is_registered("username")
echo "SESSION变量已经生效";
//因为它是变量,同样也可以这样来判断
if(isset($_SESSION["username"]))
echo "SESSION变量已经生效";
?>
这里要说明的是,使用SESSION时,必须首先使用session_start()函数。所以,使用SESSION时的每个页面,头部都要有这个函数出现。
这个时候,注册用户已经登陆了,那么,在首页上应该体现出来吧,见下图:
比较一下没登陆前这个位置:
实现起来当然靠上面刚讲的SESSION啦。代码如下:
<?php
session_start(); if(!isset($_SESSION["username"])||!isset($_SESSION["islogined"])){
echo"<a href=\"login.php\">登陆</a> <a href=\"register.php\">注册</a>";
}else{
echo $_SESSION["username"].",<a href=\"control.php\">我的资料</a> <a href=\"loginout.php\">注销</a>";
if($_SESSION["groupID"]=="2") echo " <a href=\"admin_forums.php\">论坛管理</a>";
}
?>
上面的代码应该很简单,相信大家一看就会懂。值的一提的是,我用SESSION["groupID"]来判断是否管理员,如果是,则出现”论坛管理“的连接。
退出的页面loginout.php,逻辑很简单,把所有SESSION释放掉就OK了,PHP中释放全部SESSION的方法是:
<?php
SESSION_DESTROY();//或者使用session_unregister()来注销SESSION
?>
然后登陆其实也很简单了(你明白了注册步骤,登陆就应该很容易了)。部分代码:
<?php
session_start();require_once("conn.php"); //先接收用户登陆表单传来的值,这里略去$sql="select * from member where username='$username'";
$result=mysql_query($sql);
$num=mysql_num_rows($result); //得到记录的数量
if($num){ //如果用户存在,则检查密码是否正确
$rs=mysql_fetch_array($result);
if($rs["password"]!=md5($password)){
echo"<script>alert('密码不正确,请返回检查!');location.href='login.php';</script>";
}else{//用户名、密码都正确,注册SESSION变量,然后跳转到首页
$_SESSION["username"]=$username;
$_SESSION["groupID"]=$rs["groupID"];
$_SESSION["islogined"]="OK";
echo"<script>alert('登陆成功!');location.href='index.php';</script>";
}
}else{//如果没有这个用户
echo"<script>alert('没有这个用户,请返回检查!');location.href='login.php';</script>";
}
?>
今天实现了添加论坛版块,用户注册、登陆的功能了,也知道了SESSION的基本用法。
相关文章
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
本篇文章主要介绍了Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例,具有一定的参考价值,有兴趣的可以了解一下2017-09-09ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
这篇文章主要介绍了ThinkPHP框架实现导出excel数据的方法,结合实例形式分析了thinkPHP添加org扩展基于PHPExcel进行Excel数据的导出操作相关实现技巧,需要的朋友可以参考下2018-05-05浅谈Laravel POST,PUT,PATCH 路由的区别
今天小编就为大家分享一篇浅谈Laravel POST,PUT,PATCH 路由的区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-10-10
最新评论