ホームページ > バックエンド開発 > PHPチュートリアル > session_id の割り当てに不可解な問題があります。

session_id の割り当てに不可解な問題があります。

WBOY
リリース: 2016-06-23 14:00:59
オリジナル
983 人が閲覧しました

ページ A とページ B は両方とも同じ Web ルート ディレクトリにあります。 session_id を渡す必要がある理由は、ページ A がページ B へのcurl のポストを使用して戻りデータを取得する必要があり、curl のポストがページ B によって考慮されるためです。サーバーは別の端末になります。
アイデアは次のとおりです。ページ A.php は現在の session_id をページ B.php に渡し (post メソッドを使用)、ページ B.php は session_id() オペレーションを使用して、ページ A.php と B.php がセッションを共有します。
以下はコードです:
ページ A.php

<?php/* * 生成验证码图片 * author yuanjiang @2.16.2014*/define("IN_WD",true);require('includes/init.php');$sessionid = session_id();$url = CLIENT_HOST.'createCaptcha.php';$keyArr = array('sessionid'=>$sessionid);$captcha = $Common->file_post($url,$keyArr);echo base64_encode($captcha);   //图片的base64编码,供客户端和web调用?>
ログイン後にコピー

以下はページ B で、上記の createCaptcha.php です
<?php/* * 生成验证码图片 * author yuanjiang @2.16.2014*/define("IN_WD",true);$sessionid =  isset($_POST['sessionid']) ? $_POST['sessionid'] : '' ;     //根据post的sessionid切换session状态if(!empty($sessionid)){     session_id($sessionid);      //执行这一步的时候程序会卡死,当$sessionid不等于页面A.php的session_id时正确}session_start();require('includes/cls_captcha.php');$Captcha = new Captcha;$Captcha->generate_image();     //生成图片?>
ログイン後にコピー


ディスカッション (解決策) への返信

何十回もテストしました。
createCaptcha.php の session_id($sessionid) 関数のパラメータがページ A.php の session_id() と一致しない場合、プログラムは完全に正常です。
しかし、私が望む効果は、createCaptcha.phpがcurlとpost中にsession_id($sessionid)を使用することです。何が問題なのか本当にわかりません。 。 。 。
ありがとう! ! ! ! !

ページ A
$sessionid = session_id();
session_write_close(); // セッション B にアクセス
session_id($sessionid)
session_start(); // プログラムがフリーズする理由はい、ページ A によって開かれたセッション一時ファイルは排他的であり、閉じる前に再度開くことはできません


さらに、デフォルトのファイル方法を使用してセッションを保存しない場合、そのような混乱は発生しません

ありがとうございます、神様、あなたの命を救ってくれて、私はここ何年もこの問題に一度も注意を払ったことはありません。

ページ A

$sessionid = session_id();

session_write_close(); // セッションを閉じる
// アクセス B
session_id($sessionid)
session_start() // プログラムがフリーズする理由は、ページ A によって開かれたセッション一時ファイルは排他的であり、閉じる前に再度開くことはできません

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート