Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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无法发布数据_Php_Curl_Post - Fatal编程技术网

PHP Curl无法发布数据

PHP Curl无法发布数据,php,curl,post,Php,Curl,Post,我正在用PHP编写一个aubook约会脚本。有一个日历,上面有可预订的日期 我成功地做了日志记录,我成功地获得了随机日期,我成功地获得了可用日期参数,最后我无法发布数据并预订约会 在我成功地使用这个简单的脚本预订之后,我必须设置一个条件-如果有可用的日期,请尝试预订,否则将继续刷新 <?php set_time_limit(0);// to infinity for $ch = curl_init(); $headers[]

我正在用PHP编写一个aubook约会脚本。有一个日历,上面有可预订的日期

我成功地做了日志记录,我成功地获得了随机日期,我成功地获得了可用日期参数,最后我无法发布数据并预订约会

在我成功地使用这个简单的脚本预订之后,我必须设置一个条件-如果有可用的日期,请尝试预订,否则将继续刷新

    <?php

        set_time_limit(0);// to infinity for 


        $ch = curl_init();
        $headers[] = "Accept: */*";
        $headers[] = "Connection: Keep-Alive";


        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_URL, 'https://example.com/login/login.php');
        curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
        curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);


        $co = curl_exec($ch);


    $doc = new DOMDocument();
    libxml_use_internal_errors(true);
    $doc->loadHTML($co);
    # Parse the HTML
    # The @ before the method call suppresses any warnings that
    # loadHTML might throw because of invalid HTML in the page.
    $xpath = new DOMXPath($doc);

    $val1 = $xpath->query('//input[@name="_sid"]/@value')->item(0)->nodeValue;


    echo $val1; 



     echo '<br/>';

         $field['process'] = 'login';
        $field['_sid'] = $val1;
        $field['email'] = 'myemail@example.com';
        $field['pwd'] = '123456';

        $datafield = http_build_query($field);

        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
        curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $datafield);
        curl_setopt($ch, CURLOPT_VERBOSE, true);

        curl_exec($ch);

        curl_setopt($ch, CURLOPT_URL, 'https://example.com/login/myapp.php?fg_id=5568094');

        $cur = curl_exec($ch);



        $do = new DOMDocument();   // New  dom Doc to Get URL from calender of avaliable dates
    libxml_use_internal_errors(true);
    $do->loadHTML($cur);
    # Parse the HTML
    # The @ before the method call suppresses any warnings that
    # loadHTML might throw because of invalid HTML in the page.
    $xpath = new DOMXPath($do);
    $onClickAttrNodeList = $xpath->query('//a[@class="dispo"]/@onclick'); //array contains URL 

    $array = array();         // CONVERT NODE LIST  OBJECT TO ARRAY
    foreach($onClickAttrNodeList as $node){
        $array[] = $node;
    }


    $x=array();
       foreach($array as $node) {
           for($i = 0; $i < 10; ++$i) {
         $x[] = $node->nodeValue;  //PARSE ALL LINK AS TABLE
    }

    }
    $randlink = array_rand($x, 10);   //get gandom link from calender of avaliable dates 
    $link = $x[$randlink[0]];



    echo '<br/>';
    preg_match_all('#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#', $link, $match);  //Get URL from the last array
       echo "<pre>";
       $url = $match[0];
    print_r($url[0]); 

    echo'<br/>';

    parse_str( parse_url( $url[0], PHP_URL_QUERY), $arrayurl );   // GET parametres from the URL of avaliable dates to book

    var_dump($arrayurl);

 /* in this part of code
    i am trying  to post 
    parametres to book
    an appottment i failed on this step */
        $fieldbook['timestamp'] = $arrayurl[0];                      
        $fieldbook['skey'] = $arrayurl[1];
        $fieldbook['process'] = $arrayurl[2];
        $fieldbook['what'] = $arrayurl[3];
        $fieldbook['fg_id'] = $arrayurl[4];
        $fieldbook['result'] = $arrayurl[5];
        $fieldbook['issuer_view'] = $arrayurl[6];


        $datafieldbook = http_build_query($fieldbook);

        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_URL, 'https://example.com/login/action.php');
        curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
        curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $datafieldbook);
        curl_setopt($ch, CURLOPT_VERBOSE, true);

        curl_exec($ch);

        curl_setopt($ch, CURLOPT_URL, 'https://example.com/login/myapp.php?fg_id=5568094');

        $book = curl_exec($ch);



    echo'<br/>';
        echo $book;
            curl_close($ch);


    ?>
loadHTML($co);
#解析HTML
#方法调用之前的@before将取消显示以下内容的任何警告:
#由于页面中的HTML无效,loadHTML可能会引发错误。
$xpath=新的DOMXPath($doc);
$val1=$xpath->query('//input[@name=“\u-sid”]/@value')->item(0)->nodeValue;
echo$val1;
回声“
”; $field['process']='login'; $field[''u sid']=$val1; $field['email']='myemail@example.com'; $field['pwd']='123456'; $datafield=http\u build\u query($field); curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); curl_setopt($ch,CURLOPT_COOKIEFILE,'cookie.txt'); curl_setopt($ch,CURLOPT_COOKIEJAR,'cookie.txt'); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false); curl_setopt($ch,CURLOPT_POST,true); curl_setopt($ch,CURLOPT_POSTFIELDS,$datafield); curl_setopt($ch,CURLOPT_VERBOSE,true); curl_exec($ch); curl_setopt($ch,CURLOPT_URL,'https://example.com/login/myapp.php?fg_id=5568094'); $cur=curl\u exec($ch); $do=新的DOMDocument();//新dom文档从可用日期日历获取URL libxml\u使用\u内部错误(true); $do->loadHTML($cur); #解析HTML #方法调用之前的@before将取消显示以下内容的任何警告: #由于页面中的HTML无效,loadHTML可能会引发错误。 $xpath=newdomxpath($do); $onClickAttrNodeList=$xpath->query('//a[@class=“dispo”]/@onclick')//数组包含URL $array=array();//将节点列表对象转换为数组 foreach($onClickAttrNodeList作为$node){ $array[]=$node; } $x=数组(); foreach($array作为$node){ 对于($i=0;$i<10;++$i){ $x[]=$node->nodeValue;//将所有链接解析为表 } } $randlink=array_rand($x,10)//从可用日期日历中获取gandom链接 $link=$x[$randlink[0]]; 回声“
”; preg#u match#u all('#\bhtps?://[^,\s()]+(?:\([\w\d]+\)|([^,[:punct:][\s]./)#',$link,$match)//从最后一个数组中获取URL 回声“; $url=$match[0]; 打印($url[0]); 回声“
”; parse_str(parse_url($url[0],PHP_url_查询),$arrayurl);//从要预订的可用日期的URL获取参数 var_dump($arrayurl); /*在这部分代码中 我正在试着发帖 要预订的参数 我在这一步上失败了*/ $fieldbook['timestamp']=$arrayurl[0]; $fieldbook['skey']=$arrayurl[1]; $fieldbook['process']=$arrayurl[2]; $fieldbook['what']=$arrayurl[3]; $fieldbook['fg_id']=$arrayurl[4]; $fieldbook['result']=$arrayurl[5]; $fieldbook['issuer_view']=$arrayurl[6]; $datafieldbook=http\u build\u query($fieldbook); curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); curl_setopt($ch,CURLOPT_URL,'https://example.com/login/action.php'); curl_setopt($ch,CURLOPT_COOKIEFILE,'cookie.txt'); curl_setopt($ch,CURLOPT_COOKIEJAR,'cookie.txt'); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false); curl_setopt($ch,CURLOPT_POST,true); curl_setopt($ch,CURLOPT_POSTFIELDS,$datafieldbook); curl_setopt($ch,CURLOPT_VERBOSE,true); curl_exec($ch); curl_setopt($ch,CURLOPT_URL,'https://example.com/login/myapp.php?fg_id=5568094'); $book=curl\u exec($ch); 回声“
”; echo$book; 卷曲关闭($ch); ?>

谢谢。

问题解决了,我刚刚添加了用户代理和一些标题


谢谢大家:-)。

I“我不确定您的问题是什么,问题在哪里,以及您预期会发生什么。您不应该关闭证书验证。有可用的免费证书,没有人必须关闭安全。Adam请阅读代码不要随机投票/*在代码的这一部分中,我试图发布参数以预订约会我在这一步失败*/