我使用CGI在Perl中创建Web应用程序.此应用程序实现模型视图控制器体系结构,并且系统在根目录中具有以下结构:

-楷模

-views

-controllers

-index.pl

文件index.pl仅根据发送给它的某些参数包含相应的视图(使用函数param()):

这是我的index.pl:

###############################################

# INDEX.PL

###############################################

#!/usr/bin/perl

use Switch;

use CGI qw/:standard/;

use strict;

use CGI::Session ( '-ip_match' );

my $session = CGI::Session->load();

print header, start_html;

print "

Menu";

if(!$session->is_empty){

#links to other files to which only logged users have access;

}

print '

Login';

if(defined(param('p'))){

switch(param('p')){ }

##login form in html, which sends param('login') back to index.pl

case 'login' { require('views/login/login.pl'); }

else{ print "Page not found"; }

}

if(defined( param('login'))){

##if param is defined we execute login2.pl

require ('views/login/login2.pl');

}

正如您可以看到访问链接登录是否会显示登录表单,然后在提交电子邮件和密码后的登录表单中,login2.pl文件应该加载:

login2.pl

###############################################

LOGIN2.PL

###############################################

#!/usr/bin/perl

use CGI qw/:standard/;

use lib qw(../../);

use controllers::UserController;

use CGI::Session ( '-ip_match' );

my $session;

my $mail = param('mail');

my $password = param('password');

my $userc = new UserController();

my $user = $userc->findOneByMail($mail);

if($mail ne '')

{

if($mail eq $user->getEmail() and $password eq $user->getPassword())

{

$session = new CGI::Session();

$session->header(-location=>'index.exe');

}

else

{

print header(-type=>"text/html",-location=>"index.exe?p=login");

}

}

elsif(param('action') eq 'logout')

{

$session = CGI::Session->load() or die CGI::Session->errstr;

$session->delete();

print $session->header(-location=>'index.exe');

}

login2.pl文件正确执行,当邮件和密码正确时,它应该创建一个新会话.但是,我不知道变量$session是否正确发送到index.pl,因为索引始终只显示不需要活动会话的链接.

我遇到的另一个问题是我无法删除会话.我尝试在index.pl文件中创建一个变量$session,只是为了查看条件是否有效,然后我猜想用以下命令将其删除:

$会话而>删除();

$会话而>冲洗();

但会议似乎仍然存在.

perl cgi session php,如何使用Perl中的CGI :: Session处理Web会话?相关推荐

  1. PHP中启动session的函数是,PHP中,启动 session 的函数是

    PHP中,启动 session 的函数是 答:session_start() 隧道长度在300m以下可不布置大避车洞 答:√ 为了使长链脂酰基从胞浆转运到线粒体内进行脂酸的β-氧化,所需要的载体为 答 ...

  2. python中session的使用方法_python中requests库session对象的妙用详解

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  3. php session和cookie的区别,细说cookie和session的区别

    做网站开发有一段时间了,而自己却发现对于cookie和session的基础理解存在不足,因此花了2天时间好好学习了一下cookie和session的特性,给大家分享一下 1. 为什么需要cookie和 ...

  4. php中perl配置,配置Apache及运行perl,php

    //检测配置文件语法 # httpd –t # apachectl configtest //查看编译配置参数 # apachectl –V //查看已经编译的模块 # apachectl –l // ...

  5. [Perl系列—] 1. 清空目录及目录中的所有文件

    Perl 删除单个文件和目录 Perl 删除单个文件的语法是: unlink 举例来说, 删除 D 盘 temp 目录下的 test.txt 的写法就是: unlink "D:/temp/t ...

  6. 在apache中运行 cgi程序

    cgi 就是网站中各种后台的程序,该程序可以通过网页运行,cgi可以通过C编写,也可以通过shell,python编写 如何在apache中运行各种cgi程序,例如shell perl等程序 1.在a ...

  7. Go中的CGI包使用

    Go中包含有CGI包,net/http/cgi,这篇文章就是来阅读和使用这个包.关于cgi的参数和运行,可以看这篇文章:CGI的一些知识点 CGI包阅读 cgi包的存在就告诉我们一件事情,cgi服务端 ...

  8. web存储中cookie、session区别

    http协议是一种无状态的协议,浏览器对服务器的每一次请求都是独立的.为了使得web能够产生一些动态信息,就需要保存"状态",而cookie和session机制就是为了解决http ...

  9. php中的数据库操作和字符串操作session与cookie操作,php中的数据库操作和字符串操作session与cookie操作...

    PHP面试干货 1.进程和线程 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性.进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一 ...

  10. perl环境配置以及Eclipse安装perl开发插件

    简介: 这篇文章将详细介绍 EPIC 组件的安装,EPIC 编辑环境,调试运行环境,着重介绍如何使用 EPIC 来快速.简便.准确地调试 Perl 语言程序,包括对于 Perl 程序的单步执行,断点用 ...

最新文章

  1. 【机器学习】KNN算法代码练习
  2. 【学术相关】IEEE TBD, 这个Trans刚被SCI收录,预计首个IF4
  3. 四年级计算机期末质量分析,信息技术四年级(下)质量分析——刘千慧
  4. 21天让你成为Horizon View高手—Day20:证书管理
  5. pomelo获取客户端IP
  6. TiledMap的使用
  7. 高中计算机学业水平测试知识点总结,高中生物学业水平测试知识点总结
  8. 解决雷神笔记本风扇声音太响太吵问题
  9. Pale Transformer: A General Vision Transformer Backbone with Pale-Shaped Attention
  10. PESSIMISTIC_READ PESSIMISTIC_WRITE 与 共享锁 排它锁
  11. 【JVM技术专题】深入分析CG管理和原理查缺补漏「番外篇」
  12. 滚轮每次滚动距离是一致的吗_「超硬核科普」鼠标的发展历史,中国人发明的鼠标滚轮...
  13. 甲级测绘资质审批常见问题-甲级测绘资质如何办理?
  14. 证明求最短路径问题具有最优子结构(动态规划)
  15. linux下制作linux系统的安装U盘
  16. android获取各运营商信号,一篇关于 Android 获取运营商的全面笔记
  17. K3root刷217,rk3128刷机工具
  18. 【字体分享】各种角度都不一样?带你走进意瞑字的世界
  19. Android RxJava操作符的学习---条件 / 布尔操作符
  20. JAVA中的方法重载(Overloading)和方法重写(Overriding)

热门文章

  1. 用a卡还是n卡_谁是玩家最爱的显卡?N卡优势太大,GTX 1060秒A卡全家
  2. ajax传递json对象 php,PHP传递通过AJAX传递JSON对象数组到前台,前台解析,遍历JSON...
  3. mysql5.7 存储二进制_MySQL5.7 基于二进制包的安装
  4. 标准C字符和字符串函数
  5. 三年级能用计算机吗,三年级上册第6课:我用计算机写作文
  6. [译] 手摸手教你如何轻松发布私有 App
  7. MySQL8.0二进制免编译部署过程详解(二)
  8. 笔者使用macOS的一些经验点滴记录1
  9. Oracle 12C R2-新特性-PDB的磁盘I/O(IOPS,MBPS)资源管理
  10. kafka producer写入超时