Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.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&;返回外部网页的Textarea值;卷曲_Php_Html_Curl - Fatal编程技术网

使用PHP&;返回外部网页的Textarea值;卷曲

使用PHP&;返回外部网页的Textarea值;卷曲,php,html,curl,Php,Html,Curl,我正在尝试在提交表单,并使用PHP和cURL从“加密消息”文本区域返回结果。我可以看到包含以下代码的页面,但我不知道它是否正在提交表单,也不知道如何获得结果。另外,是的,=NXwT应该位于PGP公钥文本区域中的单独一行。任何反馈都将不胜感激!下面是我的代码: //create array of data to be posted $post_data['ctl00$cp$txtPublicKey'] = 'mQENBFfWrk0BCACPDJk8f6GOpQewp0AtP5CrhstpazsYP

我正在尝试在提交表单,并使用PHP和cURL从“加密消息”文本区域返回结果。我可以看到包含以下代码的页面,但我不知道它是否正在提交表单,也不知道如何获得结果。另外,是的,=NXwT应该位于PGP公钥文本区域中的单独一行。任何反馈都将不胜感激!下面是我的代码:
//create array of data to be posted
$post_data['ctl00$cp$txtPublicKey'] = 'mQENBFfWrk0BCACPDJk8f6GOpQewp0AtP5CrhstpazsYPG9r+8wWamSgVYbIwdS8/bdnVdIu7Be680m3VcjtZWwG9wiomTXCx5RargREqNICigzPTU0f/CgHEMFoZQn2bWz1YXBrpYb+qgxMweVe1T4uz8sOeHzAebMAQCdNVEwDu4o90vi+Pz3jqgSEpJyhe4RqOgEdkkrtGaEUnNr2IO8gCSmPAeQW6qFNcJsl7iWfeY7LHMv6A77n/1mGhdp4h0E+V6ElUNPjeEj9I1QYSIXRxDcejvcq5HrF27DyQ1mN1TgdauAkGdqRuIJsMDmEaYtLm3fIAwpbiAcJu6fmz7eAnBz5scTlLvEZABEBAAG0GmR1c3Rpbm9ybW9uZEBjcmVpZ2h0b24uZWR1iQEcBBABAgAGBQJX1q5NAAoJEKd43LZ3nczviUoIAIAzstgpn++GAfwHs7wMdjQbKvK3LB7hZKfskiATVWxafRvNGP9Gv0PPF+ly5WLt0PjLsOc6KV98T5jtF3h0rvTZK4viZJD6JFAgiaWzL0+w5a/ksUMEgMdx4xHM/k+sSbtBlha+GI72IMsU/0dKrYkSkZ5BpUoepk5OtRvu37Pg5dSW0Zx/cd+8bnVMBK6Ri8yT0Lvg+5w0KSCn5LvXtpGKc87TJgMBHWRa3qikmw3XWqPCza+APbTjZ/WlLtA0lpP7txfbYsTQObVdiZ7DFOb1n4OxpWxrvV8e60VazKBmv4daFyim+qWySsvYCBmwn8+8r+J/5OdKhG7tAW71qxY=
=NXwT';
$post_data['ctl00$cp$txtMsgToEncrypt'] = 'Test Message';
$post_data['ctl00$cp$btnGeneratePgpKeys'] = 'Encrypt Message';

//traverse array and prepare data for posting (key1=value1)
foreach ( $post_data as $key => $value) {
    $post_items[] = $key . '=' . urlencode($value);
}

//create the final string to be posted using implode()
$post_string = implode('&', $post_items);

//create cURL connection
$ch = curl_init();

// sets the cURL options
$options = array(
    CURLOPT_URL            => "https://www.igolder.com/PGP/encryption/",
    CURLOPT_RETURNTRANSFER => true,   // return web page
    CURLOPT_HEADER         => false,  // don't return headers
    CURLOPT_FOLLOWLOCATION => true,   // follow redirects
    CURLOPT_MAXREDIRS      => 10,     // stop after 10 redirects
    CURLOPT_ENCODING       => "",     // handle compressed
    CURLOPT_USERAGENT      => $_SERVER["HTTP_USER_AGENT"], // name of client
    CURLOPT_AUTOREFERER    => true,   // set referrer on redirect
    CURLOPT_CONNECTTIMEOUT => 30,     // time-out on connect
    CURLOPT_TIMEOUT        => 30,    // time-out on response
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_COOKIEJAR      => 'cookie.txt',
    CURLOPT_COOKIEFILE     => 'cookie.txt',
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => $post_string
); 
curl_setopt_array($ch, $options);

// execute cURL request
$result = curl_exec($ch);

// prints the cURL result
print_r($result);

/******* instead of printing the entire page, I want to just get the value in the textarea  with the name of ctl00$cp$txtEncryptedMessage *******/

//close the connection
curl_close($ch);
?>

打印什么?怎么样
print\r($result)
是否包含所需的HTML?print\r基本上打印连接信息。对不起,我应该包括在内的。我已经对结果进行了回送或打印,结果显示了网页内容,但没有显示提交的表格。我只想得到在文本区域中找到的结果。
urlencode($value)
在构建POST数据字符串时是否有效?其中有一些模棱两可的字符,例如
+
,您需要小心处理这些字符。远程服务器可能希望POST参数是urlencode的,如果不进行urlencode,则会将其转换为一个空格。我不是说这会解决问题,但它可能是其他问题的来源。谢谢apokryfos。我补充说,我相信表格正在提交;但是,我的问题是,如何只返回特定文本区域中的结果(例如ctl00$cp$txtEncryptedMessage)并将其存储在PHP变量中?我能返回的只是整个页面,而这个页面甚至没有在文本区域中显示结果。诀窍是让cURL请求返回正确的结果。在您的情况下,正确的结果是整个页面的文本区域中确实包含所需的文本。一旦你成功地得到了它,你就可以通过一个简单的正则表达式或HTMLDom解析器得到文本。您不能使用cURL仅请求网页的一部分。