2017-03-02 69 views
1

我在练习如何在PHP中将值存储到会话中。在会话中存储后,Php资源ID已更改

的问题是:

当我在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.phptestsession.php并在testsession.php做一些文件操作。

+0

我不确定这会适用于您。文件句柄的范围是当前进程,并在脚本结束时结束。我不相信它可能通过一个打开的文件句柄到这个方法中的另一个进程。 –

+0

您不能在会话中保存文件资源引用,然后在另一个实例中重新使用它。如果您想在会话中对文件进行操作,请保存文件的名称(如'$ _SESSION ['file_name']'而不是$ _SESSION ['handle']'),并在需要时重新打开该文件它再次。 –

回答

1

首先在页面的顶部添加PHP会话启动命令:

<?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

您需要同时在页面的顶部添加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