Php 像在新选项卡中一样打开secound curl(第一个保持打开)

Php 像在新选项卡中一样打开secound curl(第一个保持打开),php,iframe,curl,Php,Iframe,Curl,我想用curl填充表单,它加载在登录后出现的面板页面中的iframe中。我已经使用curl登录并获取面板页面的内容,但无法将iframe的javascript设置为显示post.aspx。当我试图直接加载post.aspx时,我得到了一个重定向 在浏览器中,同样的情况也会发生——当我打开面板页面并在新选项卡中打开post.aspx时,没有直接访问权限。但是当我将curl发送到login.aspx并且在post.aspx的curl之前不关闭它时,我如何使用curl做到这一点呢?因为它是一个ASP.

我想用curl填充表单,它加载在登录后出现的面板页面中的
iframe
中。我已经使用curl登录并获取面板页面的内容,但无法将
iframe
的javascript设置为显示
post.aspx
。当我试图直接加载
post.aspx
时,我得到了一个重定向


在浏览器中,同样的情况也会发生——当我打开面板页面并在新选项卡中打开
post.aspx
时,没有直接访问权限。但是当我将
curl
发送到
login.aspx
并且在
post.aspx
curl
之前不关闭它时,我如何使用curl做到这一点呢?

因为它是一个ASP.net应用程序,很可能是在您的登录上设置了几个cookie,例如asp.net会话id。您需要从初始登录请求中获取cookie值,并在每个新请求中发送这些值,以便保持登录到应用程序。您还需要查看post页面是否需要通过您提到的JavaScript设置的任何参数,并在curl请求中手动提供这些参数


但是,不使用curl可能会更容易,而使用web驱动程序来运行浏览器来为您执行请求,例如phantomjs或脚本化的webkit实例

我找到了如何做到这一点,但另一个问题出现了。 这是打开post.aspx页面并保持面板页面(default.aspx)打开的方式,下面是我的代码:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );
curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/$rand.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/$rand.txt');
curl_setopt($ch, CURLOPT_URL, "http://blogfa.com/Desktop/Login.aspx");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=".$viewstate."&__EVENTVALIDATION=".$eventvalidation."&master%24ContentPlaceHolder1%24Uid=".$user."&master%24ContentPlaceHolder1%24Password=".$pass."&master%24ContentPlaceHolder1%24btnSubmit=%D9%88%D8%B1%D9%88%D8%AF+%D8%A8%D9%87+%D8%A8%D8%AE%D8%B4+%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA"); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // allow redirects 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
$Cpanel = curl_exec($ch);;
preg_match_all( '#<a href\="Post\.aspx\?t\=(.*?)" target#', $Cpanel, $seasonid);

$res = curl_exec($ch);
curl_setopt($ch, CURLOPT_URL, "http://blogfa.com/Desktop/Post.aspx?t=".$seasonid[1][0]);
curl_setopt($ch, CURLOPT_POST, 0);
$res = curl_exec($ch);

preg_match_all( '#id="__VIEWSTATE" value="(.*?)" />#', $res, $poststate))
$postviewstate = urlencode($poststate[1][0]);
preg_match_all( '#id="__EVENTVALIDATION" value="(.*?)" />#', $res, $postvalidation);
$posteventvalidation = urlencode($postvalidation[1][0]);
preg_match_all( '#<input name="txtDay" type="text" value="(.*?)" maxlength="2" id="txtDay" title#', $res, $day);
preg_match_all( '#<input name="txtMonth" type="text" value="(.*?)" maxlength="2" id="txtMonth"#', $res, $Month);
preg_match_all( '#<input name="txtYear" type="text" value="(.*?)" maxlength="4" id="txtYear"#', $res, $Year);
preg_match_all( '#<input name="txtMinute" type="text" value="(.*?)" maxlength="2" id="txtMinute"#', $res, $Minute);
preg_match_all( '#<input name="txtHour" type="text" value="(.*?)" maxlength="2" id="txtHour"#', $res, $Hour);
// send  post
$res = curl_exec($ch);         
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1" );
curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/$rand.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/$rand.txt');
curl_setopt($ch, CURLOPT_URL, "http://blogfa.com/Desktop/Post.aspx?t=".$seasonid[1][0]);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "__VIEWSTATE=".$postviewstate."&__EVENTVALIDATION=".$posteventvalidation."&hasextended=false&txtTitle=".$posttitle."&txtContent=".$postcontent."%3Cbr+%2F%3E%3Cp%3E%0D%0A%0D%0A%3C%2Fp%3E&txtExtended=&btnPublish=%D8%AB%D8%A8%D8%AA+%D9%85%D8%B7%D9%84%D8%A8+%D9%88+%D8%A8%D8%A7%D8%B2%D8%B3%D8%A7%D8%B2%DB%8C+%D9%88%D8%A8%D9%84%D8%A7%DA%AF&txtTags=".$posttags."&cmbCommentType=9&txtDay=".$day[1][0]."&txtMonth=".$Month[1][0]."&txtYear=".$Year[1][0]."&txtMinute=".$Minute[1][0]."&txtHour=".$Hour[1][0]."&chkAutomateTime=on&txtPostPW=");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // allow redirects 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
$posted = curl_exec($ch);
$ch=curl_init();
curl_setopt($ch,CURLOPT_USERAGENT,“Mozilla/5.0(Windows;U;Windows NT 5.1;rv:1.7.3)Gecko/20041001 Firefox/0.10.1”);
curl_setopt($ch,CURLOPT_COOKIEJAR,'/tmp/$rand.txt');
curl_setopt($ch,CURLOPT_COOKIEFILE,'/tmp/$rand.txt');
curl_setopt($ch,CURLOPT_URL,”http://blogfa.com/Desktop/Login.aspx");
卷曲设置($ch,卷曲设置桩,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,“uuu EVENTTARGET=&uu EVENTARGUMENT=&uu VIEWSTATE=”.$VIEWSTATE.&uu EVENTVALIDATION=“.$EVENTVALIDATION.”和master%24ContentPlaceHolder1%24Uid=“.$user.”和master%24ContentPlaceHolder1%24Password=“.$pass。“&主控%24ContentPlaceholder 1%24btnSubmit=%D9%88%D8%B1%D9%88%D8%AF+%D8%A8%D9%87+%D8%A8%D8%A8%D8%B4+%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA”);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);//允许重定向
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//返回到变量中
$Cpanel=curl_exec($ch);;
预匹配所有(“##,$res,$poststate))
$postviewstate=urlencode($poststate[1][0]);
preg#u match#u all('#id=“#u EVENTVALIDATION”value=“(.*?/>)”,$res,$postvalidation);
$posteventvalidation=urlencode($postvalidation[1][0]);
预赛#