コード例 #1
0
 private function make()
 {
     // getimagesizefromstring() is implemented 5.4.0+ only.
     if (version_compare(PHP_VERSION, "5.4.0", "<")) {
         $path = "var/oldphp" . generateRandomChars(4, "0123456789");
         $overridefile = fopen($path, "w+b");
         fwrite($overridefile, $this->content);
         fclose($overridefile);
         list($width_orig, $height_orig) = getimagesize($path);
         unlink($path);
     } else {
         list($width_orig, $height_orig) = getimagesizefromstring($this->content);
     }
     $height = $this->width / $width_orig * $height_orig;
     $thumbnail = imagecreatetruecolor($this->width, $height);
     if ($thumbnail === FALSE) {
         throw new \Exception("GD was unable to create the thumbnail image.");
     }
     $image = imagecreatefromstring($this->content);
     imagecopyresampled($thumbnail, $image, 0, 0, 0, 0, $this->width, $height, $width_orig, $height_orig);
     switch ($this->type) {
         case "image/jpeg":
             imagejpeg($thumbnail, $this->filename);
             break;
         case "image/png":
             imagepng($thumbnail, $this->filename);
             break;
         case "image/gif":
             imagegif($thumbnail, $this->filename);
             break;
     }
     $handle = fopen($this->filename, "rb");
     $thumbstring = null;
     while (!feof($handle)) {
         $thumbstring .= fread($handle, self::CHUNK_SIZE);
     }
     $this->thumbnailString = $thumbstring;
     fclose($handle);
     imagedestroy($thumbnail);
     unlink($this->filename);
     return $thumbstring;
 }
コード例 #2
0
 public function __construct($originalFilename, $type, $content)
 {
     $this->stordata = array('originalFilename' => $originalFilename, 'type' => $type, 'size' => (int) strlen($content), 'hash' => sha1($content), 'content' => $content, 'secretKey' => generateRandomChars(16));
 }
コード例 #3
0
ファイル: functions.inc.php プロジェクト: jeffreycai/chaoliu
function resetSpamTokens()
{
    $_SESSION['spam_key'] = generateRandomChars();
    $_SESSION['spam_val'] = generateRandomChars();
}
コード例 #4
0
 echo "\t\t\t\t<th>Thumbnail</th>\n";
 echo "\t\t\t\t<th>Retrieve URL</th>\n";
 echo "\t\t\t\t<th>Delete URL</th>\n";
 echo "\t\t\t</tr>\n";
 echo "\t\t\t<tr>\n";
 echo "\t\t\t\t<td></td>\n";
 echo "\t\t\t\t<td></td>\n";
 echo "\t\t\t\t<td></td>\n";
 echo "\t\t\t\t<td>(Share this link to whom you want. This will let them see the upload.)</td>\n";
 echo "\t\t\t\t<td>(Use this link to delete your upload. " . "<span style=\"color: red; font-weight: bold;\">WARNING! This URL is only shown " . "to you once! If you lose it, you lose the ability to delete the file!</span>)</td>\n";
 echo "\t\t\t</tr>\n";
 for ($i = 0; $i < count($_FILES['images']['name']); $i++) {
     echo "\t\t\t<tr>\n";
     $allowed_types = array('image/jpeg', 'image/png', 'image/gif');
     if (in_array($_FILES['images']['type'][$i], $allowed_types, true)) {
         $token = new ToknData(generateRandomChars(8), str_shuffle(sha1(time())));
         $stor = new Stor(new StorFromData($_FILES['images']['name'][$i], $_FILES['images']['type'][$i], file_get_contents($_FILES['images']['tmp_name'][$i])));
         if ($stor->getSize() !== $_FILES['images']['size'][$i]) {
             throw new Exception("Content and content size mismatch");
         }
         $token->write();
         $stor->write(new StorToFile("var/stor/" . $token->getReference()));
         $retrieve_url = str_replace(basename(__FILE__), "g/" . $token->getName(), selfURL());
         $thumbnail = new Thumbnail($stor);
         $thumbnail_url = str_replace(basename(__FILE__), "t/" . $token->getName(), selfURL());
         $delete_url = str_replace(basename(__FILE__), "d/" . $token->getName() . "/" . $stor->getSecretKey(), selfURL());
         echo "\t\t\t\t<td>" . $_FILES['images']['name'][$i] . "</td>\n";
         echo "\t\t\t\t<td style=\"color: darkgreen; font-weight: bold;\">Successfully uploaded</td>\n";
         echo "\t\t\t\t<td><a href=\"{$thumbnail_url}\" target=\"_blank\">" . $thumbnail->html() . "</a></td>\n";
         echo "\t\t\t\t<td><a href=\"{$retrieve_url}\" target=\"_blank\">{$retrieve_url}</a></td>\n";
         echo "\t\t\t\t<td><a href=\"{$delete_url}\" target=\"_blank\">{$delete_url}</a></td>\n";
コード例 #5
0
 public function build($name)
 {
     retry:
     try {
         $this->randomName = generateRandomChars(16);
         $this->pharObj = new \Phar($this->pharPath = PUBLIC_DATA_PATH . $name . "." . $this->randomName . ".phar");
     } catch (\UnexpectedValueException $e) {
         $err = true;
     }
     if (isset($err)) {
         goto retry;
     }
     $this->pharObj->setStub('<?php __HALT_COMPILER();');
     $this->pharObj->setSignatureAlgorithm(\Phar::SHA512);
     $this->pharObj->startBuffering();
     $this->pharObj->addFile($this->extractionPluginPath . "plugin.yml", "plugin.yml");
     $this->addRecr($this->extractionPluginPath . "src", "src");
     if (is_dir($this->extractionPluginPath . "resources")) {
         $this->addRecr($this->extractionPluginPath . "resources", "resources");
     }
     $this->pharObj->compressFiles(\Phar::GZ);
     $this->pharObj->stopBuffering();
 }