linux下 php文件中session_id无法保持不变,每次刷新页面session_id也会出现新的数值 这个是怎么搞定的?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下 php文件中session_id无法保持不变,每次刷新页面session_id也会出现新的数值 这个是怎么搞定的?相关的知识,希望对你有一定的参考价值。
参考技术A session_id随时变化的原因有两点:1、客户端COOKIE无法存取
2、浏览器问题
最基本的解决办法就是取得当前的session_id,
然后将此值用query_string的方式传递到下一个页面:
$s_id = session_id();
跳转时:b.php?sid=$s_id
在b中用$_GET['sid']来获取session_id,并在session_start()之前设置session_id: session_id($_GET['sid']);
session_start();
面试问题汇总
1.cookie被禁用了 session还能用吗
在php里面,session_id是每个会话的唯一id,它默认被保存到cookie中(session_id一个存在服务器端,一个存在cookie当中),请求时,根据cookie里面的session_id来识别会话。
但可通过trans_sid设置(在编译时或php.ini)文件中,对其进行修改。修改后,session_id能脱离cookie而存在,不同点在于,使用cookie时,从cookie中获取session_id,而不使用cookie时,session_id会跟在url后面(PHP自动干这事情),所以cookie被禁用之后session就不能用了。
2.分布式集群时候共享session问题
通过php自身的session配置实现
session.save_handler = redis#配置为redis
session.save_path ="tcp://127.0.0.1:6379"#如果redis设置了密码则:session.save_path = "tcp://redis服务地址:端口?auth=密码"
该方案由于配置不支持多样化,只能用于用户少量时的应用。
3.mysql中char和varchar的区别,哪种字段的查找效率高
在mySQL 中char 和 varchar 都是存储字符串的,区别在于char有固定的长度,而varchar属于可变长的字符类型。
char 固定长度,所以在处理速度上要比varchar快速很多,但是对费存储空间,所以对存储不大,但在速度上有要求的可以使用char类型。
4.isset和empty的区别
只要变量是否为” “或者0,或者是false和null,只要是这些值empty都会返回true(判断变量是否存在),而isset是判断变量是否存在,只要你这个变量不是null或未赋值,返回结果都是true
5.javascript的数据类型
字符串、数字、布尔、数组、对象、Null、Undefined
6.MyISam和InnoDb的主要区别和应用场景
主要区别:
- 1).MyISAM是非事务安全型的,而InnoDB是事务安全型的。
- 2).MyISAM锁的粒度是表级,而InnoDB支持行级锁定。
- 3).MyISAM支持全文类型索引,而InnoDB不支持全文索引。
- 4).MyISAM相对简单,所以在效率上要优于InnoDB,小型应用可以考虑使用MyISAM。
- 5).MyISAM表是保存成文件的形式,在跨平台的数据转移中使用MyISAM存储会省去不少的麻烦。
- 6).InnoDB表比MyISAM表更安全,可以在保证数据不会丢失的情况下,切换非事务表到事务表(alter table tablename type=innodb)。
应用场景:
- 1).MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择。
- 2).InnoDB用于事务处理应用程序,具有众多特性,包括ACID事务支持。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能。
7.PHP魔术函数
php引擎将类的相关接口以魔术方法的形式暴露给用户,
用户可以通过自定义相关接口,实现灵活的功能组织 (php中的魔法函数都是以“__”两个连续的下划线开头的)
8.PHP面向对象之访问权限修饰符
public(公共的、默认)
protected(受保护的)
private(私有的)
public(公共的、默认)在PHP5中如果类没有指定成员的访问修饰符,默认就是public的访问权限。
protected(受保护的)被声明为protected的成员,只允许该类的子类进行访问。
private(私有的 ) 被定义为private的成员,对于类内部所有成员都可见,没有访问限制。对类外部不允许访问。
以上是关于linux下 php文件中session_id无法保持不变,每次刷新页面session_id也会出现新的数值 这个是怎么搞定的?的主要内容,如果未能解决你的问题,请参考以下文章
PHP 分布式集群中session共享问题以及session有效期的设置