登录页面

login.html 负责收集用户填写的登录信息。

 <fieldset>
<legend>用户登录</legend>
<form name="LoginForm" method="post" action="login.php" onSubmit="return InputCheck(this)">
<p>
<label for="username" class="label">用户名:</label>
<input id="username" name="username" type="text" class="input" />
<p/>
<p>
<label for="password" class="label">密 码:</label>
<input id="password" name="password" type="password" class="input" />
<p/>
<p>
<input type="submit" name="submit" value=" 确 定 " class="left" />
</p>
</form>
</fieldset>

javascript 检测及 CSS 样式可参考 reg.html,本部分略去,可直接查看最后附录的完整代码。

登录处理

login.php 负责处理用户登录与退出动作。

 //登录
if(!isset($_POST['submit'])){
exit('非法访问!');
}
$username = htmlspecialchars($_POST['username']);
$password = MD5($_POST['password']); //包含数据库连接文件
include('conn.php');
//检测用户名及密码是否正确
$check_query = mysql_query("select uid from user where username='$username' and password='$password' limit 1");
if($result = mysql_fetch_array($check_query)){
//登录成功
$_SESSION['username'] = $username;
$_SESSION['userid'] = $result['uid'];
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> 重试');
}

该段代码首先确认如果是用户登录的话,必须是 POST 动作提交。然后根据用户输入的信息去数据库核对是否正确,如果正确,注册 session 信息,否则提示登录失败,用户可以重试。

该段代码需要在页面开头启用 session_start() 函数,参见下面 退出处理 代码部分。

退出处理

处理用户退出的代码跟处理登录的代码都在 login.php 里。

 session_start();

 //注销登录
if($_GET['action'] == "logout"){
unset($_SESSION['userid']);
unset($_SESSION['username']);
echo '注销登录成功!点击此处 <a href="login.html">登录</a>';
exit;
}

该段代码在处理用户登录的代码之前,只允许以 login.php?action=logout 的方式访问,其他方式都认为是检测用户登录。具体逻辑参看附录完整代码。

用户中心

my.php 是用户中心,列在教程里作为用户登录检测参考。

 <?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 />';
?>

提示

  1. 用户注册登录涉及到用户信息与数据库的交互,因此要特别注意用户提交的信息不能为非法信息,本例中注册部分已经使用正则表达式做了限制,对登录部分只简单使用了 htmlspecialchars() 处理,实际应用时可更严格一些。
  2. 本教程只是简单演示用户注册与登录的过程,其代码仅供学习参考,不可直接用于项目生产。
  3. 本教程中对于用户登录成功后采用 session 来管理,也可以采用 cookie 来管理,尤其对于有时限要求的情况。
  4. 为了提高用户体验,用户注册部分可以结合 AJAX 来检测用户输入的信息而不必等点击提交后再检测。

PHP注册与登录【3】 用户登录与退出的更多相关文章

  1. 设置Cookie,登录记住用户登录信息,获取用户登录过得信息

    function setCookie(name,value) { var Days = 30; var exp = new Date(); exp.setTime(exp.getTime() + Da ...

  2. DRF 商城项目 - 用户( 登录, 注册,登出,个人中心 ) 逻辑梳理

    用户登录 自定义用户登录字段处理 用户的登录时通过 手机号也可以进行登录 需要重写登录验证逻辑 from django.contrib.auth.backends import ModelBacken ...

  3. JavaWeb_(request和response)用户登录注册模板_基础版

    用户登录注册模板进阶版 传送门 用户登录注册模板基础版 登录:当用户登录成功时,跳转到personCenter.jsp,当用户登录失败时,跳转到login.jsp并给出提示 注册:当用户注册成功时,跳 ...

  4. java struts2入门学习实例--用户注册和用户登录整合

    需求: 1.用户注册(user_register.jsp)-->注册成功(UserRegister.action)-->显示注册信息(register_success.jsp)2.用户登录 ...

  5. Jsp机试题 (用户登录用户注册/用户注销功能)

    1. 用户登录 实现用户登录,功能,三个页面登录页面login.jsp,登录逻辑处理页面loginSubmit.jsp,欢迎页面welcome.jsp.用户再登录页面输入用户名和密码,前台页面使用js ...

  6. [springboot 开发单体web shop] 5. 用户登录及首页展示

    用户登录及前端展示 用户登录 在之前的文章中我们实现了用户注册和验证功能,接下来我们继续实现它的登录,以及登录成功之后要在页面上显示的信息. 接下来,我们来编写代码. 实现service 在com.l ...

  7. 045 用户登录功能01----JWT和后台代码

    (1)有状态登录概述 有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session. 例如登录:用户登录后,我们把登录者 ...

  8. day09作业01用户登录与验证

    import timeLoginTime = time.asctime( time.localtime(time.time()) )print ("time %s" % Login ...

  9. Linux 命令 - w: 显示登录的用户及其当前执行的任务

    命令格式 w - [husfV] [user] 命令参数 -h 不打印头部信息 -u 当列出当前进程和 CPU 时间时忽略用户名,这主要是用于执行su命令后的情况. -s 使用简短的格式化,不打印 L ...

  10. flutter 制作一个用户登录页面

    flutter 制作一个用户登录页面 用户登录效果图如下: 登录页面如下: import 'package:flutter/material.dart'; import 'package:flutte ...

随机推荐

  1. 【Tomcat】配置Tomcat

    写这篇博文的原因:因为发布Maven项目的时候,始终无法访问.所以顺便重新配置了Tomcat. 1.首先到官网下载一个Tomcat7版本的zip包,解压后,放入C盘(根据个人需求放置). 2.修改co ...

  2. NIO及Reactor模式

    关于Nio Java NIO即Java Non-blocking IO(Java非阻塞I/O),是Jdk1.4之后增加的一套操作I/O工具包,又被叫做Java New IO. Nio要去解决的问题 N ...

  3. myabatis oracle 调用存储过程返回list结果集

    Mapper.xml 配置 <resultMap type="emp" id="empMap"> <id property="emp ...

  4. axure rp8.0 序列号,亲测可以用

    转载自:https://zhidao.baidu.com/question/428326076480233092.html aaa 2GQrt5XHYY7SBK/4b22Gm4Dh8alaR0/0k3 ...

  5. 采用cocos2d-x lua 的listview 实现pageview的翻页效果之上下翻页效果

    --翻页滚动效果local function fnScrollViewScrolling( sender,eventType)    -- body    if eventType == 10 the ...

  6. Mac Pro 8G 安装MyEclipse提示虚拟内存为0 安装失败

    看的一个大神的博客,一句话解决了.哈哈   百度一下很多人都说开多一点程序,让程序占满内存,使其虚拟内存使用就能通过这一步骤,但这里有个更好一点的方案 通过执行: memory_pressure -l ...

  7. mysql深入浅出的笔记(存储过程一)

    1.存储过程和函数....    存储过程和函数是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程和函数可以简化应用开发人员的很多工作,    减少数据在数据库中和应用服务器之间的传说 ...

  8. R语言自动化

    plyr dplyr reshape2(数据整理) boxplot.stats(异常值检测) ggplot2(可视化) knitr(生成报告)

  9. 【转】搞清FastCgi与PHP-fpm之间的关系

    一.问题:网上有的说,fastcgi是一个协议,php-fpm实现了这个协议: 有的说,php-fpm是fastcgi进程的管理器,用来管理fastcgi进程的: 有的说,php-fpm是php内核的 ...

  10. https单向认证和双向认证

    单向认证: .clinet<--server .clinet-->server .client从server处拿到server的证书,通过公司的CA去验证该证书,以确认server是真实的 ...