В Python я могу написать этот код:
def func(url, configuration_username, configuration_pass):
with requests.Session() as session:
params = {
'configuration_username': configuration_username,
'configuration_pass': configuration_pass,
}
if response.status_code == 200:
if 'Login error' not in response.text:
print('OK: Login success')
downloaded_zip = zipfile.ZipFile(io.BytesIO(response.content))
downloaded_zip.extractall()
else:
print('ERROR: Login error')
else:
print('ERROR: Received status code %d' % response.status_code)
В основном, есть логин на сайте. Когда вы вводите свои учетные данные и нажимаете Отправить, он отправляет запрос POST с соответствующими учетными данными. Ответ - файл .ZIP, но он также отправляет источник страницы входа. В Python я смог заставить это работать, потому что response.content содержал данные файла ZIP в байтах, а response.text был исходным кодом страницы. Таким образом, я могу проверить response.text на наличие ошибок на веб-странице, а затем записать байты из response.content в ZIP-файл и извлечь его. Я хочу переписать это на PHP, но я не хочу получать исходный код страницы тоже.
<?php
ob_start();
session_start();
header("X-XSS-Protection: 0");
$configuration_username = "myusername";
$configuration_pass = "mypass";
$params = array(
"configuration_username" => $configuration_username,
"configuration_pass" => $configuration_pass
);
$server_url = "http://myurl.com";
$ch = curl_init($server_url);
$destination_file = "/var/www/html/filetest.zip";
$file_resource = fopen($destination_file, "w");
$curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_FILE, $file_resource);
$response = curl_exec($ch);
if ((curl_errno($ch)) or (!$response)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
fclose($file_resource);
ob_end_flush();
?>
Этот код выше записывает байты ответа в файл, но в результате получаются байты ZIP в дополнение к исходному коду страницы. Есть ли какое-то решение для этого?