php下session过期时间的设置方法

 更新时间:2016年11月25日 17:24  点击:1890
如果客户端没有禁用 Cookie,则 Cookie 在启动 Session 会话的时候扮演的是存储 Session ID 和 Session 生存期的角色。我们来手动设置 Session 的生存期:

例子,利用cooikes

 代码如下 复制代码
<?php 
    session_start(); 
    // 保存一天 
    $lifeTime = 24 * 3600; 
    setcookie(session_name(), session_id(), time() + $lifeTime, "/"); 
?>

PHP5 Session还提供了一个函数 session_set_cookie_params(); 来设置PHP5 Session的生存期的,该函数必须在 session_start() 函数调用之前调用:

 代码如下 复制代码

<?php 
    // 保存一天  www.111cn.net
    $lifeTime = 24 * 3600; 
    session_set_cookie_params($lifeTime); 
    session_start(); 
?>

php中还有一个ini_set可以设置session.gc_maxlifetime来设定Session的生存周期。例如:

 代码如下 复制代码

<?php
ini_set('session.gc_maxlifetime', 3600); //设置时间
ini_get('session.gc_maxlifetime');//得到ini中设定值

?>

下面提供一个别人封装好的函数,但是我没有测试过,仅供参考:

 代码如下 复制代码

    <?php
    function start_session($expire = 0)
    {
    if ($expire == 0) {
    $expire = ini_get('session.gc_maxlifetime');
    } else {
    ini_set('session.gc_maxlifetime', $expire);
    }
    
    if (empty($_COOKIE['PHPSESSID'])) {
    session_set_cookie_params($expire);
    session_start();
    } else {
    session_start();
    setcookie('PHPSESSID', session_id(), time() + $expire);
    }
    }
    ?>

使用方法:

加入start_session(600);//600秒以后过期。

 

下面我来给各位朋友总结了几篇关于php如何判断是否为json数据的文章,这里整理了一下也能让你知道如何利用php判断json了,希望例子对你带来帮助。

首先要记住json_encode返回的是字符串, 而json_decode返回的是对象.

判断数据不是JSON格式:

 代码如下 复制代码

function is_not_json($str){
    return is_null(json_decode($str));
}


判断数据是合法的json数据: (PHP版本大于5.3)

 代码如下 复制代码

function is_json($string) {
 json_decode($string);
 return (json_last_error() == JSON_ERROR_NONE);
}

json_last_error()函数返回数据编解码过程中发生的错误.

注意: json编解码所操作字符串必须是UTF8的.

例子

 

 代码如下 复制代码
/**
* 解析json串
* @param type $json_str
* @return type
*/
function analyJson($json_str) {
$json_str = str_replace('\\', '', $json_str);
$out_arr = array();
preg_match('/{.*}/', $json_str, $out_arr);
if (!empty($out_arr)) {
$result = json_decode($out_arr[0], TRUE);
} else {
return FALSE;
}
return $result;
}


如果不是json则返回false

tipask这款系统中虽然功能比较强大但是对于我来讲少了一个热门问题模块了,下面我就整理了一个站长的开发例子与各位分享。

有个网站是用tipask来搭建的问答系统,今天客户要求添加热门问题模块,之前都是用tipask的原生模块,比如说推荐问答、未解决问答等,看来只能自己二次开发了,上网找了下关于tipask的二次开发还真是少……于是简单翻了下tipask的代码,用我的方式增加了热门问题模块。

tipask的主要函数都在model文件夹下,找到系统核心文件base.class.php,里面有这样一个函数fromcache,用于生成函数下各种模块,例如悬赏问题、精彩推荐等,我们要做的就是在这里按照前后代码加上一条我们需要的热门问题模块。

例如在代码

 代码如下 复制代码

case 'notelist'://首页右侧公告列表

前加上我们的模块代码:

 代码如下 复制代码

case 'hotlist'://热门问题

$this->load('hot');//www.111cn.net

$cachedata = $_ENV['hot']->get_list();

break;

这里我是仿照recommend推荐模块,又新建的一个hot.class.php用于上面代码的调用,其实完全可以仿照上面的调用question.class.php文件里的list_by_condition函数,但是通过到question.class.php文件下查看list_by_condition函数只能够加入sql的where判断,而我需要的热门模块只需要改动一下order by,所以我只能新建一个hot.class.php文件自己写数据库调用了。

hot.class.php文件如下:

 代码如下 复制代码

base = $base;

$this->db = $base->db;

}

function get_list($start = 0, $limit = 7) {

$hotlist = array();

$query = $this->db->query("SELECT * FROM " . DB_TABLEPRE . "question ORDER BY views DESC LIMIT $start,$limit");//WWw.111Cn.net

while ($hot = $this->db->fetch_array($query)) {

$hot['category_name'] = $this->base->category[$hot['cid']]['name'];

$hot['format_time'] = tdate($hot['time']);

$hot['category_name'] = $this->base->category[$hot['cid']]['name'];

$hot['url'] = url('question/view/' . $hot['qid'], $hot['url']);

$hot['image'] =$hot['image']?$hot['image']:'css/default/recomend.jpg' ;

$hotlist[] = $hot;

}

return $hotlist;

}

}

?>

好了,tipask关于新建模块的二次开发就结束了,只要仿照这来就行了

 

session是php中一个服务器端超级全局变量而memcache是缓存应用,下面我来把它们整合起来把session存放在memcache中,下面我们一起来看如何实现的吧。

1.首先安装memcached或者memcache软件
参考:wamp 安装 memcache/memcached详细说明
2.安装php_memcache.dll扩展
3.设置session保存在memcached

方法一:

修改php.ini文件

 代码如下 复制代码

session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"

方法二:

程序中动态设置

 代码如下 复制代码

ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://127.0.0.1:11211");

测试程序

1.session.php

 代码如下 复制代码

<?php
ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://127.0.0.1:11211");

session_start();
if (!isset($_SESSION['username'])) {
 $_SESSION['username'] = 'phpff.com';
}

print session_id();//5877fbfcaea379ada0cc0dbba80615a6

?>

2.test.php

 代码如下 复制代码

<?php
// memcache test code
$memcache = new Memcache; //创建一个memcache对象
$memcache->connect('127.0.0.1', 11211) or die ("Could not connect"); //连接Memcached服务器 

print_r($memcache->get('5d3d79d7500f5836033e9019b3eefc6f'));//username|s:9:"phpff.com";

?>

在php中原生态的生成html页面我们会用到三个函数:ob_start()、ob_get_contents()、ob_end_clean()了,然后再把获取的内容给fopen函数生成即可。

例子,利用三个函数:ob_start()、ob_get_contents()、ob_end_clean()函数

知识点:

1、ob_start函数一般主要是用来开启缓存,注意使用ob_start之前不能有任何输出,如空格、字符等。

2、ob_get_contents函数主要用来获取缓存中的内容以字符串形式返回,注意此函数必须在ob_end_clean函数之前调用,否则获取不到缓存内容。

3、ob_end_clean函数主要是清空缓存中的内容并关闭缓存,成功则返回True,失败则返回False

输出控制函数(Output Control)也就是使用和控制缓存来生成静态HTML页面,也会使用到PHP文件读写函数。

PHP生成静态页面实例代码

 代码如下 复制代码

<? 
    ob_start(); 

    echo "<html>". 
    "<head>". 
    "<title>PHP网站静态化教程</title>". 
    "</head>". 
    "<body>欢迎访问PHP网站开发教程网www.111cn.net 本文主要介绍PHP网站页面静态化的方法</body>". 
    "</html>"; 
    
    $out1 = ob_get_contents(); 
    ob_end_clean(); 
    $fp = fopen("leapsoulcn.html","w"); 
    if(!$fp) 
    { 
    echo "System Error"; 
    exit(); 
    } 
    else
    { 
    fwrite($fp,$out1); 
    fclose($fp); 
    echo "Success"; 
    } 
?>

例子,

利用框架模板生成最近比较火的php框架有thinkphp下面我们就以它为例子。

thinkphp提供了一个有效的生成静态页的方法,(在tp2.0的手册上有说明,3.0的手册上没有说明了,不过3.0方法还是存在的。)

 代码如下 复制代码

$this->buildHtml('静态文件', '静态路径','模板文件');


参数一:静态文件,是指生成后的静态文件名,文件保存路径完整的就是:静态路径/静态文件。例如静态文件设置a/index.那么保存的路径就是项 目路径/Html/a/index.html(默认的静态路径在项目路径的Html文件夹下,没有可以自己创建)

参数二:静态路径,上面已经说明了默认的路径,3.0中可以在入口文件里加入参数来更改静态路径。 define('HTML_PATH', './');(将静态路径义为网站根目录)


参数三:模板文件,我感觉官方这个描述是不正确的,准确的来说应该是目标模块,就是需要生成静态文件的模块。格式:模块名:操作。比如要生成Index下的a方法为静态文件,那就是Index:a。如果为空则默认生成当前操作的静态文件。


1 、在入口文件index.php文件中定义生成静态页面的文件位置,然后在个目录新建Html文件夹

 代码如下 复制代码

   define( 'HTML_PATH' , './Html' );//www.111cn.net


2 、在根目录的config文件夹中的config.php配置静态页面的类型,设为 html 

 代码如下 复制代码
 'HTML_FILE_SUFFIX'        = > '.html' , // 默认静态文件后缀


3 、在“Tpl / default / ”目录中新建一个Index的文件夹,文件夹下面新建一个index.html的模板,   模板里面内容为:这是生成静态页例子

4 、控制器IndexAction. class .php中的代码

 代码如下 复制代码

   class IndexAction extends Action{
     public function index(){
       $this - > buildHtml( '名称' ,HTML_PATH. '/' , '模版' , 'utf8' ); //注意:这里的utf8不能写成utf-8
       $this - > display();
    }
  }

解释 :
    这里的buildHtml是thinkphp内置的函数,这里的意思是:
    将index的模板文件生成utf8编码格式的静态网页,该文件名为 1 .html,存在于根目录的htm文件中
    该函数有 5 个参数,具体如下 :
    buildHtml($htmlfile,$htmlpath,$templateFile,$charset,$contentType = 'text/html' )
参数:
    $htmlfile 生成的静态文件名称
    $htmlpath 生成的静态文件路径
    $templateFile 指定要生成静态的模板文件
    $charset 生成静态文件的编码格式

    $contentType 生成静态文件的类型

// 生成静态页

 代码如下 复制代码
class AddhtmlAction extends CommonAction {
    public function index(){
        $this->assign('abc', 'abc222222222');
        $pagename = '123 www.111cn.net';        //页面名称
        $temppath = '';        //显示模版路径
        //查看配置文件是否开启显示静态模版
        if(C('IS_HTML'))
        {
            //判断是否已经生成静态页面
            if(!is_file(HTML_PATH . '/'. $pagename .'html'))
                $this->buildHtml($pagename, HTML_PATH.'/', 'index', 'utf8');//注意:index为动态模版 这里的utf8不能写成utf-8
            $temppath = HTML_PATH . '/'. $pagename .'html';
        }
        $this->display($temppath);
    }
}
[!--infotagslink--]

相关文章

  • PHP session_start()很慢问题分析与解决办法

    本文章来给各位同学介绍一下关于PHP session_start()很慢问题分析与解决办法,希望碰到此问题的同学可进入参考。 最近在做东西的时候发现一个问题 有一个接口挂...2016-11-25
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
  • ps中怎么设置垂直罗马对齐方式?垂直罗马对齐方式设置方法

    photoshop的直排文字工具,打出的字特别是英文字母,默认排列侧向的,如何调整为正向排列呢?下面我们就来看看标准的罗马对齐方式应该怎么设置。 1、在PS中点击“工具面...2017-01-22
  • PHP分布式框架如何使用Memcache同步SESSION教程

    本教程主要讲解PHP项目如何用实现memcache分布式,配置使用memcache存储session数据,以及memcache的SESSION数据如何同步。 至于Memcache的安装配置,我们就不讲了,以前...2016-11-25
  • 详解C#中的session用法

    这篇文章主要介绍了C#中的session用法 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • Python3使用Selenium获取session和token方法详解

    这篇文章主要介绍了Python3使用Selenium获取session和token方法详解,需要的朋友可以参考下...2021-02-17
  • 编程新手必须掌握的:session与cookie的区别

    session和cookie是网站浏览中较为常见的两个概念,也是比较难以辨析的两个概念,但它们在点击流及基于用户浏览行为的网站分析中却相当关键。基于网上一些文章和资料的参阅,及作者个人的应用体会,对这两个概念做一个简单的阐述...2013-09-11
  • PHP中如何使用session实现保存用户登录信息

    session在php中是一个非常重要的东西,像我们用户登录一般都使用到session这个东西,相对于cookie来说session 要安全很多,同时我们购物车经常使用session来做临时的记录保存哦。使用session保存页面登录信息1、数据库连接...2015-10-21
  • Vue使用axios引起的后台session不同操作

    这篇文章主要介绍了Vue使用axios引起的后台session不同操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-14
  • php中session常见问题分析

    PHP的session功能,一直为许多的初学者为难。就连有些老手,有时都被搞得莫名其妙。本文,将这些问题,做一个简单的汇总,以便大家查阅。 1. 错误提示 引用 代...2016-11-25
  • php设置session生存时间详解

    要设置php生存有效时间我们可以利用session_set_cookie_params函数或修改php.ini文件哦,下面小编来介绍一下。 第一种方法:session_set_cookie_params 函数原型 voi...2016-11-25
  • 小米M2手机wifi上网设置方法

    本文章来介绍的是小米手机的无线网络wifi的设置方法,有需要学习wifi网络设置上网的朋友可详细的参考参考。 ==进入小米手机的主界面: ==然后点击wifi快速打开的地...2016-09-20
  • jQuery ajax全局函数处理session过期后的ajax跳转问题

    这篇文章主要介绍了基于jQuery的全局ajax函数处理session过期后的ajax操作的相关资料,需要的朋友可以参考下...2016-06-12
  • jsp使用sessionScope获取session案例详解

    这篇文章主要介绍了jsp使用sessionScope获取session案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...2021-08-29
  • C#实现简单获取及设置Session类

    这篇文章主要介绍了C#实现简单获取及设置Session类,涉及C#针对session的设置及获取的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • asp.net中穿透Session 0 隔离(二)

    上一篇我们已经对Session 0 隔离有了进一步认识,如果在开发过程中确实需要服务与桌面用户进行交互,可以通过远程桌面服务的API 绕过Session 0 的隔离完成交互操作...2021-09-22
  • Node.js刷新session过期时间的实现方法推荐

    下面小编就为大家带来一篇Node.js刷新session过期时间的实现方法推荐。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-05-20
  • PHP session并发及session读写锁分析

    关于PHP session并发及session读写锁问题估计各大程序员都不会想到这个问题,因为一般情况我们不会使用session来做并发操作了,但有时也有可能用到,下面整理一个session并...2016-11-25
  • Nodejs中session的简单使用及通过session实现身份验证的方法

    session的本质使用cookie来实现。本文给大家介绍Nodejs中session的简单使用及通过session实现身份验证的方法,对node.js session相关知识感兴趣的朋友一起学习吧...2016-02-09
  • PHP中对Session和Cookie的使用例子

    Session和Cookie的使用在php中非常常见的了,我们通常用于登录双验证了,下文小编为各位介绍利用Session和Cookie来做一些像用户登录验证、记录用户浏览历史,存储购物车数...2016-11-25