关于用户禁用Cookie的解决办法和Session的图片验证码应用
当用户通过客户端浏览页面初始化了Session之后(如:添加购物车,用户登陆等),服务器会将这些session数据保存在:Windows保存在C:\WINDOWS\Temp的目录下,Linux则是保存在/tmp 或 /var/lib/php/session目录下,之后给客户端返回一个Set-Cookie的参数(该参数表示在服务器端创建的Session_ID,可在http协议中看到),当该服务器的其他web端需要Session数据时则客户端会向服务器发送这个Session_ID,服务器就可以从Session文件中查找并调用;
如果当用户在客户端禁用Cookie之后,如何实现Session共享多个页面;URL重写则可以解决;
可以使用PHP提供的一个常量SID;这个常量可以获取到当前客户端在服务器所创建的Session文件的session_ID(文件名);使用方法;
第一种方法,在超链接,action,header可以直接拼接将ID传递给需要session数据的页面,同时需要在页面写判定当读取到SID存在时则使用当前SID,若无则在服务器重新session_start()一个新的Session文件;
if(isset($_GET[ ' SID ' ])){
session_id($GET_[ ' sid ' ];
}
session_start();
第二种方法,可以在php.ini文件中找到session.use_trans_sid = 1 ;来指定是否启用透明SID,启用之后在超链接,action,header,会自动将SID传递,设置完成重启apache生效;
使用Session验证码技术;
要想使用Session的验证码技术,首先要启用PHP自带的绘图库,应该在php.ini文件目录下启用 extension=php_gd2.dll ,重启apache生效;
首先在需要验证码的界面加上输入文本框和图片,图片会请求checkCode页面随机生成一个验证码,并且写上点击随机更换的代码;

其次在checkCode页面生成4个随机数并组合成字符串,通过PHP的绘图技术随机添加背景色干扰线以及随机生成的字符串,最后生成图片返回给客户端页面,并将生成的四位随机数保存在Session中;

当输入验证码进行验证时,在验证页面写一个判断语句,判断文本框输入的值是否不等于$_Session[ " mycheckCode " ];
这只是一个简单的案例,如今的验证码技术也是各有千秋,破解验证码的技术也平分秋色,验证码也就是阻挠一小拨别有用心的人;
关于用户禁用Cookie的解决办法和Session的图片验证码应用的更多相关文章
- php开发面试题---禁用cookie之后,如何使用session
php开发面试题---禁用cookie之后,如何使用session 一.总结 一句话总结: 在每个url后面自动加上PHPSESSID的值即可,用户禁止cookie后,服务器仍会将sessionId以 ...
- 浏览器禁用cookie后php如何保持session会话-use_trans_sid机制
原文:浏览器禁用cookie后php如何保持session会话-use_trans_sid机制 为防止浏览器禁用cookie导致服务器会话无法保持,php开发了一个机制,该机制开启后,浏览器发起请求后 ...
- PHP--浏览器禁用cookie后,怎么使用session
sessionid是存储在cookie中的,解决方案如下: Session URL重写,保证在客户端禁用或不支持COOKIE时,仍然可以使用Session session机制.session机制是一种 ...
- session机制,浏览器禁用cookie后,怎么使用session
sessionid是存储在cookie中的,解决方案如下: Session URL重写,保证在客户端禁用或不支持COOKIE时,仍然可以使用Session session机制.session机制是一种 ...
- Windows200864位操作系统下的SQLPLUS.EXE 无法找到入口解决办法和Oracle环境变量的设置
本机环境:Windows2008 64位中文版操作系统+Oracle11G+安装了Oracle32位和64位客户端驱动 问题起源:Path环境变量被360安全卫士优化修复后,整个给清空了,hosts文 ...
- 【Android】eclipse打不开的解决办法和“Jar mismatch! Fix your dependencies”的解决
JDK1.7能用,cmd下输入java,javac,java -version,javaw配置和环境都没问题的话,有可能是工作空间的问题,就是一般在D盘下的workspace..那个文件夹,删除了,再 ...
- CentOS 7出现Failed to start firewalld.service: Unit is masked的解决办法和firewalld 防火墙开关
说明:刚刚使用systemctl start firewalld命令开启防火墙的时候,却开不成功,出现Failed to start firewalld.service: Unit is masked ...
- Java Web 禁用Cookie对Session的影响
如果客户端禁用了Cookie,那么服务端就不能得到Session了.因为通过Session ID来确定当前会话对应的服务端Session,而Session ID通过Cookie来传递,所以禁用Cook ...
- php在客户端禁用cookie时让session不失效的解决方法
cookie固然好,不过有些客户端浏览器会禁用cookie,这就会导致你所依赖cookies的程序会失效或出错,那么若真出现用户关闭cookies的情况,PHP应该如何再次使用session?方法还是 ...
随机推荐
- c#动态类型Dynamic
需引用System.Dynamic命名空间 来源:http://www.cnblogs.com/ryanding/archive/2010/12/09/1900106.html dynamic Cus ...
- linux下怎么退出telnet
在运维过程中,常常会telnet某个ip端口,如果 能telnet通,怎么退出呢 ? 1.telnet 63.172.25.18 6463 回车 Trying 63.172.25.18... Conn ...
- 6.2 C# 2:利用 yield 语句简化迭代器
class Program { static void Main(string[] args) { object[] values = new object[] { "a", &q ...
- 分别用for循环,while do-while以及递归方法实现n的阶乘!
分别用for循环,while do-while以及递归方法实现n的阶乘! 源码: package book;import java.util.Scanner;public class Access { ...
- 关于swift 底部工具栏图标锯齿模糊问题。
今天在底部工具栏添加图片时发现图片模糊而且有锯齿,开始一直以为是美工给的图片有问题,后来发现是要设置两种图片: 比如 index.png(默认30 * 30),indexSelected(选中后的图 ...
- tree:以树形结构显示目录下的内容
tree命令 1.命令详解 [功能说明] tree命令的中文意思为“树”,功能是以树形结构列出指定目录下的所有内容包括所有文件.子目录及子目录里的目录和文件. [语法格式] tree [option] ...
- 36.分页及deep paging
主要知识点 1.es分页 2.deep paging 一.es分页语法 size,from 这两个关键字 GET /_search?size=10 指定每页10条数据 GET /_search ...
- vue中访问数据接口的配置
业务API接口地址: http://localhost:3816/api/ 前端UI浏览地址:http://127.0.0.1:8080/#/home 由于同源策略的问题: 需要配置代理: 在开发环境 ...
- 10.Spring注解+MyBatis+Servlet
1.创建sql脚本 create table account ( id ) unsigned not null auto_increment primary key, account_number ) ...
- (30)导入时如何定制spring-boot依赖项的版本【转载】【从零开始学Spring Boot】
此文章转载地址:http://www.tuicool.com/articles/RJJvMj3 请注重作者的版权. spring-boot通过maven的依赖管理为我们写好了很多依赖项及其版本,我们可 ...