关于iis session详解

 更新时间:2016年11月25日 16:26  点击:1861
session基本操作
添加 修改 session项
session.add("test", datetime.now);
session["test"] = datetime.now;
添加和修改session的方法是一样的,当指定的session标识不存在时,系统会添加。当存在时系统会更新。
删除 session项
session.remove("test");
不要使用session["test"] = null; 这样只是将值设置为null!
移除所有session项
session.clear(); 或 session.removeall();
终止当前会话状态
session.abandon();
当前session项数量
session.count
当前sessionid
session.sessionid
session何时创建
所有浏览器(ie、chrome、firefox)当第一次打开浏览器时(当前未运行浏览器时),服务器端会创建新的session。
ie浏览器,当已有浏览器运行时,打开新的浏览器则会创建新的session。
而chrome、firefox当已有浏览器运行时,打开新的浏览器不会创建新的session。
当session过期后,继续访问时会创建session。当session创建时会触发 global.asax 中的session_start方法。
session何时过期
  • 代码 session.abandon(); 引起session过期。
  • session超时,自动过期。
  • web.config 被修改,将会过期。
  • iis的应用程序池被回收引起。
当session过期时会触发 global.asax 中的session_end方法。
奇怪的问题:
 session.abandon(); 和 session超时自动过期的效果是一样的。引起的过期后,当刷新页面时会执行session_start 和 session_end方法。
如何避免在session_start 中添加session["sessionstartdatetime"] = datetime.now;
在调用session.abandon();后执行response.cookies.add(new httpcookie("asp教程.net_sessionid", ""));让sessionid重置。
session过期时间
在web.config中设置 <sessionstate mode="inproc" timeout="20"></sessionstate> 分钟值。(未填写时默认是20分钟过期)
iis的会话超时设置并不起效。(设置位置如下图)
网站关联的应用程序池,的回收时间限制。经测试也不起效。但如果手动回收或设置定时回收则起效。
(如何关联网站应用程序池如下图)
如何防止session过期
可以设置较长的session过期时间。但如果设置过长可能会引起服务器负担过重。
将session模式设置为进程外或数据库教程中。在此就不做讨论。
一般实际情况可能是,用户在某些页面,如博客文章提交页,在编辑过程因为要很长时间。
可能在提交时发现session过期了。而导致用户信息丢失无法提交文章。
如果是这种情况,可能只想将指定页面的session时间延长。可以通过ajax定时访问后台的一空白页面。来保持session在线。
<script type="text/网页特效">
    function updatesession(){
        $.get('/ajax/updatesession.aspx');
    }
    window.setinterval(updatesession, 60000);
</script>
建立一个空页面updatesession.aspx
注意在page_load中添加 注意当ajax请求aspx页面时,aspx页面应设置为不允许缓存!
protected void page_load(object sender, eventargs e)
{
    response.appendheader("pragma", "no-cache");
    response.appendheader("cache-control", "no-cache, must-revalidate");
    response.appendheader("expires", "0");
}
关于sessionid
当session过期后,sessionid并未改变。
调用 response.cookies.add(new httpcookie("asp.net教程_sessionid", "")); 可设置sessionid
当设置为空时,服务器端会创建新的session。而老的session并未被释放。
当设置为其他已有的sessionid值时,此时的session将获取的是指定的session。这就是session劫持了。
如何统计当前网站session个数。
创建类
view sourceprint?
public class constants
{
    /// <summary>
    /// 当前session个数
    /// </summary>
    public static int sessioncount = 0;
  
    /// <summary>
    /// 累计session个数
    /// </summary>
    public static int sessionallcount = 0;
}
 
在global.asax中添加
view sourceprint?
void session_start(object sender, eventargs e)
{
    constants.sessionallcount++;
    constants.sessioncount++;
    session["sessionstartdatetime"] = datetime.now;
}
  
void session_end(object sender, eventargs e)
{
    constants.sessioncount--;
}
 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh_cn" lang="zh_cn">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>php教程 多文件上传组件</title>
</head>
<body bgcolor="#ffffff" style="text-align:center;">
  <!--影片中使用的 url-->
  <!--影片中使用的文本-->
  <!-- saved from url=(0013)about:internet -->
  <script language="网页特效">
function challs_flash_update(){ //flash 初始化函数
 var a={};
 //定义变量为object 类型

 a.title = "上传文件"; //设置组件头部名称
 
 a.formname = "filedata";
 //设置form表单的文本域的name属性
 
 a.url="update.php";
 //设置服务器接收代码文件
 
 a.parameter="bs=tyi&id=50";
 //设置提交参数,以get形式提交
 
 a.typefile=["images (*.gif,*.png,*.jpg,*jpeg)","*.gif;*.png;*.jpg;*.jpeg;","gif (*.gif)","*.gif;","png (*.png)","*.png;","jpeg (*.jpg,*.jpeg)","*.jpg;*.jpeg;"];
 //设置可以上传文件 数组类型
 //"images (*.gif,*.png,*.jpg)"为用户选择要上载的文件时可以看到的描述字符串,
 //"*.gif;*.png;*.jpg"为文件扩展名列表,其中列出用户选择要上载的文件时可以看到的 windows 文件格式,以分号相隔
 //2个为一组,可以设置多组文件类型
 
 a.ups教程ize=0;
 //可限制传输文件总容量,0或负数为不限制,单位mb
 
 a.filenum=0;
 //可限制待传文件的数量,0或负数为不限制
 
 a.size=1;
 //上传单个文件限制大小,单位mb,可以填写小数类型
 
 a.formid=['select','select2'];
 //设置每次上传时将注册了id的表单数据以post形式发送到服务器
 //需要设置的form表单中checkbox,text,textarea,radio,select项目的id值,radio组只需要一个设置id即可
 //参数为数组类型,注意使用此参数必须有 challs_flash_formdata() 函数支持
 
 a.autoclose=1;
 //上传完成条目,将自动删除已完成的条目,值为延迟时间,以秒为单位,当值为 -1 时不会自动关闭,注意:当参数completeclose为false时无效
 
 a.completeclose=true;
 //设置为true时,上传完成的条目,将也可以取消删除条目,这样参数 upsize 将失效, 默认为false
 
 a.repeatfile=true;
 //设置为true时,可以过滤用户已经选择的重复文件,否则可以让用户多次选择上传同一个文件,默认为false
 
 a.returnserver=true;
 //设置为true时,组件必须等到服务器有反馈值了才会进行下一个步骤,否则不会等待服务器返回值,直接进行下一步骤,默认为false
 
 a.md5file = 1;
 //设置md5文件签名模式,参数如下 ,注意:flash无法计算超过100m的文件,在无特殊需要时,请设置为0
 //0为关闭md5计算签名
 //1为直接计算md5签名后上传
 //2为计算签名,将签名提交服务器验证,在根据服务器反馈来执行上传或不上传
 //3为先提交文件基本信息,根据服务器反馈,执行md5签名计算或直接上传,如果是要进行md5计算,计算后,提交计算结果,在根据服务器反馈,来执行是否上传或不上传
 
 a.loadfileorder=true;
 //选择的文件加载文件列表顺序,true = 正序加载,false = 倒序加载
 
 a.mixfilenum=0;
 //至少选择的文件数量,设置这个将限制文件列表最少正常数量(包括等待上传和已经上传)为设置的数量,才能点击上传,0为不限制
 
 a.listshowtype = 1;
 //文件列表显示类型:1 = 传统列表显示,2 = 缩略图列表显示(适用于图片专用上传)
 
 a.infodownright = "等待上传:%1%个  已上传:%2%个";
 //右下角统计信息的文本设置,文本中的 %1% = 等待上传数量的替换符号,%2% = 已经上传数量的替换符号
 
 return a ;
 //返回object
}

function challs_flash_oncomplete(a){ //每次上传完成调用的函数,并传入一个object类型变量,包括刚上传文件的大小,名称,上传所用时间,文件类型
 var name=a.filename; //获取上传文件名
 var size=a.filesize; //获取上传文件大小,单位字节
 var time=a.updatetime; //获取上传所用时间 单位毫秒
 var type=a.filetype; //获取文件类型,在 windows 上,此属性是文件扩展名。 在 macintosh 上,此属性是由四个字符组成的文件类型
 document.getelementbyid('show').innerhtml+=name+' --- '+size+'字节 ----文件类型:'+type+'--- 用时 '+(time/1000)+'秒<br><br>'
}

function challs_flash_oncompletedata(a){ //获取服务器反馈信息事件
 document.getelementbyid('show').innerhtml+='<font color="#ff0000">服务器端反馈信息:</font><br />'+a+'<br />'; 
}
function challs_flash_onstart(a){ //开始一个新的文件上传时事件,并传入一个object类型变量,包括刚上传文件的大小,名称,类型
 var name=a.filename; //获取上传文件名
 var size=a.filesize; //获取上传文件大小,单位字节
 var type=a.filetype; //获取文件类型,在 windows 上,此属性是文件扩展名。 在 macintosh 上,此属性是由四个字符组成的文件类型
 document.getelementbyid('show').innerhtml+=name+'开始上传!<br />';
 
 return true; //返回 false 时,组件将会停止上传
}

function challs_flash_oncompleteall(a){ //上传文件列表全部上传完毕事件,参数 a 数值类型,返回上传失败的数量
 document.getelementbyid('show').innerhtml+='<font color="#ff0000">所有文件上传完毕,</font>上传失败'+a+'个!<br />';
 //window.location.href='http://www.access2008.cn/update'; //传输完成后,跳转页面
}

function challs_flash_onerror(a){ //上传文件发生错误事件,并传入一个object类型变量,包括错误文件的大小,名称,类型
 var err=a.texterr; //错误信息
 var name=a.filename; //获取上传文件名
 var size=a.filesize; //获取上传文件大小,单位字节
 var type=a.filetype; //获取文件类型,在 windows 上,此属性是文件扩展名。 在 macintosh 上,此属性是由四个字符组成的文件类型
 document.getelementbyid('show').innerhtml+='<font color="#ff0000">'+name+' - '+err+'</font><br />';
}

function challs_flash_formdata(a){ // 使用formid参数时必要函数
 try{
  var value = '';
  var id=document.getelementbyid(a);
  if(id.type == 'radio'){
   var name = document.getelementsbyname(id.name);
   for(var i = 0;i<name.length;i++){
    if(name[i].checked){
     value = name[i].value;
    }
   }
  }else if(id.type == 'checkbox'){
   if(id.checked){
    value = id.value;
   }
  }else{
   value = id.value;
  }
  return value;
  }catch(e){
  return '';
  }
}

function challs_flash_style(){ //组件颜色样式设置函数
 var a = {};
 
 /*  整体背景颜色样式 */
 a.backgroundcolor=['#f6f6f6','#f3f8fd','#dbe5f1']; //颜色设置,3个颜色之间过度
 a.backgroundlinecolor='#5576b8';     //组件外边框线颜色
 a.backgroundfontcolor='#066ad1';     //组件最下面的文字颜色
 a.backgroundinsidecolor='#ffffff';     //组件内框背景颜色
 a.backgroundinsidelinecolor=['#e5edf5','#34629e']; //组件内框线颜色,2个颜色之间过度
 a.upbackgroundcolor='#ffffff';      //上翻按钮背景颜色设置
 a.upoutcolor='#000000';        //上翻按钮箭头鼠标离开时颜色设置
 a.upovercolor='#ff0000';       //上翻按钮箭头鼠标移动上去颜色设置
 a.downbackgroundcolor='#ffffff';     //下翻按钮背景颜色设置
 a.downoutcolor='#000000';       //下翻按钮箭头鼠标离开时颜色设置
 a.downovercolor='#ff0000';       //下翻按钮箭头鼠标移动上去时颜色设置
 
 /*  头部颜色样式 */
 a.top_backgroundcolor=['#e0eaf4','#bcd1ea'];   //颜色设置,数组类型,2个颜色之间过度
 a.top_fontcolor='#245891';       //头部文字颜色
 
 
 /*  按钮颜色样式 */
 a.button_overcolor=['#fbdab5','#f3840d'];   //鼠标移上去时的背景颜色,2个颜色之间过度
 a.button_overlinecolor='#e77702';     //鼠标移上去时的边框颜色
 a.button_overfontcolor='#ffffff';     //鼠标移上去时的文字颜色
 a.button_outcolor=['#ffffff','#dde8fe'];    //鼠标离开时的背景颜色,2个颜色之间过度
 a.button_outlinecolor='#91bdef';     //鼠标离开时的边框颜色
 a.button_outfontcolor='#245891';     //鼠标离开时的文字颜色
 
 /* 文件列表样式 */
 a.list_backgroundcolor='#eaf0f8';     //列表背景色
 a.list_fontcolor='#333333';       //列表文字颜色
 a.list_linecolor='#b3cdf1';       //列表分割线颜色
 a.list_canceloverfontcolor='#ff0000';    //列表取消文字移上去时颜色
 a.list_canceloutfontcolor='#d76500';    //列表取消文字离开时颜色
 a.list_progressbarlinecolor='#b3cdf1';    //进度条边框线颜色
 a.list_progressbarbackgroundcolor='#d8e6f7';  //进度条背景颜色 
 a.list_progressbarcolor=['#ffcc00','#ffff00'];  //进度条进度颜色,2个颜色之间过度
 
 /* 错误提示框样式 */
 a.err_backgroundcolor='#c0d3eb';     //提示框背景色
 a.err_linecolor='#5d7cbb';       //提示框边框线景色
 a.err_cancelovercolor='#0066cc';     //提示框取消按钮移上去时颜色
 a.err_canceloutcolor='#ff0000';      //提示框取消按钮离开时颜色
 a.err_fontcolor='#245891';       //提示框文字颜色
 
 
 return a;
}


var ismsie = (navigator.appname == "microsoft internet explorer");  
function thismovie(moviename){  
  if(ismsie){  
   return window[moviename];  
  }else{
   return document[moviename];  
  }  
}
</script>
  <p><a href="temp2.html">缩略图模式</a></p>
这个选择框的数据将以post形式和图片一起传送到服务器
  <select id="select">
    <option value="老虎">老虎</option>
    <option value="兔子">兔子</option>
    <option value="骏马">骏马</option>
    </select>
    <select id="select2">
      <option value="石头">石头</option>
      <option value="剪子">剪子</option>
      <option value="布">布</option>
      </select>
    <br>
    <br>
  改变窗口:高
<label>
      :
      <input name="gao" type="text" id="gao" value="320" size="5">
      宽:
      </label>
      <label>
      <input name="kuan" type="text" id="kuan" value="408" size="5"> 
      </label>
      <label>
      <input type="submit" name="button" id="button" value=" 修 改 " onclick="thismovie('update').width=document.getelementbyid('kuan').value;thismovie('update').height=document.getelementbyid('gao').value;">
      </label>
      <br>
<br>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="408" height="320" id="update" align="middle">
<param name="allowfullscreen" value="false" />
    <param name="allowscriptaccess" value="always" />
 <param name="movie" value="update.swf" />
    <param name="quality" value="high" />
    <param name="bgcolor" value="#ffffff" />
    <embed src="update.swf" quality="high" bgcolor="#ffffff" width="408" height="320" name="update" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
 </object>
<div id="show" style="margin-top:20px; width:500px; text-align:left;"></div>
</body>
</html>

php处理文件

<?php
// 注意:使用组件上传,不可以使用 $_files["filedata"]["type"] 来判断文件类型
mb_http_input("utf-8");
mb_http_output("utf-8");

//---------------------------------------------------------------------------------------------
//组件设置a.md5file为2,3时 的实例代码

if(getget('access2008_cmd')=='2'){ // 提交md5验证后的文件信息进行验证
 //getget("access2008_file_name")  '文件名
 //getget("access2008_file_size") '文件大小,单位字节
 //getget("access2008_file_type") '文件类型 例如.gif .png
 //getget("access2008_file_md5")  '文件的md5签名
 
 die('0'); //返回命令  0 = 开始上传文件, 2 = 不上传文件,前台直接显示上传完成
}
if(getget('access2008_cmd')=='3'){ //提交文件信息进行验证
 //getget("access2008_file_name")  '文件名
 //getget("access2008_file_size") '文件大小,单位字节
 //getget("access2008_file_type") '文件类型 例如.gif .png
 
 die('1'); //返回命令 0 = 开始上传文件,1 = 提交md5验证后的文件信息进行验证, 2 = 不上传文件,前台直接显示上传完成
}
//---------------------------------------------------------------------------------------------

$type=filekzm($_files["filedata"]["name"]);
if ((($type == ".gif")
|| ($type == ".png")
|| ($type == ".jpeg")
|| ($type == ".jpg")
|| ($type == ".bmp"))
&& ($_files["filedata"]["size"] < 200000))
  {
  if ($_files["filedata"]["error"] > 0)
    {
    echo "返回错误: " . $_files["filedata"]["error"] . "<br />";
    }
  else
    {
    echo "上传的文件: " . $_files["filedata"]["name"] . "<br />";
    echo "文件类型: " . $type . "<br />";
    echo "文件大小: " . ($_files["filedata"]["size"] / 1024) . " kb<br />";
    echo "临时文件: " . $_files["filedata"]["tmp_name"] . "<br />";

    if (file_exists( $_files["filedata"]["name"]))
      {
      echo $_files["filedata"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_files["filedata"]["tmp_name"],
      './'.$_files["filedata"]["name"]);
      echo "stored in: " . $_files["filedata"]["name"]."<br />";
   echo "md5效验:".getget("access2008_file_md5")."<br />";
   echo "<br />上传成功!你选择的是<font color='#ff0000'>".getpost("select")."</font>--<font color='#0000ff'>".getpost("select2")."</font>";
      }
    }
  }
else
  {
  echo "上传失败,请检查文件类型和文件大小是否符合标准<br />文件类型:".$type.'<br />文件大小:'.($_files["filedata"]["size"] / 1024) . " kb";
  }
 
function filekzm($a)
{
 $c=strrchr($a,'.');
 if($c)
 {
  return $c;
 }else{
  return '';
 }
}

function getget($v)// 获取get
{
  if(isset($_get[$v]))
  {
  return $_get[$v];
  }else{
  return '';
  }
}

function getpost($v)// 获取post
{
  if(isset($_post[$v]))
  {
   return $_post[$v];
  }else{
   return '';
  }
}
?>

源码包下载
http://down.111cn.net/php/2011/0311/22880.html

简介:

memcached是一个高性能的、分布式内存对象缓存系统。通常被用于降低数据库教程加载压力以提高动态web应用的响应速度。

此扩展使用了libmemcached库提供的api与memcached服务端进行交互。它同样提供了一个session处理器(memcached)。 它同时提供了一个session处理器


关于libmemcached的更多信息可以在http://libmemcached.org/libmemcached.html查看。

memcache 需求:

这个扩展需要libmemcached客户端库。

memcache 安装:

安装此 pecl 扩展相关的信息可在手册中标题为 pecl 扩展的安装 章节中找到。另外的信息,如新的发行版本、下载、源文件、 additional information such as new releases,维护人员信息及变更日志等,都在此处:http://pecl.php教程.net/package/memcached.

如果libmemcached被安装在一个非标准路径,使用--with-libmemcached-dir=dir 来指定路径,dir就是libmemcached安装时的prefix参数。这个路径需要包含文件include/libmemcached/memcached.h。

如果要支持压缩就需要zlib。对于非标准安装的zlib库,使用--with-zlib-dir=dir 来指定zlib安装路径,dir就是zib安装时的prefix参数。

session处理器的支持默认是开启的。如果要关闭它,使用选项--disable-memcached-session 。

预定义常量:

下列常量由此扩展定义,且仅在此扩展编译入 php 或在运行时动态载入时可用。

memcached::opt_compression
开启或关闭压缩功能。当开启的时候,item的值超过某个阈值(当前是100bytes)时,会首先对值进行压缩然后存储,并 在获取该值时进行解压缩然后返回,使得压缩对应用层透明。

类型: boolean, 默认: true.

memcached::opt_serializer
指定对于非标量值进行序列化的序列化工具。可用的值有memcached::serializer_php 和memcached::serializer_igbinary。后者仅在memcached配置时开启 --enable-memcached-igbinary选项并且 igbinary扩展被加载时才有效。

类型: integer, 默认: memcached::serializer_php.

memcached::serializer_php
默认的php序列化工具(即serialize方法)。

<?php教程
include("core/ini.php");
initializer::initialize();
$router = loader::load("router");
dispatcher::dispatch($router);

这个文件就只有4句,我们现在一句句来分析。
include(”core/ini.php”);

我们来看core/ini.php

<?php
set_include_path(get_include_path() . path_separator . "core/main");
//set_include_path — sets the include_path configuration option
function __autoload($object){
require_once("{$object}.php");
}

这个文件首先设置了include_path,也就是我们如果要找包含的文件,告诉系统在这个目录下查找。其实我们定义__autoload()方法,这个方法是在php5增加的,就是当我们实例化一个函数的时候,如果本文件没有,就会自动去加载文件。官方的解释是:
接下来我们看下面一句
initializer::initialize();
这就话就是调用initializer类的一个静态函数initialize,因为我们在ini.php,设置了include_path,以及定义了__autoload,所以程序会自动在core/main目录查找initializer.php.
initializer.php文件如下:

<?php
class initializer
{
public static function initialize() {
set_include_path(get_include_path().path_separator . "core/main");
set_include_path(get_include_path().path_separator . "core/main/cache");
set_include_path(get_include_path().path_separator . "core/helpers");
set_include_path(get_include_path().path_separator . "core/libraries");
set_include_path(get_include_path().path_separator . "app/controllers");
set_include_path(get_include_path().path_separator."app/models");
set_include_path(get_include_path().path_separator."app/views");
//include_once("core/config/config.php");
}
}
?>

这个函数很简单,就只定义了一个静态函数,initialize函数,这个函数就是设置include_path,这样,以后如果包含文件,或者__autoload,就会去这些目录下查找。

ok,我们继续,看第三句

$router = loader::load(”router”);

html表单上传代码


<form enctype="multipart/form-data" action="upload.php教程" method="post">
<input type="hidden" name="max_file_size" value="100000">
<input name="userfile" type="file">  
<input type="submit" value="上传文件">
</form>

下面 是php文件上传功能代码

 

function uploadfile($type,$name,$ext,$size,$error,$tmp_name,$targetname,$upload_dir)
{
$max_size = 2000000;
$file_mimes = array('image/pjpeg','image/jpeg','image/jpg','image/gif','image/png');
$file_exts = array('.jpg','.gif','.png','.jpg','.gif','.png');
$file_path = $upload_dir.$targetname;
if(!is_dir($upload_dir))
{
if(!mkdir($upload_dir))
die("文件上传目录不存在并且无法创建文件上传目录");
if(!chmod($upload_dir,0755))
die("文件上传目录的权限无法设定为可读可写");
}
if($size>$max_size)
die("上传的文件大小超过了规定大小");
if($size == 0)
die("请选择上传的文件");
if(!in_array($type,$file_mimes) || !in_array($ext,$file_exts))
die("请上传符合要求的文件类型");
if(!move_uploaded_file($tmp_name, $file_path))
die("复制文件失败,请重新上传");
switch($error)
{
case 0:
return ;
case 1:
die("上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值");
case 2:
die("上传文件的大小超过了 html 表单中 max_file_size 选项指定的值");
case 3:
die("文件只有部分被上传");
case 4:
die("没有文件被上传");
}
}
[!--infotagslink--]

相关文章

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

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

    这篇文章主要介绍了Win10 IIS 安装及.net 4.5及Win10安装IIS并配置ASP.NET 4.0的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-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
  • 图文详解本地Windows 7/8上IIS服务器搭建教程

    这篇文章主要以图文结合的方式详细介绍了本地Windows 78上IIS服务器搭建教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 ...2017-07-06
  • 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
  • 数据库写不进去IIS写入权限怎么设置

    后台内容无法更新,如基本设置保存不了,数据库写不进去,很有可能是Everyone权限问题,即Everyone 无权操作文件夹,按照下面的步骤操作即可...2016-01-27
  • IIS中保持HTTP连接的设置方法

    这篇文章主要介绍了IIS中保持HTTP连接的设置方法,需要的朋友可以参考下...2016-01-27
  • C#修改IIS站点framework版本号的方法

    这篇文章主要介绍了C#修改IIS站点framework版本号的方法,涉及C#调用使用ASP.NET IIS注册工具Aspnet_regiis.exe进行IIS站点framework版本号修改的方法,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • IIS中User-mode caching引起的Cache-Control不为public问题的解决方法

    在IIS的Output caching中如果启用了User-mode caching将引起Cache-Control为no-cache,从而造成页面不能被浏览器或代理服务器缓存,下面看解决方法...2016-01-27
  • 用IIS配置反向代理实现方法(图文)

    一直以为windows下用nginx来配置反向代理,没想到微软官方也出了这个东西,特分享下, 方便需要的朋友...2016-01-27
  • win2000服务器在IIS中使用SSL配置HTTPS网站

    下面我们以WIN2000服务器版本的来做例子,介绍一下怎样利用SSL加密HTTP通道来加强IIS安全的,需要的朋友可以参考下...2017-07-06
  • win2003 IIS+MySQL服务管理助手

    应一个朋友要求写了这个批处理程序,主要用途就是在win32系统中方便停止、开启、重启IIS、MySQL服务。 ...2016-01-27
  • jQuery ajax全局函数处理session过期后的ajax跳转问题

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

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