2017-03-02 11 views
1

PHPでセッションに値を格納する方法を練習中です。セッションに保存した後にphpリソースIDが変更されました

問題があることである:私は私のtestsession.phpでecho $_SESSION['handle']を呼び出すとき、私はvar_dump($_SESSION['handle'])を使用する場合

は、それが0

を示し、それは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にいくつかのファイル操作を行いたいとします。

+0

これはあなたのためにはうまくいきません。ファイルハンドルのスコープは現在のプロセスであり、スクリプトが終了すると終了します。私はこのメソッドの別のプロセスに開いているファイルハンドルを渡すことが可能だとは思わない。 –

+0

ファイルリソース参照をセッションに保存してから別のインスタンスで再利用することはできません。セッション中のファイルを操作したい場合は、ファイルの名前( '$ _SESSION ['handle']'の代わりに '$ _SESSION ['file_name']')を保存し、必要に応じてそのファイルを再度開きますもう一度。 –

答えて

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) 

これはあなたが合格できるようにページの両方の上部にsession_start()を追加する必要があなたの問題

1

を解決する必要がありますの値。

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

0

セッションにリソースを保存することはできません。

警告セッションデータはシリアル化されているため、セッションにはリソース変数 を格納できません。

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

私の暗示は、次のとおりです。 セッションであなたのファイル名を保存し、他にそれをロードします。

関連する問題