#php #curl #post #fopen #file-get-contents
Вопрос:
Все мои усилия провалились! Я не могу ПУБЛИКОВАТЬ данные HTTPS
даже с помощью CURL
, fopen
и file_get_contents
!
Я всегда получаю 404
ошибку!
Однако, когда я очищаю страницу с помощью метода, она открывается без ошибок! GET
Но когда я использую POST
метод для этой страницы, its same URL
он всегда завершается 404
ошибкой!
Мой PHP-код :
<?php
###########################################
function curl_fopen_getContents( $functionName='curl', $method='GET' )
{
$post_data = http_build_query(array( 'a' => '1' ));
$cookies = 'a=1';
$opts = array('http' => array(
'method' => strtoupper($method),
'header' =>
"Content-type: application/x-www-form-urlencodedrn"
."Content-Length: " . strlen($post_data)."rn"
."Cookie: $cookiesrn",
'content' => $post_data,
'timeout' => 60
));
$context = stream_context_create($opts);
///////////////////////////////////
// you can decode it
$https_url = 'my_url_here';
if( $functionName=='fopen' )
{
$result = fopen($https_url, 'r', false, $context); @fpassthru($result); @fclose($result);
}
elseif( $functionName=='file_get_contents' )
{
$result = file_get_contents($https_url, false, $context);
}else{
$result = curl_post($https_url, $method, $post_data, $cookies);
}
return $resu<
}
###########################################
function curl_post( $https_url, $method='GET', $post_data='', $cookies='' )
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$https_url);
curl_setopt($ch, CURLOPT_COOKIE, $cookies);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
#curl_setopt($ch, CURLOPT_HEADER, 1);
if( strtoupper($method) !='GET' )
{
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
$data = curl_exec($ch); if(!$data){ $data=curl_error($ch); }
curl_close($ch);
return $data;
}
###########################################
/*
curl_fopen_getContents( $functionName, $method );
$functionName = curl/fopen/file_get_contents
$method = GET/POST
*/
echo curl_fopen_getContents( 'curl', 'GET' );
###########################################
?>
Не могли бы вы помочь, пожалуйста? Большое спасибо.
Комментарии:
1. Способна ли получающая страница работать по протоколу HTTPS?
2. Если ваш сценарий curl находится на странице http, вы не можете вызвать страницу https. Сервер возвращает ошибку безопасности
3. @RiggsFolly — Да, я использую HTTPS на своем локальном сервере. И страница-пиявка тоже использует HTTPS.
4. @Stefino76 — Страница с пиявками использует HTTPS, и я тоже использую HTTPS на своем локальном сервере.
Ответ №1:
Проблема заключалась в том, что я забыл передать несколько файлов cookie..