0

このスクリプトを使用して、リファラーを URL に設定するか、リファラーが空であるか Cookie が設定されている場合は画像をヒットします。以下のコードは私がこれまでに持っていたものです.curl関数部分は、それを単独でファイルに入れると機能しますが、クッキー部分に入れるのに問題があります.

エラーは Call to undefined function geturl() です

<?php
$image = 'image_url';


if($_COOKIE["6346"] == 1) {
$show = 0;
} 

else {
$show = 1;
$hours = rand(24,68);
setcookie('6346', 1, time()+(60*60*$hours));

}

if (!empty($_SERVER['HTTP_REFERER'])) {
$goodreferer = 0;
}
else {
$goodreferer = 1;
}

if ($show == 1 && $goodreferer == 0) {
echo geturl('url(dot)com', 'referer(dot)com');

function geturl($url, $referer) { 


    $headers[] = 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg,text/html,application/xhtml+xml'; 
    $headers[] = 'Connection: Keep-Alive'; 
    $headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8'; 
    $useragent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'; 

    $process = curl_init($url); 
    curl_setopt($process, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($process, CURLOPT_HEADER, 0); 
    curl_setopt($process, CURLOPT_USERAGENT, $useragent);
    curl_setopt($process, CURLOPT_REFERER, $referer);
    curl_setopt($process, CURLOPT_TIMEOUT, 30); 
    curl_setopt($process, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1); 

    $return = curl_exec($process); 
    curl_close($process); 

    return $return; 

} 
}
else {
header('Location: ' . $image);

exit;
}

?>
4

3 に答える 3

0

if() 制御構造内で関数を定義しないでください。それは混乱の確実なレシピです。これは多重継承のようなものです。できるからといって、すべきであるとは限りません。

制御構造の適切なインデントを使用すると、ロジックが理解しやすくなり、コードのデバッグが容易になることがわかると思います。このバージョンのスクリプトは正しく機能します。 http://www.laprbass.com/RAY_temp_user1923808.php

<?php // RAY_temp_user1923808.php
error_reporting(E_ALL);

$image = 'image_url';

if( isset($_COOKIE["6346"]) && ( $_COOKIE["6346"] == 1) )
{
    $show = 0;
}
else
{
    $show = 1;
    $hours = rand(24,68);
    setcookie('6346', 1, time()+(60*60*$hours));
}

if (!empty($_SERVER['HTTP_REFERER']))
{
    $goodreferer = 0;
}
else
{
    $goodreferer = 1;
}

if ($show == 1 && $goodreferer == 0)
{
    echo geturl('url(dot)com', 'referer(dot)com');
}
else
{
    header('Location: ' . $image);
    exit;
}

function geturl($url, $referer) {


    $headers[] = 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg,text/html,application/xhtml+xml';
    $headers[] = 'Connection: Keep-Alive';
    $headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8';
    $useragent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)';

    $process = curl_init($url);
    curl_setopt($process, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($process, CURLOPT_HEADER, 0);
    curl_setopt($process, CURLOPT_USERAGENT, $useragent);
    curl_setopt($process, CURLOPT_REFERER, $referer);
    curl_setopt($process, CURLOPT_TIMEOUT, 30);
    curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);

    $return = curl_exec($process);
    curl_close($process);

    return $return;
}
于 2012-12-22T16:59:13.550 に答える