Files
VH_posting_system/test_single_download.php
T
zuevav e5a88665cd mailn
2026-04-30 15:14:09 +03:00

111 lines
3.4 KiB
PHP

<?php
/**
* Direct test of photo download - bypasses Auth
* Delete this file after testing!
*/
error_reporting(E_ALL);
// Test with one of the working URLs from debug output
$testUrl = $_GET['url'] ?? 'https://live.staticflickr.com/65535/54995003092_7cfd04e2ba_b.jpg';
echo "<h2>Testing Download: $testUrl</h2>";
// Fetch the image
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $testUrl,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_MAXREDIRS => 5,
CURLOPT_TIMEOUT => 60,
CURLOPT_CONNECTTIMEOUT => 15,
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_HTTPHEADER => [
'Accept: image/*, */*',
'Referer: https://www.flickr.com/',
],
]);
$content = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
$error = curl_error($ch);
curl_close($ch);
echo "<p>HTTP Status: <b>$httpCode</b></p>";
echo "<p>Content-Type: <b>$contentType</b></p>";
echo "<p>Content Size: <b>" . strlen($content) . "</b> bytes</p>";
if ($error) {
echo "<p style='color:red'>cURL Error: $error</p>";
}
// Check magic bytes
$magicBytes = substr($content, 0, 16);
echo "<p>First 16 bytes (hex): <code>" . bin2hex($magicBytes) . "</code></p>";
$isJpeg = (substr($content, 0, 2) === "\xFF\xD8");
$isPng = (substr($content, 0, 4) === "\x89PNG");
echo "<p>Is JPEG: <b>" . ($isJpeg ? 'YES' : 'NO') . "</b></p>";
echo "<p>Is PNG: <b>" . ($isPng ? 'YES' : 'NO') . "</b></p>";
if ($httpCode === 200 && ($isJpeg || $isPng)) {
echo "<h3 style='color:green'>✓ Image fetched successfully!</h3>";
// Save test file
$testFile = sys_get_temp_dir() . '/flickr_test_' . time() . '.jpg';
file_put_contents($testFile, $content);
// Verify with getimagesize
$imgInfo = @getimagesize($testFile);
if ($imgInfo) {
echo "<p>Image verified: <b>{$imgInfo[0]}x{$imgInfo[1]}</b> - {$imgInfo['mime']}</p>";
echo "<p>Test file saved to: $testFile</p>";
} else {
echo "<p style='color:red'>getimagesize() failed on saved file!</p>";
}
// Show preview
echo "<h3>Preview (base64):</h3>";
echo "<img src='data:image/jpeg;base64," . base64_encode($content) . "' style='max-width:500px'>";
// Download link
echo "<h3>Test Download:</h3>";
echo "<p><a href='?action=download&url=" . urlencode($testUrl) . "'>Click to test download</a></p>";
@unlink($testFile);
} else {
echo "<h3 style='color:red'>✗ Failed to fetch valid image</h3>";
if (strlen($content) < 500) {
echo "<p>Response content:</p><pre>" . htmlspecialchars($content) . "</pre>";
}
}
// Handle download action
if (($_GET['action'] ?? '') === 'download') {
$url = $_GET['url'] ?? '';
if (!$url) die('No URL');
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_USERAGENT => 'Mozilla/5.0',
CURLOPT_HTTPHEADER => ['Accept: image/*', 'Referer: https://www.flickr.com/'],
]);
$content = curl_exec($ch);
curl_close($ch);
// Clear ALL output
while (ob_get_level()) ob_end_clean();
header('Content-Type: image/jpeg');
header('Content-Length: ' . strlen($content));
header('Content-Disposition: attachment; filename="test_photo.jpg"');
echo $content;
exit;
}