一个菜鸟驿站!

PHP禁止Cookie之后Session还能用吗?

PHP 2018-05-15 浏览(1887) 评论(0)
- N +

文章目录 [+]

今天去面试,问到这么一个问题,就是PHP禁用Cookie之后Session还能使用吗?然后回来去问朋友果断回答我,禁用Cookie之后Session肯定不能使用咯,我回答他,Cookie只是实现Session的一种方式而已,如果禁用了Cookie,Session还可以使用其他的方式来实现,例如URL重写来实现Session,这篇文章就是来写Cookie禁用之后来实现Session。

首先,你得禁止浏览器的Cookie,我这里用的Chrome浏览器。打开设置->隐私设置和安全性->内容设置->Cookie->允许网站保存和读取 Cookie 数据(推荐)关闭掉就行了。

那么我们禁用Cookie之后,有这么几种方式来实现。

  1. 1.设置php.ini配置文件中的“session.use_trans_sid = 1”,或者编译时打开打开了“--enable-trans-sid”选项,让PHP自动跨页传递Session ID

  2. 2.手动通过URL传值、隐藏表单传递Session ID

  3. 3.用文件数据库等形式保存Session ID,在跨页过程中手动调用。

具体代码如下:

  1. 途径1举例说明:(暂未解决,安装网上方式,设置use_trans_siduse_only_cookiesuse_cookies不管用),如果亲们有办法,帮我贴一下,学习一下,谢谢。

  2. 途径2举例说明

    1. index.php内容如下:

    2. session_start();
      $_SESSION['name'] = '猫巷';
      $sessid = session_id();
      $url = "<a href='http://127.0.0.1/test/a.php?sessid=" . $sessid .  "'>下一页</a>";
      echo $url;
    3. a.php内容如下:

    4. session_id($_GET['sessid']);
      session_start();
      echo $_SESSION['name'];
    5. 这样就会正常输出“猫巷”。

  3. 途径3举例说明:

    1. index.php内容如下:

    2. session_start();
      $_SESSION['name'] = '猫巷';
      file_put_contents('session', session_id());
      $url = "<a href='http://127.0.0.1/test/a.php'>" . $_SESSION['name'] .  "</a>";
      echo $url;
    3. a.php内容如下:

    4. $session_id = file_get_contents('session');
      session_id($session_id);
      session_start();
      echo $_SESSION['name'];
    5. 这样也可以输出猫巷,入数据库同样一个道理。



标签:
作者:猫巷

,

下一篇:
评论列表 (0)条评论

发表评论

召唤伊斯特瓦尔