1、首先先写表单页面login.html.


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">

    <title>用户登陆</title>
</head>
<!-- 定义输入表单样式 -->
    <style type="text/css">
    html{font-size: 12px;}
    fieldset{width:200px;margin:0 auto;}
    legend{font-weight: bold; font-size: 14px;}
    label{float:left; width:70px; margin-left:10px;}
    .left{margin-left:80px;}
    .input{width:150px;}
    span{color: #666666;}
    </style>
<!-- 验证表单是否输入 -->
    <script type="text/javascript">
        function InputCheck(LoginForm){
            if(LoginForm.username.value==''){
                alert('请输入用户名!');
                LoginForm.username.focus();
                return (false);
            }
            if(LoginForm.password.value==''){
                alert('请输入密码!');
                LoginForm.password.focus();
                return (false);
            }
        }
    </script>
<body>
    <div>
        <fieldset>
            <legend>用户登陆</legend>
            <form name="LoginForm" method="post" action="login.php" onSubmit="return InputCheck(this)">
                <p>
                    <lable for="username" class="lable">用户名:</lable>
                    <input id="username" name="username" type="text" class="input" />
                </p>
                <p>
                    <lable for="password" class="lable">密 码:</lable>
                    <input id="password" name="password" type="text" class="input" />
                </p>
                <p>
                    <input name="submit" value="提交" type="submit" /> 
                    <a href="reg.html">点此注册</a>
                </p>
            </form>
        </fieldset>
    </div>

</body>
</html>

2、然后写登陆源码。

<?php
    session_start();

    //注销登录
    function logout(){
        if($_GET['action']='logout'){
            unset($_SESSION['user_id']);
            unset($_SESSION['username']);
            echo '注销登陆成功!点击此处<a href="javascript:history.back(-1);">登陆</a>';
            exit;
        }
    }

    //登陆
    if(!isset($_POST['submit'])){
        exit('非法访问!');
    }

    $username = htmlspecialchars($_POST['username']);
    $password = md5($_POST['password']);

    //引入数据库文件
    include('mysql.php');
    //检测用户名密码是否正确
    $where = 'username="'.$username.'"';
    if($rs=mysql_fetch_assoc(select('user',$where))){
        //登陆成功
            $_SESSION['name'] = $username;
            $_SESSION['userid'] = $rs['user_id'];
            echo $username,' 欢迎你!进入 <a href="my.php">用户中心</a><br />';
            echo '点击此处 <a href="login.php?action=logout">注销</a> 登录!<br />';
            exit;
            }else {
            exit('登录失败!点击此处 <a href="javascript:history.back(-1);">返回</a> 重试');
        }

3、注册页面表单

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户登陆</title>
</head>
<!-- 定义输入表单样式 -->
    <style type="text/css">
    html{font-size: 12px;}
    fieldset{width:200px;margin:0 auto;}
    legend{font-weight: bold; font-size: 14px;}
    label{float:left; width:70px; margin-left:10px;}
    .left{margin-left:80px;}
    .input{width:150px;}
    span{color: #666666;}
    </style>
<!-- 验证表单是否输入 -->
    <script type="text/javascript">
        function InputCheck(LoginForm){
            if(LoginForm.username.value==''){
                alert('请输入用户名!');
                LoginForm.username.focus();
                return (false);
            }
            if(LoginForm.password.value==''){
                alert('请输入密码!');
                LoginForm.password.focus();
                return (false);
            }
            if(LoginForm.email.value==''){
                alert('请输入邮箱');
                LoginForm.email.focus();
                return (false);
            }
        }
    </script>
<body>
    <div>
        <fieldset>
            <legend>用户登陆</legend>
            <form name="LoginForm" method="post" action="reg.php" onSubmit="return InputCheck(this)">
                <p>
                    <lable for="username" class="lable">用户名:</lable>
                    <input id="username" name="username" type="text" class="input" />
                </p>
                <p>
                    <lable for="password" class="lable">密 码:</lable>
                    <input id="password" name="password" type="text" class="input" />
                </p>
                <p>
                    <lable for="password" class="lable">邮 箱:</lable>
                    <input id="email" name="email" type="text" class="input" />
                </p>
                <p>
                    <input name="submit" value="注册" type="submit" /> 
                </p>
            </form>
        </fieldset>
    </div>

</body>
</html>


4、接收注册表单。


<?php

    if(!isset($_POST['submit'])){
        exit('非法操作!');
    }

    $username = strtolower($_POST['username']);
    $password = strtolower($_POST['password']);
    $email =  strtolower($_POST['email']);
    //注册信息判断
    // if(!preg_match('/^[\w\x80-\xff]{3-15}$/',$username)){
    //     exit('错误:用户名不符合规定。<a href="javascript:history.back(-1);">返回</a>');
    // }
    if(strlen($password)<6){
        exit('错误:密码长度太短。<a href="javascript:history.back(-1);">返回</a>');
    }
    // if(!preg_match('/^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/',$email)){
    //   exit('错误:电子邮件格式有误。<a href="javascript:history.back(-1);">返回</a>');
    // }

//引入数据库操作文件
    include('mysql.php');
//检测用户名是否存在
    $where = 'username="'.$username.'"';
    if(mysql_fetch_assoc(select('user',$where))){
        echo '错误:用户名',$usename,'已存在.<a href="javascript:history.back(-1);">返回</a>';
        exit();
    }

//插入数据
    $password = md5($password);
    $data['username'] = $username;
    $data['password'] = $password;
    $data['email'] = $_POST['email'];
   $re = insert('user',$data);
   if($re){
        exit('用户注册成功!点此登录<a href=" login.html">登陆</a>');
   }else{
        echo ' 添加数据失败:',mysql_error(),'<br>';
        echo '点击此处<a href="javascript:history.back(-1);">返回</a>重试';
   }

5、验证页面是否已经登录
<?php
session_start();

//检测是否登录,若没登录则转向登录界面
if(!isset($_SESSION['userid'])){
header("Location:login.html");
exit();
}

//包含数据库连接文件
include('conn.php');
$userid = $_SESSION['userid'];
$username = $_SESSION['username'];
$user_query = mysql_query("select * from user where uid=$userid limit 1");
$row = mysql_fetch_array($user_query);
echo '用户信息:<br />';
echo '用户ID:',$userid,'<br />';
echo '用户名:',$username,'<br />';
echo '邮箱:',$row['email'],'<br />';
echo '注册日期:',date("Y-m-d", $row['regdate']),'<br />';
echo '<a href="login.php?action=logout">注销</a> 登录<br />';

6、操作数据库函数。
<?php

$db_host   = "localhost:3306";
// database name
$db_name   = "test";
// database username
$db_user   = "root";
// database password
$db_pass   = "";

$con = mysql_connect($db_host,$db_user,$db_pass);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db($db_name, $con);
// some code
#mysql_close($con);
function select($table,$where='',$order='',$limits='',$field=''){

$field=($field==null)?'*':$field;
$sele.="from ".$table;
$where=($where==null)?'':' where '.$where;
$order=($order==null)?'':' order by '.$order;
$limits=($limits==null)?'':' limit '.$limits;
$sele="select ".$field." from ".$table.$where.$order.$limits;
//var_dump($sele);
return mysql_query($sele);
mysql_close($con);
}
//插入,二个参数都是必须,后为数组
function insert($table,$columns)
{
foreach($columns as $key=>$values)
{
$addkey.='`'.$key.'`,';
if(is_numeric($values))
{
$addvalues.=$values.',';
}
else
{
$values=mysql_real_escape_string($values);
$addvalues.='\''.$values.'\',';
}
}
$addkey=rtrim($addkey,',');
$addvalues=rtrim($addvalues,',');
$inse.='INSERT INTO '.$table.'('.$addkey.') VALUES ('.$addvalues.');';
return mysql_query($inse);
}
//更新,三个参数都是必须的
function update($table,$data,$where)
{
foreach($data as $k=>$v)
{
if(is_numeric($v))
{
$edit_data.='`'.$k.'`'.'='.$v.',';
}
else
{
$edit_data.='`'.$k.'`'.'='."'".mysql_real_escape_string($v)."',";
}
}
$edit_data=rtrim($edit_data,',');
$upda="UPDATE  ".$table." SET ".$edit_data." WHERE ".$where;
return mysql_query($upda);
}
//删除
function delete($table,$where)
{ $dele="DELETE FROM ".$table." WHERE ".$where;
return mysql_query($dele);
}

?>

完整注册登陆php源码,附带session验证。的更多相关文章

  1. TOMCAT8源码分析——SESSION管理分析(上)

    前言 对于广大java开发者而已,对于J2EE规范中的Session应该并不陌生,我们可以使用Session管理用户的会话信息,最常见的就是拿Session用来存放用户登录.身份.权限及状态等信息.对 ...

  2. Tomcat源码分析——Session管理分析(上)

    前言 对于广大java开发者而已,对于J2EE规范中的Session应该并不陌生,我们可以使用Session管理用户的会话信息,最常见的就是拿Session用来存放用户登录.身份.权限及状态等信息.对 ...

  3. 2017最新修复福运来完整运营中时时彩源码PC+手机版本功能齐全

    QQ:1395239152 2017-3.14最新修复福运来完整运营版时时彩源码PC+手机版本功能齐全 使用php+mysql开发,并带有完整数据库.截图!!!  注意哈  带手机版  以下截图均为测 ...

  4. Tomcat源码分析——Session管理分析(下)

    前言 在<TOMCAT源码分析——SESSION管理分析(上)>一文中我介绍了Session.Session管理器,还以StandardManager为例介绍了Session管理器的初始化 ...

  5. 菜鸟系列Fabric源码学习 — MVCC验证

    Fabric 1.4 源码分析 MVCC验证 读本节文档之前建议先查看[Fabric 1.4 源码分析 committer记账节点]章节. 1. MVCC简介 Multi-Version Concur ...

  6. 超详细的php用户注册页面填写信息完整实例(附源码)

    这篇文章主要介绍了一个超详细的php用户注册页面填写信息完整实例,内容包括邮箱自动匹配.密码强度验证以及防止表单重复等,小编特别喜欢这篇文章,推荐给大家. 注册页面是大多数网站必备的页面,所以很有必要 ...

  7. Python的Django框架完成一个完整的论坛(源码以及思路)

    一个完整的论坛,登录.注册.发表.头像.点赞.评论.分页.阅读排行等 使用Django2,Python3.5 开发工具:Pycharm5 需要的知识:Python基础知识,Django原理的理解以及使 ...

  8. 从Spring-Session源码看Session机制的实现细节

    Re:从零开始的Spring Session(一) Re:从零开始的Spring Session(二) Re:从零开始的Spring Session(三) 去年我曾经写过几篇和 Spring Sess ...

  9. [session篇]看源码学习session(一)

    假如你是使用过或学习过PHP,你一定觉得很简单.session只不过是$_SESSION就可以搞得,这还不简单只是对一个key-value就能工作了.我觉得可以大多数的phper都是这样的,这是语言本 ...

随机推荐

  1. Python+Selenium中级篇之8-Python自定义封装一个简单的Log类《转载》

    Python+Selenium中级篇之8-Python自定义封装一个简单的Log类: https://blog.csdn.net/u011541946/article/details/70198676

  2. 159-PHP strstr函数,取最后几个字符和除去最后几个字符

    <?php $str='programming'; //定义一个字符串 $res=substr($str,-4); //处理字符串 echo "返回{$str}字符串的最后4个字符{$ ...

  3. case...when...和decode——oracle

    1.decode函数: 用法:decode(条件,值1,翻译1,值2,翻译2,......,缺省值): 例子: ','失败','未知') from table t1;--改变字段的显示值 ,变量1,变 ...

  4. 前端第二篇---前端基础之CSS

    前端第二篇---前端基础之CSS 目录 一.css介绍 二.css语法 三.css的几种引入方式 四.css选择器 五.css属性相关 六.盒子模型 拓展 一.css介绍 CSS(Cascading  ...

  5. 部署Ambari Server实战案例

    部署Ambari Server实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.准备三台虚拟机(需要自行安装jdk环境) 1>.角色分配 NameNode节点: h ...

  6. POJ - 1321 棋盘问题(简单搜索)

    题意:在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方 ...

  7. oracle学习笔记(3)

    使用profile文件对口令进行管理 sql>create profile 文件名 limit failed_login_arrempts 3 password_lock_time 2; 将配之 ...

  8. UVALive 4487 Exclusive-OR 加权并查集神题

    已知有 x[0-(n-1)],但是不知道具体的值,题目给定的信息 只有 I P V,说明 Xp=V,或者 I P Q V,说明 Xp ^ Xq=v,然后要求回答每个询问,询问的是 某任意的序列值 Xp ...

  9. HZNU-ACM寒假集训Day7小结 背包DP

    背包问题 01背包 状态:f(i,j) 表示只能装前i个物品的情况下,容量为j的背包所能达到的最大总价值 状态转移方程:  f(i,j)=max(f(i-1,j),f(i-1,j-w[i])+v[i] ...

  10. zset底层数据结构

    redis zset底层数据结构 https://www.jianshu.com/p/fb7547369655 跳跃列表(Skip List)与其在Redis中的实现详解 https://www.ji ...