在会话中存储后,Php资源ID已更改

时间:2017-03-02 22:00:20

标签: php session

我正在练习如何在PHP中将值存储到会话中。

问题在于:

当我在testsession.php中调用echo $_SESSION['handle']时,它显示为0。

当我使用var_dump($_SESSION['handle'])时,它显示int(0)。

storeValueParctice.php

$handle = fopen ( "test.txt", "r" );
$_SESSION['handle']=$handle;
echo $_SESSION['handle'] // it will show resource id#(somenumber)

testsession.php

echo $_SESSION['handle']; //it shows 0.
var_dump($_SESSION['handle']);//it shows that int(0).
fseek ( $_SESSION['handle'], 0 ); // this will give me an error which is 
//Warning: fseek() expects parameter 1 to be resource, integer given .

我不确定为什么会这样。

如何在testsession.php中获取资源ID#?

我想将$_SESSION['handle']storeValueParctice.php传递到testsession.php并在testsession.php中执行一些文件操作。

3 个答案:

答案 0 :(得分:1)

首先在页面顶部添加php session start命令:

<?php
session_start();
?>

fopen()函数返回File对象。

如果你想把文件内容放到会话中试试这个:

$handle = file_get_contents ( "test.txt" );
$_SESSION['handle']=$handle;
var_dump($_SESSION['handle']); // it will show resource id#(somenumber)

这应该可以解决你的问题

答案 1 :(得分:1)

您需要在两个页面的顶部添加session_start()才能传递值。

<强> storeValueParctice.php

 <?php 

     session_start(); <===

     ...rest of the code...
 ?>

<强> testsession.php

<?php 

     session_start(); <===

    ...rest of the code...
 ?>

参考:https://www.tutorialspoint.com/php/php_sessions.htm

答案 2 :(得分:0)

您无法将资源保存到会话。

  

警告因为会话数据是序列化的,所以资源变量不能   存储在会话中。

参考:http://php.net/manual/en/intro.session.php 参考:http://php.net/manual/en/resource.php

我的消化是: 在会话中保存文件名,并将其加载到另一个。