PHP はページを開くために投稿モードをシミュレートします
バックグラウンドでログインし、投稿モードを使用して別のページにジャンプしてデータを処理することをシミュレートしようとしましたが、再ログインを求めるプロンプトが常にポップアップ表示されます。転送時に、$_SESSION 値が失われているため、ポスト モードをシミュレートしていると思われます。この状況にはどう対処すればよいでしょうか?
コードは次のとおりです:
$post_string='detail=addaction&subva=0&name=testadmin&password=123456&sex=1'
$context = array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencodedrnUser-Agent : Jimmy の POST 例 betarnContent-length:'.strlen($post_string) +8,
'content' => 'mypost='.$post_string
)
);
$stream_context = stream_context_create($context)
$data = file_get_contents(" :// xxxxxxxx/xxxx/main.php", false, $stream_context);
echo $data;
------解決策--------- -- ----------
1) まずログイン画面にデータを POST します
2) 返された結果には Cookie が含まれます: SessionID=xxxxxxxxxxxx
3) SessionID を取り出し、上記と同様に POST します
'header' => 'Content-type: application/x-www-form-urlencodedrnUser-Agent : Jimmy の POST 例 betarnContent-length:'.strlen($post_string)+8,
'header' => ' Cookie: SessionID=xxxxxxxxx;Content-type: application/x-www-form-urlencodedrnUser-Agent: Jimmy の POST 例 betarnContent-length:'.strlen($post_string)+8,
Cookie形式を思い出せません。上記は単なるサンプルです。