Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php curl发布数据以从引用的url获取值_Php_Session_Curl_Cookies_Libcurl - Fatal编程技术网

php curl发布数据以从引用的url获取值

php curl发布数据以从引用的url获取值,php,session,curl,cookies,libcurl,Php,Session,Curl,Cookies,Libcurl,我想将post数据发送到页面以获取值。问题是我想从abc.com获取数据。只有当用户从abc.com/previous url进入abc.com时,abc.com才会打开 可能是在做一些会话或cookies来进行身份验证。我不知道 我想做的是从abc.com获取数据。有没有办法通过卷曲来做这件事 我的php代码: 当您运行代码时,它会显示url已被移动对于此url,您需要来自旧的参考url,然后它在浏览器中工作 $SearchBy=“2”; $AttorneySearchMode=“Name”;

我想将post数据发送到页面以获取值。问题是我想从
abc.com
获取数据。只有当用户从
abc.com/previous url
进入
abc.com
时,
abc.com
才会打开

可能是在做一些会话或cookies来进行身份验证。我不知道

我想做的是从abc.com获取数据。有没有办法通过卷曲来做这件事

我的php代码:

当您运行代码时,它会显示
url已被移动
对于此url,您需要来自旧的参考url,然后它在浏览器中工作

$SearchBy=“2”;
$AttorneySearchMode=“Name”;
$LastName=“史密斯”;
$FirstName=“威廉”;
$CaseStatusType=“0”;
$SortBy=“fileddate”;
echo$url='https://www.clarkcountycourts.us/Anonymous/Search.aspx?ID=400&NodeID=101%2c103%2c104%2c105%2c500%2c600%2c601%2c602%2c603%2c604%2c605%2c606%2c607%2c608%2c609%2c610%2c611%2c612%2c613%2c614%2c615%2c616%2c617%2c618%2c619%2c699%2c700%2c701%2c702%2c703%2c704%2c705%2c706%2c707%2c708%2c709%2c710%2c711%2c712%2c713%2c714%2c715%2c716%2c717%2c718%2c719%2c720%2c721%2c722%2c723%2c724%2c725%2c726%2c727%2c728%2c729%2c730%2c731%2c797%2c798&NodeDesc=所有+法院';
//设置POST变量
$fields=数组(
'SearchBy'=>urlencode($SearchBy),
“律师搜索模式”=>urlencode($AttorneySearchMode),
“LastName”=>urlencode($LastName),
“FirstName”=>urlencode($FirstName),
“CaseStatusType”=>urlencode($CaseStatusType),
'SortBy'=>urlencode($SortBy),
);
$fields_string=“”;
foreach($key=>$value的字段){
$fields_string.=$key.='.$value.&';
}
rtrim($fields_string,&');
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$URL);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
$result=curl\u exec($ch);
卷曲关闭($ch);
打印(结果);

这里是一个起点,有一些小的补充

我发现3个问题阻止我在他们的服务器上请求页面:

  • 需要在cURL中启用cookies并在发布前获取一页
  • 需要禁用SSL检查(
    CURLOPT\u SSL\u VERIFYPEER
    CURLOPT\u SSL\u VERIFYHOST
  • 请求中缺少一些必要的表单字段
  • 在下面的示例中,我首先获取主搜索页面,然后重新使用相同的cURL句柄发布表单。注意这是不完整的,您需要编写代码来填充其余的表单字段

    // first fetch search page to set cookies
    $url = 'https://www.clarkcountycourts.us/Anonymous/Search.aspx?ID=400&NodeID=101%2c103%2c104%2c105%2c500%2c600%2c601%2c602%2c603%2c604%2c605%2c606%2c607%2c608%2c609%2c610%2c611%2c612%2c613%2c614%2c615%2c616%2c617%2c618%2c619%2c699%2c700%2c701%2c702%2c703%2c704%2c705%2c706%2c707%2c708%2c709%2c710%2c711%2c712%2c713%2c714%2c715%2c716%2c717%2c718%2c719%2c720%2c721%2c722%2c723%2c724%2c725%2c726%2c727%2c728%2c729%2c730%2c731%2c797%2c798&NodeDesc=All+Courts';
    
    $ch = curl_init();
    
    // needed to disable SSL checks for this site
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
    
    // enable cookie handling (they aren't saved after cURL is closed)
    curl_setopt($ch,CURLOPT_COOKIEFILE, '');
    
    // debugging
    curl_setopt($ch,CURLOPT_VERBOSE, 1);
    curl_setopt($ch,CURLOPT_STDERR, fopen('php://output', 'w'));
    
    // helpful options
    curl_setopt($ch,CURLOPT_AUTOREFERER, true);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
    
    // set first URL
    curl_setopt($ch,CURLOPT_URL, $url);
    
    // execute first request to establish cookies & referer    
    $data = curl_exec($ch);
    
    // TODO: extract hidden form fields/values from form 
    $fields_string = '...';
    
    // now make second request
    curl_setopt($ch,CURLOPT_POST, true);
    curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
    
    $result = curl_exec($ch);
    curl_close($ch);
    var_dump($result);
    
    请参阅我的一些其他答案,其中显示了如何提取其他表单字段和执行多个请求。另见()和()

    希望这会有所帮助,请用问题/问题回复