Unstoppable Domains

Combining these two PHP scripts

Spaceship Spaceship
Watch

RichardAFCB

Established Member
Impact
0
Hi there,

I have this script:

PHP:
<?php 
////////////////////////////////////////////////////////////// 
///  phpThumb() by James Heinrich <[email protected]>   // 
//        available at [url]http://phpthumb.sourceforge.net[/url]     /// 
////////////////////////////////////////////////////////////// 
///                                                         // 
// See: phpthumb.changelog.txt for recent changes           // 
// See: phpthumb.readme.txt for usage instructions          // 
//                                                         /// 
////////////////////////////////////////////////////////////// 

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 
if (!@ini_get('safe_mode')) { 
    set_time_limit(60);  // shouldn't take nearly this long in most cases, but with many filter and/or a slow server... 
} 

// this script relies on the superglobal arrays, fake it here for old PHP versions 
if (phpversion() < '4.1.0') { 
    $_SERVER = $HTTP_SERVER_VARS; 
    $_GET    = $HTTP_GET_VARS; 
} 


if (file_exists('phpThumb.config.php')) { 
    ob_start(); 
    if (include_once(dirname(__FILE__).'/phpThumb.config.php')) { 
        // great 
    } else { 
        ob_end_flush(); 
        die('failed to include_once('.dirname(__FILE__).'/phpThumb.config.php) - realpath="'.realpath(dirname(__FILE__).'/phpThumb.config.php').'"'); 
    } 
    ob_end_clean(); 
} elseif (file_exists('phpThumb.config.php.default')) { 
    die('Please rename "phpThumb.config.php.default" to "phpThumb.config.php"'); 
} else { 
    die('failed to include_once('.dirname(__FILE__).'/phpThumb.config.php) - realpath="'.realpath(dirname(__FILE__).'/phpThumb.config.php').'"'); 
} 

if (!@$_SERVER['QUERY_STRING']) { 
    die('$_SERVER[QUERY_STRING] is empty'); 
} 
if (@$PHPTHUMB_CONFIG['high_security_enabled']) { 
    if (!@$_GET['hash']) { 
        die('ERROR: missing hash'); 
    } 
    if (strlen($PHPTHUMB_CONFIG['high_security_password']) < 5) { 
        die('ERROR: strlen($PHPTHUMB_CONFIG[high_security_password]) < 5'); 
    } 
    if ($_GET['hash'] != md5(str_replace('&hash='.$_GET['hash'], '', $_SERVER['QUERY_STRING']).$PHPTHUMB_CONFIG['high_security_password'])) { 
        die('ERROR: invalid hash'); 
    } 
} 

if (!function_exists('ImageJPEG') && !function_exists('ImagePNG') && !function_exists('ImageGIF')) { 
    // base64-encoded error image in GIF format 
    $ERROR_NOGD = 'R0lGODlhIAAgALMAAAAAABQUFCQkJDY2NkZGRldXV2ZmZnJycoaGhpSUlKWlpbe3t8XFxdXV1eTk5  P7+/iwAAAAAIAAgAAAE/vDJSau9WILtTAACUinDNijZtAHfCojS4W5H+qxD8xibIDE9h0OwWaRWDIljJSkUJYsN4bihMB8th3I  ToAKs1VtYM75cyV8sZ8vygtOE5yMKmGbO4jRdICQCjHdlZzwzNW4qZSQmKDaNjhUMBX4BBAlmMywFS  RWEmAI6b5gAlhNxokGhooAIK5o/pi9vEw4Lfj4OLTAUpj6IabMtCwlSFw0DCKBoFqwAB04AjI54PyZ+yY3TD0ss2YcVmN/gvpcu4TOyFivWqYJlbAHPpOntvxNAACcmGHjZzAZqzSzcq5fNjxFmAFw9iFRunD1epU6tsIPmFCAJn  WYE0FURk7wJDA0MTKpEzoWAAskiAAA7'; 
    header('Content-Type: image/gif'); 
    echo base64_decode($ERROR_NOGD); 
    exit; 
} 

// returned the fixed string if the evil "magic_quotes_gpc" setting is on 
if (get_magic_quotes_gpc()) { 
    $RequestVarsToStripSlashes = array('src', 'wmf', 'file', 'err', 'goto', 'down'); 
    foreach ($RequestVarsToStripSlashes as $key) { 
        if (isset($_GET[$key])) { 
            $_GET[$key] = stripslashes($_GET[$key]); 
        } 
    } 
} 

// instantiate a new phpThumb() object 
ob_start(); 
if (!include_once(dirname(__FILE__).'/phpthumb.class.php')) { 
    ob_end_flush(); 
    die('failed to include_once("'.realpath(dirname(__FILE__).'/phpthumb.class.php').'")'); 
} 
ob_end_clean(); 
$phpThumb = new phpThumb(); 

if (@$_GET['src'] && isset($_GET['md5s']) && empty($_GET['md5s'])) { 
    if (eregi('^(f|ht)tp[s]?://', $_GET['src'])) { 
        if ($fp_source = @fopen($_GET['src'], 'rb')) { 
            $filedata = ''; 
            while (true) { 
                $buffer = fread($fp_source, 16384); 
                if (strlen($buffer) == 0) { 
                    break; 
                } 
                $filedata .= $buffer; 
            } 
            fclose($fp_source); 
            $md5s = md5($filedata); 
        } 
    } else { 
        $SourceFilename = $phpThumb->ResolveFilenameToAbsolute($_GET['src']); 
        if (is_readable($SourceFilename)) { 
            $md5s = phpthumb_functions::md5_file_safe($SourceFilename); 
        } else { 
            $phpThumb->ErrorImage('ERROR: "'.$SourceFilename.'" cannot be read'); 
        } 
    } 
    if (@$_SERVER['HTTP_REFERER']) { 
        $phpThumb->ErrorImage('&md5s='.$md5s); 
    } else { 
        die('&md5s='.$md5s); 
    } 
} 

foreach ($PHPTHUMB_CONFIG as $key => $value) { 
    $keyname = 'config_'.$key; 
    $phpThumb->$keyname = $value; 
} 

//////////////////////////////////////////////////////////////// 
// Debug output, to try and help me diagnose problems 
if (@$_GET['phpThumbDebug'] == '1') { 
    $phpThumb->phpThumbDebug(); 
} 
//////////////////////////////////////////////////////////////// 

$parsed_url_referer = parse_url(@$_SERVER['HTTP_REFERER']); 
if ($phpThumb->config_nooffsitelink_require_refer && !in_array(@$parsed_url_referer['host'], $phpThumb->config_nohotlink_valid_domains)) { 
    $phpThumb->ErrorImage('config_nooffsitelink_require_refer enabled and '.(@$parsed_url_referer['host'] ? '"'.$parsed_url_referer['host'].'" is not an allowed referer' : 'no HTTP_REFERER exists')); 
} 
$parsed_url_src = parse_url(@$_GET['src']); 
if ($phpThumb->config_nohotlink_enabled && $phpThumb->config_nohotlink_erase_image && eregi('^(f|ht)tp[s]?://', @$_GET['src']) && !in_array(@$parsed_url_src['host'], $phpThumb->config_nohotlink_valid_domains)) { 
    $phpThumb->ErrorImage($phpThumb->config_nohotlink_text_message); 
} 


//////////////////////////////////////////////////////////////// 
// You may want to pull data from a database rather than a physical file 
// If so, uncomment the following $SQLquery line (modified to suit your database) 
// Note: this must be the actual binary data of the image, not a URL or filename 
// see [url]http://www.billy-corgan.com/blog/archive/000143.php[/url] for a brief tutorial on this section 

//$SQLquery = 'SELECT `picture` FROM `products` WHERE (`id` = \''.mysql_escape_string(@$_GET['id']).'\')'; 
if (@$SQLquery) { 

    // change this information to match your server 
    $hostname = 'localhost'; 
    $username = 'username'; 
    $password = 'password'; 
    $database = 'database'; 
    if ($cid = @mysql_connect($hostname, $username, $password)) { 
        if (@mysql_select_db($database, $cid)) { 
            if ($result = @mysql_query($SQLquery, $cid)) { 
                if ($row = @mysql_fetch_array($result)) { 

                    mysql_free_result($result); 
                    mysql_close($cid); 
                    $phpThumb->setSourceData($row[0]); 
                    unset($row); 

                } else { 
                    mysql_free_result($result); 
                    mysql_close($cid); 
                    $phpThumb->ErrorImage('no matching data in database.'); 
                    //$phpThumb->ErrorImage('no matching data in database. MySQL said: "'.mysql_error($cid).'"'); 
                } 
            } else { 
                mysql_close($cid); 
                $phpThumb->ErrorImage('Error in MySQL query: "'.mysql_error($cid).'"'); 
            } 
        } else { 
            mysql_close($cid); 
            $phpThumb->ErrorImage('cannot select MySQL database: "'.mysql_error($cid).'"'); 
        } 
    } else { 
        $phpThumb->ErrorImage('cannot connect to MySQL server'); 
    } 
    unset($_GET['id']); 
} 

//////////////////////////////////////////////////////////////// 
// Debug output, to try and help me diagnose problems 
if (@$_GET['phpThumbDebug'] == '2') { 
    $phpThumb->phpThumbDebug(); 
} 
//////////////////////////////////////////////////////////////// 

$allowedGETparameters = array('src', 'new', 'w', 'h', 'f', 'q', 'sx', 'sy', 'sw', 'sh', 'zc', 'bc', 'bg', 'bgt', 'fltr', 'file', 'goto', 'err', 'xto', 'ra', 'ar', 'aoe', 'far', 'iar', 'maxb', 'down', 'phpThumbDebug', 'hash', 'md5s'); 
foreach ($_GET as $key => $value) { 
    if (in_array($key, $allowedGETparameters)) { 
        $phpThumb->$key = $value; 
    } else { 
        $phpThumb->ErrorImage('Forbidden parameter: '.$key); 
    } 
} 

if (!empty($PHPTHUMB_DEFAULTS)) { 
    foreach ($PHPTHUMB_DEFAULTS as $key => $value) { 
        if ($PHPTHUMB_DEFAULTS_GETSTRINGOVERRIDE || !isset($_GET[$key])) { 
            $phpThumb->$key = $value; 
        } 
    } 
} 

//////////////////////////////////////////////////////////////// 
// Debug output, to try and help me diagnose problems 
if (@$_GET['phpThumbDebug'] == '3') { 
    $phpThumb->phpThumbDebug(); 
} 
//////////////////////////////////////////////////////////////// 


// check to see if file can be output from source with no processing or caching 
$CanPassThroughDirectly = true; 
if (!empty($phpThumb->rawImageData)) { 
    // data from SQL, should be fine 
} elseif (!@is_file(@$_GET['src']) || !@is_readable(@$_GET['src'])) { 
    $CanPassThroughDirectly = false; 
} 
foreach ($_GET as $key => $value) { 
    switch ($key) { 
        case 'src': 
            // allowed 
            break; 

        default: 
            // all other parameters will cause some processing, 
            // therefore cannot pass through original image unmodified 
            $CanPassThroughDirectly = false; 
            $UnAllowedGET[] = $key; 
            break; 
    } 
} 
if (!empty($UnAllowedGET)) { 
    $phpThumb->DebugMessage('Cannot pass through directly because $_GET['.implode(';', array_unique($UnAllowedGET)).'] are set', __FILE__, __LINE__); 
} 

//////////////////////////////////////////////////////////////// 
// Debug output, to try and help me diagnose problems 
if (@$_GET['phpThumbDebug'] == '4') { 
    $phpThumb->phpThumbDebug(); 
} 
//////////////////////////////////////////////////////////////// 

function SendSaveAsFileHeaderIfNeeded() { 
    global $phpThumb; 
    if (@$_GET['down']) { 
        $downloadfilename = ereg_replace('[/\\:\*\?"<>|]', '_', $_GET['down']); 
        if (phpthumb_functions::version_compare_replacement(phpversion(), '4.1.0', '>=')) { 
            $downloadfilename = trim($downloadfilename, '.'); 
        } 
        if (@$downloadfilename) { 
            $phpThumb->DebugMessage('SendSaveAsFileHeaderIfNeeded() sending header: Content-Disposition: attachment; filename="'.$downloadfilename.'"', __FILE__, __LINE__); 
            header('Content-Disposition: attachment; filename="'.$downloadfilename.'"'); 
            return true; 
        } 
    } 
    $phpThumb->DebugMessage('SendSaveAsFileHeaderIfNeeded() sending header: Content-Disposition: inline', __FILE__, __LINE__); 
    header('Content-Disposition: inline'); 
    return true; 
} 

while ($CanPassThroughDirectly && $phpThumb->src) { 
    // no parameters set, passthru 
    $SourceFilename = $phpThumb->ResolveFilenameToAbsolute($phpThumb->src); 

    if (!GetImageSize($SourceFilename)) { 

        // security -- prevent passing through of non-image files 
        $phpThumb->DebugMessage('GetImageSize('.$SourceFilename.') failed (invalid image?)', __FILE__, __LINE__); 

    } else if (@$_GET['phpThumbDebug']) { 

        $phpThumb->DebugMessage('Would have passed "'.$SourceFilename.'" through directly, but skipping due to phpThumbDebug', __FILE__, __LINE__); 

    } else { 

        // security checks 
        if ($GetImageSize = @GetImageSize($SourceFilename)) { 
            $ImageCreateFunctions = array(1=>'ImageCreateFromGIF', 2=>'ImageCreateFromJPEG', 3=>'ImageCreateFromPNG'); 
            if (@$ImageCreateFunctions[$GetImageSize[2]]) { 
                $theFunction = $ImageCreateFunctions[$GetImageSize[2]]; 
                if (function_exists($theFunction) && ($dummyImage = @$theFunction($SourceFilename))) { 
                    // great 
                    unset($dummyImage); 
                } else { 
                    $phpThumb->DebugMessage('Not passing "'.$SourceFilename.'" through directly because '.$theFunction.'() failed', __FILE__, __LINE__); 
                    break; 
                } 
            } else { 
                $phpThumb->DebugMessage('Not passing "'.$SourceFilename.'" through directly because GetImageSize() returned unhandled image type "'.$GetImageSize[2].'"', __FILE__, __LINE__); 
                break; 
            } 
        } else { 
            $phpThumb->DebugMessage('Not passing "'.$SourceFilename.'" through directly because GetImageSize() failed', __FILE__, __LINE__); 
            break; 
        } 
        SendSaveAsFileHeaderIfNeeded(); 
        header('Last-Modified: '.gmdate('D, d M Y H:i:s', @filemtime($SourceFilename)).' GMT'); 
        if ($getimagesize = @GetImageSize($SourceFilename)) { 
            header('Content-Type: '.phpthumb_functions::ImageTypeToMIMEtype($getimagesize[2])); 
        } 
        @readfile($SourceFilename); 
        exit; 

    } 
    break; 
} 

//////////////////////////////////////////////////////////////// 
// Debug output, to try and help me diagnose problems 
if (@$_GET['phpThumbDebug'] == '5') { 
    $phpThumb->phpThumbDebug(); 
} 
//////////////////////////////////////////////////////////////// 

// check to see if file already exists in cache, and output it with no processing if it does 
$phpThumb->SetCacheFilename(); 
if (is_file($phpThumb->cache_filename)) { 
    $parsed_url = @parse_url(@$_SERVER['HTTP_REFERER']); 
    if ($phpThumb->config_nooffsitelink_enabled && @$_SERVER['HTTP_REFERER'] && !in_array(@$parsed_url['host'], $phpThumb->config_nooffsitelink_valid_domains)) { 
        $phpThumb->DebugMessage('Would have used cached (image/'.$phpThumb->thumbnailFormat.') file "'.$phpThumb->cache_filename.'" (Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($phpThumb->cache_filename)).' GMT), but skipping because $_SERVER[HTTP_REFERER] ('.@$_SERVER['HTTP_REFERER'].') is not in $phpThumb->config_nooffsitelink_valid_domains ('.implode(';', $phpThumb->config_nooffsitelink_valid_domains).')', __FILE__, __LINE__); 
    } elseif ($phpThumb->phpThumbDebug) { 
        $phpThumb->DebugMessage('Would have used cached file, but skipping due to phpThumbDebug', __FILE__, __LINE__); 
        $phpThumb->DebugMessage('* Would have sent headers (1): Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($phpThumb->cache_filename)).' GMT', __FILE__, __LINE__); 
        if ($getimagesize = @GetImageSize($phpThumb->cache_filename)) { 
            $phpThumb->DebugMessage('* Would have sent headers (2): Content-Type: '.phpthumb_functions::ImageTypeToMIMEtype($getimagesize[2]), __FILE__, __LINE__); 
        } 
        if (ereg('^'.preg_quote(str_replace($phpThumb->osslash, '/', $PHPTHUMB_CONFIG['document_root'])).'(.*)$', str_replace($phpThumb->osslash, '/', $phpThumb->cache_filename), $matches)) { 
            $phpThumb->DebugMessage('* Would have sent headers (3): Location: '.dirname($matches[1]).'/'.urlencode(basename($matches[1])), __FILE__, __LINE__); 
        } else { 
            $phpThumb->DebugMessage('* Would have sent headers (3): readfile('.$phpThumb->cache_filename.')', __FILE__, __LINE__); 
        } 
    } else { 
        SendSaveAsFileHeaderIfNeeded(); 
        header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($phpThumb->cache_filename)).' GMT'); 
        if ($getimagesize = @GetImageSize($phpThumb->cache_filename)) { 
            header('Content-Type: '.phpthumb_functions::ImageTypeToMIMEtype($getimagesize[2])); 
        } 
        if (ereg('^'.preg_quote(str_replace($phpThumb->osslash, '/', $PHPTHUMB_CONFIG['document_root'])).'(.*)$', str_replace($phpThumb->osslash, '/', $phpThumb->cache_filename), $matches)) { 
            header('Location: '.dirname($matches[1]).'/'.urlencode(basename($matches[1]))); 
        } else { 
            @readfile($phpThumb->cache_filename); 
        } 
        exit; 
    } 
} else { 
    $phpThumb->DebugMessage('Cached file "'.$phpThumb->cache_filename.'" does not exist, processing as normal', __FILE__, __LINE__); 
} 

//////////////////////////////////////////////////////////////// 
// Debug output, to try and help me diagnose problems 
if (@$_GET['phpThumbDebug'] == '6') { 
    $phpThumb->phpThumbDebug(); 
} 
//////////////////////////////////////////////////////////////// 

if ($phpThumb->rawImageData) { 

    // great 

} elseif (!empty($_GET['new'])) { 

    // generate a blank image resource of the specified size/background color/opacity 
    if (($phpThumb->w <= 0) || ($phpThumb->h <= 0)) { 
        $phpThumb->ErrorImage('"w" and "h" parameters required for "new"'); 
    } 
    @list($bghexcolor, $opacity) = explode('|', $_GET['new']); 
    if (!phpthumb_functions::IsHexColor($bghexcolor)) { 
        $phpThumb->ErrorImage('BGcolor parameter for "new" is not valid'); 
    } 
    $opacity = (strlen($opacity) ? $opacity : 100); 
    if ($phpThumb->gdimg_source = phpthumb_functions::ImageCreateFunction($phpThumb->w, $phpThumb->h)) { 
        $alpha = (100 - min(100, max(0, $opacity))) * 1.27; 
        if ($alpha) { 
            $phpThumb->is_alpha = true; 
            ImageAlphaBlending($phpThumb->gdimg_source, false); 
            ImageSaveAlpha($phpThumb->gdimg_source, true); 
        } 
        $new_background_color = phpthumb_functions::ImageHexColorAllocate($phpThumb->gdimg_source, $bghexcolor, false, $alpha); 
        ImageFilledRectangle($phpThumb->gdimg_source, 0, 0, $phpThumb->w, $phpThumb->h, $new_background_color); 
    } else { 
        $phpThumb->ErrorImage('failed to create "new" image ('.$phpThumb->w.'x'.$phpThumb->h.')'); 
    } 

} elseif (!$phpThumb->src) { 

    $phpThumb->ErrorImage('Usage: '.$_SERVER['PHP_SELF'].'?src=/path/and/filename.jpg'."\n".'read Usage comments for details'); 

} elseif (substr(strtolower($phpThumb->src), 0, 7) == 'http://') { 

    ob_start(); 
    $HTTPurl = strtr($phpThumb->src, array(' '=>'%20')); 
    if ($fp = fopen($HTTPurl, 'rb')) { 

        $rawImageData = ''; 
        do { 
            $buffer = fread($fp, 8192); 
            if (strlen($buffer) == 0) { 
                break; 
            } 
            $rawImageData .= $buffer; 
        } while (true); 
        fclose($fp); 
        $phpThumb->setSourceData($rawImageData, urlencode($phpThumb->src)); 

    } else { 

        $fopen_error = strip_tags(ob_get_contents()); 
        ob_end_clean(); 
        if (ini_get('allow_url_fopen')) { 
            $phpThumb->ErrorImage('cannot open "'.$HTTPurl.'" - fopen() said: "'.$fopen_error.'"'); 
        } else { 
            $phpThumb->ErrorImage('"allow_url_fopen" disabled'); 
        } 

    } 
    ob_end_clean(); 

} 

//////////////////////////////////////////////////////////////// 
// Debug output, to try and help me diagnose problems 
if (@$_GET['phpThumbDebug'] == '7') { 
    $phpThumb->phpThumbDebug(); 
} 
//////////////////////////////////////////////////////////////// 

$phpThumb->GenerateThumbnail(); 

//////////////////////////////////////////////////////////////// 
// Debug output, to try and help me diagnose problems 
if (@$_GET['phpThumbDebug'] == '8') { 
    $phpThumb->phpThumbDebug(); 
} 
//////////////////////////////////////////////////////////////// 

if ($phpThumb->file) { 

    $phpThumb->RenderToFile($phpThumb->ResolveFilenameToAbsolute($phpThumb->file)); 
    if ($phpThumb->goto && (substr(strtolower($phpThumb->goto), 0, strlen('http://')) == 'http://')) { 
        // redirect to another URL after image has been rendered to file 
        header('Location: '.$phpThumb->goto); 
        exit; 
    } 

} else { 

    if ((file_exists($phpThumb->cache_filename) && is_writable($phpThumb->cache_filename)) || is_writable(dirname($phpThumb->cache_filename))) { 

        $phpThumb->CleanUpCacheDirectory(); 
        $phpThumb->RenderToFile($phpThumb->cache_filename); 

    } else { 

        $phpThumb->DebugMessage('Cannot write to $phpThumb->cache_filename ('.$phpThumb->cache_filename.') because that directory ('.dirname($phpThumb->cache_filename).') is not writable', __FILE__, __LINE__); 

    } 

} 

//////////////////////////////////////////////////////////////// 
// Debug output, to try and help me diagnose problems 
if (@$_GET['phpThumbDebug'] == '9') { 
    $phpThumb->phpThumbDebug(); 
} 
//////////////////////////////////////////////////////////////// 

$phpThumb->OutputThumbnail(); 

?>

and this script

PHP:
<?php header('content-type: image/jpeg');   

$watermark = imagecreatefrompng('watermark.png');   
$watermark_width = imagesx($watermark);   
$watermark_height = imagesy($watermark);   
$image = imagecreatetruecolor($watermark_width, $watermark_height);   
$image = imagecreatefromjpeg($_GET['src']);   
$size = getimagesize($_GET['src']);   
$dest_x = $size[0] - $watermark_width - 5;   
$dest_y = $size[1] - $watermark_height - 5;   
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100);   
imagejpeg($image);   
imagedestroy($image);   
imagedestroy($watermark);   

?>

And I need to run them together. One thumbnails an image using height=xx and width=xx from the URL and the other watermarks it with a PNG.

Does anybody know how I can combine them? I'm not good with PHP at all so I'm sure it's simple, but just sticking them together doesn't work! I either get the thumbnail failing or the watermarking failing.

Cheers,

Rich
 
Last edited by a moderator:
0
•••
The views expressed on this page by users and staff are their own, not those of NamePros.
GoDaddyGoDaddy
Dynadot โ€” .com Registration $8.99Dynadot โ€” .com Registration $8.99
Unstoppable Domains
Domain Recover
DomainEasy โ€” Payment Flexibility
  • The sidebar remains visible by scrolling at a speed relative to the pageโ€™s height.
Back