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 无法从 GET 表单变量中存储变量

php中的session_id详解

linux下php命令无法使用如何解决

PHP 分布式集群中session共享问题以及session有效期的设置

php中session_id()函数详细介绍,会话id生成过程及session id长度

面试问题汇总