ページ 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调用?>
<?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 によって開かれたセッション一時ファイルは排他的であり、閉じる前に再度開くことはできません