首页 > 编程技术 > php

php session页面间传递变量的问题

发布时间:2016-11-25 16:02

SESSION的情况:
  如果窗口A 是已经登陆了的,有SESSION,那么在A 中点击任何一个连接新打开的窗口都是有SESSION。
  从窗口A中,采用window.open()等js方法打开的窗口也都拥有SESSION.
  从窗口A中,点击 文件(F)->新建窗口,这样新建的窗口也有SESSION.
  MyIE中的创建窗口都类似 IE中的在同一窗口点击文件->新建窗口,所以只要输入正确的地址都能取到SESSION
新开窗口取不到SESSION。
  IE,自己手动开启一个新窗口(点击图标,新开一个窗口).这种情况下,即使输入正确的和窗口A一样的地址也取不到SESSION.
  在IE中,打开WebFolder,或者MsOffice等支持HTTP1.1扩展协议的在线编辑的软件,也是取不到SESSION。
总结一下:
  SESSIOn取不到的主要原因是因为http是无状态的通信协议,所以在不同的进程之间无法共享SESSIOn,因为虽然你双击打开的新窗口且输入了同一地址,但是http协议的无状态特性,客户端和服务器都不会主动的去记录他们之间的连接状态.SESSION和COOKIE正是为了明确客户端和服务器之间通信的记录,或者说表明他们之间的关系的这么一种机制..
  你可以把SESSION / COOKIE的这种机制想象成为 京客隆超市 的会员卡. 你有这张会员卡,售货员就能知道你是什么级别的会员,商品应该按照什么样的会员价格卖给你.
  SESSION的处理方式比较多. PHP默认的处理机制是采用在服务器段保存以SESSION_ID的方式保存SESSION.  
  可以这么理解,超市只给了你一个ID卡,你的所有信息都是存放在超市的电脑里,而不是一张IC卡,信息存在卡片里.因为超市的分店之间没有联网,所以你的ID卡,就不能在其他分店里用了

php定时自动生成html静态页面
"ob_start()、ob_end_clean()、ob_get_contents()"
ob_start():是打开缓冲区的,就是要把您需要生成的静态文件的内容缓存在这里;
ob_get_contents():是读出缓冲区里的内容,下面有代码为例;
ob_end_clean():这个比较重要,只有使用了这个函数后,缓冲区里的内容才会读取出来;
[复制此代码]CODE:
if(file_exists("./index.htm"))//看静态index.htm文件是否存在
{
time=time();
//文件修改时间和现在时间相差?的话,直接导向htm文件,否则重新生成htm
if(time-filemtime("./index.htm")< 600)
{
header("Location:classhtml/main.htm");
}
}
//在你的开始处加入ob_start();
ob_start();
//首页内容,就是你的动态部分了
//在结尾加入ob_end_clean(),并把本页输出到一个变量中
temp=ob_get_contents();
ob_end_clean();
//写入文件
fp=fopen("./index.htm",'w');
fwrite(fp,temp) or die('写文件错误');
//echo"生成HTML完成!";

php 入门篇-如何判断mysql数据库连接成功

<?php
$cn = mysql_connect('localhost','root','root');
if( $cn )
{
 die('数据库连接成功');
}
else
{
 die('连接失败');
}
?>

<?php
 mysql_connect('localhost','root','root') or die('remote server cant' connect');
 mysql_select_db('www.111cn.net') or('selected not exists!');
 $sql = "Select borough_thumb,id from fke_borough where borough_thumb<>'' and isnew =1 ";
 $result = mysql_query( $sql ) or die(mysql_error());
 $_path ='../upfile/';
 //批量查询数据库中图片不为空的记录,并用file_exists与is_file进行图片进行分析是否存在网站指定目录
 while( $rs = mysql_fetch_array( $result ) )
 {
  $t_file = $_path.$rs['borough_thumb'];
 echo "<a href=$t_file target=_blank>查看</a>";
 
 if( isFile($t_file) )
 {
  echo '存在<br/>';
 }
 else
 {
  updateSql($rs['id']);
  echo '<br>',$rs['id'];
 }
 }
 //更新数据库
 function updateSql($fid)
 {
  mysql_query("Update fke_borough set borough_thumb='' where id='$fid' ") or die('update fail');
 }
 //用户判断文章是否存 is_file file_exists函数实现
 function isFile($path)
 {
  if( file_exists($path) && is_file($path))
 {
  return true;
 }
 else
 {
  return false;
 }
 }
 //注意is_file 与 file_exists函数不能判断绝对路径如我上面的$_path ='/upfile/'就会显示找不到文件,如果用../upfile/就OK了,
?>

<?php
class mysqlquery
{
 var $sql;//sql语句执行结果
 var $query;//sql语句
 var $num;//返回记录数
 var $r;//返回数组
 var $id;//返回数据库id号
 //执行mysql_query()语句
 function query($query)
 {
  $this->sql=mysql_query($query) or die(mysql_error()."<br>".$query);
  return $this->sql;
 }
 //执行mysql_query()语句2
 function query1($query)
 {
  $this->sql=mysql_query($query);
  return $this->sql;
 }
 //执行mysql_fetch_array()
 function fetch($sql)//此方法的参数是$sql就是sql语句执行结果
 {
  $this->r=mysql_fetch_array($sql);
  return $this->r;
 }
 //执行fetchone(mysql_fetch_array())
 //此方法与fetch()的区别是:1、此方法的参数是$query就是sql语句
 //2、此方法用于while(),for()数据库指针不会自动下移,而fetch()可以自动下移。
 function fetch1($query)
 {
  $this->sql=$this->query($query);
  $this->r=mysql_fetch_array($this->sql);
  return $this->r;
 }
 //执行mysql_num_rows()
 function num($query)//此类的参数是$query就是sql语句
 {
  $this->sql=$this->query($query);
  $this->num=mysql_num_rows($this->sql);
  return $this->num;
 }
 //执行numone(mysql_num_rows())
 //此方法与num()的区别是:1、此方法的参数是$sql就是sql语句的执行结果。
 function num1($sql)
 {
  $this->num=mysql_num_rows($sql);
  return $this->num;
 }
 //执行numone(mysql_num_rows())
 //统计记录数
 function gettotal($query)
 {
  $this->r=$this->fetch1($query);
  return $this->r['total'];
 }
 //执行free(mysql_result_free())
 //此方法的参数是$sql就是sql语句的执行结果。只有在用到mysql_fetch_array的情况下用
 function free($sql)
 {
  mysql_free_result($sql);
 }
 //执行seek(mysql_data_seek())
 //此方法的参数是$sql就是sql语句的执行结果,$pit为执行指针的偏移数
 function seek($sql,$pit)
 {
  mysql_data_seek($sql,$pit);
 }
 //执行id(mysql_insert_id())
 function lastid()//取得最后一次执行mysql数据库id号
 {
  $this->id=mysql_insert_id();
  return $this->id;
 }
}
?>

标签:[!--infotagslink--]

您可能感兴趣的文章: