PHP: <?php $pass = "ad4"; $pass_length = strlen($pass); $charset = 'abcdef0123456789'; $charset_length = strlen($charset); function brute($password,$width, $position, $base_string,$alfa,$len){ for ($i = 0; $i < $len; ++$i) { if ($position < $width - 1) { brute($password,$width, $position + 1, $base_string . $alfa[$i],$alfa,$len); } if ($base_string . $alfa[$i] == $password) { echo 'Пароль найден: '.$base_string . $alfa[$i]."\r\n"; exit; } } } brute($pass,$pass_length, 0, '',$charset,$charset_length); echo "Пароль не найден(\r\n"; ?>
Здравствуйте всем, появился вопрос, как сделать наложение картинки на картинку (своеобразный ватермарк)?? Скрипт аплоада сам создает такое изображение Если юзер выбирает чекбокс, то надо на превью наложить чтобы в итоге получить Вот клиентская часть HTML: <label><input type="radio" name="watermark_thumb" value="2">Увеличить</label> Соответсвенно серверная PHP: if ($_POST['watermark_thumb'] == "2") { # вот с наложением никак не разберусь # затем создаем превью (это код создания без лупы) createthumb($imgf,$pictype,$thbf,$tsize,$tsize); @chmod($thbf,0666); include("thumbnail.php"); // отвечает за вывод кодов } изображение лупы лежит в папке /theme/magnifying_glass.png. Ширина миниатюрки также задается пользователем.
PHP: $image = imagecreatefrompng('http://ipicture.ru/uploads/100611/H51orxCq6S.png');//картинка $watermark = imagecreatefrompng('http://ipicture.ru/uploads/100611/bSP3J7Q2Aj.png');//лупа $ro=0;//отступ от правого края $lo=0;//отступ сверху $w = imagesx($image);//ширина картинки $h = imagesy($image);//высота картинки $ww = imagesx($watermark);//ширина лупы $wh = imagesy($watermark);//высота лупы imagecopy($image, $watermark, $w-$ww-$ro, $h-$wh-$lo, 0, 0, $ww, $wh);//копируем #####вывод######### header('Content-type: image/png'); imagepng($image); #####/вывод######### imagedestroy($image); imagedestroy($watermark); или через функцию , с поддержкой "multiextentions" PHP: function watermark($src,$outtype,$wt,$x_offset=0,$y_offset=0){ switch (strtolower(substr(strrchr($src,'.'),1))) { case 'gif':$image=imagecreatefromgif($src);break; case 'jpg':$image=imagecreatefromjpeg($src);break; case 'jpeg':$image=imagecreatefromjpeg($src);break; case 'png':$image=imagecreatefrompng($src);break; } switch (strtolower(substr(strrchr($wt,'.'),1))) { case 'gif':$watermark=imagecreatefromgif($wt);break; case 'jpg':$watermark=imagecreatefromjpeg($wt);break; case 'jpeg':$watermark=imagecreatefromjpeg($wt);break; case 'png':$watermark=imagecreatefrompng($wt);break; } $ro=$x_offset;//отступ от правого края $lo=$y_offset;//отступ сверху $w=imagesx($image);//ширина картинки $h=imagesy($image);//высота картинки $ww=imagesx($watermark);//ширина лупы $wh=imagesy($watermark);//высота лупы imagecopy($image, $watermark, $w-$ww-$ro, $h-$wh-$lo, 0, 0, $ww, $wh);//копируем header('Content-type: image/'.strtolower($outtype)); switch (strtolower($outtype)) { case "jpg":imagejpeg($image,null,100);break; case "jpeg":imagejpeg($image,null,100);break; case "gif":imagegif($image);break; case "png":imagepng($image);break; } imagedestroy($image); imagedestroy($watermark); } watermark('http://ipicture.ru/uploads/100611/H51orxCq6S.png','png','http://ipicture.ru/uploads/100611/bSP3J7Q2Aj.png',0,0);
Уфф, что-то я в конец запутался, подогнать никак не получается = ( Выкладываю весь исходный код скрипта [update]. PHP: <?php /* ======================================================================= | Author: Axel G (14.06.2010) |---------------------------------------------------------------------- | Special thanks to: Chaak, #Wolf#, wildshaman, roxblnfk, .::f-duck::. |---------------------------------------------------------------------- | PHP: 5 |---------------------------------------------------------------------- | Coding Standard: PEAR ======================================================================= */ function createThumb($name, $sourcetype, $filename, $new_w, $new_h) { if (($sourcetype==".jpg") || ($sourcetype==".jpeg")) { $src_img=imagecreatefromjpeg($name); } if ($sourcetype==".png") { $src_img=imagecreatefrompng($name); } if ($sourcetype==".gif") { $src_img=imagecreatefromgif($name); } $thumb_q = $_POST['quality_thumb']; $old_x = imageSX($src_img); $old_y = imageSY($src_img); if ($old_x > $old_y) { $thumb_w = $new_w; $thumb_h = $old_y*($new_h/$old_x); } if ($old_x < $old_y) { $thumb_w = $old_x*($new_w/$old_y); $thumb_h = $new_h; } if ($old_x == $old_y) { $thumb_w = $new_w; $thumb_h = $new_h; } $dst_img = ImageCreateTrueColor($thumb_w,$thumb_h); imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y); if (($sourcetype==".jpg") || ($sourcetype==".jpeg")) { imagejpeg($dst_img,$filename,$thumb_q); } elseif ($sourcetype==".png") { imagepng($dst_img,$filename); } elseif ($sourcetype==".gif") { imagegif($dst_img,$filename); } imagedestroy($dst_img); imagedestroy($src_img); } // скрипт загрузки include("config.php"); include("header.php"); if (isset($_POST['thumb'])) $tsize=intval($_POST['thumb']); else exit; if ($max_th<$tsize || $min_th>$tsize) { echo "<p align=center><font size=4 color=red>Превью должно быть меньше $max_th, но больше $min_th пикселей !</font></p>"; include("footer.php"); exit; } if (!isset($_FILES['userfile'])) exit; if (!is_uploaded_file($_FILES['userfile']['tmp_name'])) exit; if ($_FILES['userfile']['size']>$max_size) { echo "<p align=center>Файл слишком большой!</p>"; exit; } $pictype = ""; switch (strtolower($_FILES['userfile']['type'])) { case "image/jpeg" : $pictype = ".jpg"; break; case "image/pjpeg": $pictype = ".jpg"; break; case "image/gif" : $pictype = ".gif"; break; case "image/png" : $pictype = ".png"; break; case "image/x-png": $pictype = ".png"; break; default : $pictype = ""; break; } if ($pictype != "") { do { $uniq=md5(uniqid(rand(),1)); $srcfile=$path.$uniq.$pictype; } while(file_exists($srcfile)); $res = copy($_FILES['userfile']['tmp_name'], $srcfile); if (!$res) { echo "<p align=center>Ошибка копирования файла на сервер!</p>"; exit; } @chmod($srcfile,0666); $imgf = $path . $uniq . $pictype; $thbf = $tpath . $uniq . $pictype; $urlf = $domain . $path . $uniq . $pictype; /* ########################################################################################################### // Инфа о картинке Start $size = getimagesize($urlf); //функция возвращает размер картинки для тега img, т.е [0] - ширина, [1] - высота, [2] - тип изображения, [3] - [0] + [1] $width = $size[0]; $height = $size[1]; $type = $size['mime']; function getfs($urlf){ $headers = get_headers($urlf, 1); return round(((int)$headers['Content-Length']/1024), 2); //размер в килобайтах } $weight = getfs($urlf); echo "$width x $height ($weight KB)"; } // Инфа о картинке End // Start Zoom $image = imagecreatefrompng($dst_img); // превью $watermark = imagecreatefrompng("theme/magnifying_glass.png"); // лупа $ro=0; //отступ от правого края $lo=0; //отступ сверху $w = imagesx($image); //ширина картинки $h = imagesy($image); //высота картинки $ww = imagesx($watermark); //ширина лупы $wh = imagesy($watermark); //высота лупы imagecopy($image, $watermark, $w-$ww-$ro, $h-$wh-$lo, 0, 0, $ww, $wh); // с наложением все понятно = ) header('Content-type: image/png'); // (отравка хттп-заголовка) имеет ли он смысл в моем коде?? imagepng($image); // вывод, все понятно, т.е. мне надо убрать imagepng и вместо imagecopy imagecopyresampled поставить, ведь так?? imagedestroy($image); // чистим память (превью) imagedestroy($watermark); // чистим память (лупа) // End Zoom ########################################################################################################### */ if ($_POST['create_thumb'] == "1") { // продолжаем создание миниатюры // накладываем надпись if ($_POST['watermark_thumb'] == "1") { // инфа } if ($_POST['watermark_thumb'] == "2") { // лупа } if ($_POST['watermark_thumb'] == "3") { // без надписи createThumb($imgf, $pictype, $thbf, $tsize, $tsize); @chmod($thbf,0666); include("thumbnail.php"); } } else { // юзер снял галку, значит include("picture.php"); } // если неверный формат файла } else { echo "<p align=center><font size=4 color=red>Формат файла не распознан!</font></p>"; include("footer.php"); exit; } include("footer.php"); ?>
Axel G,если я тебя правильно понял,то: Создаешь пустой бокс,чуть больше картинки. Потом записываешь в бокс 1 картинку,сверху еще 1,но с смещением. м? PHP: if ($sourcetype==".jpg" || $sourcetype==".jpeg"){ $src_img=imagecreatefromjpeg($name); } if ($sourcetype==".png"){ $src_img=imagecreatefrompng($name); } if ($sourcetype==".gif"){ $src_img=imagecreatefromgif($name); } Про elseif слышал? PHP: if ($sourcetype==".jpg" || $sourcetype==".jpeg") { imagejpeg($dst_img,$filename,$thumb_q); } elseif ($sourcetype==".png") { imagepng($dst_img,$filename); } elseif ($sourcetype==".gif") { imagegif($dst_img,$filename); } Слышал,но это дурной тон. Надо ограничивать все это дело в {} False: PHP: $image = imagecreatefrompng("$dst_img"); True: PHP: $image = imagecreatefriopmg($dst_img); Короче,жутки у тебя говнокод.
.::f-duck::., это было в основе кода (из одного скрипта взял, он тупо создавал превьюшки и все) хотя сейчас вроде работает безотказно = ) А можешь хорошим манерам по коду подучить, я как могу, так и мыкаюсь, можно сказать практикуюсь сразу же. elseif - это да моя самопись уже. Спасиб те за критику, для меня сейчас это очень важно. И, соглашусь, с тем что я неопытный хомячок = ) А сам скрипт пишу для себя, стало интересно разобраться как это все работает, да и к тому же неплохая практика, соорудить персональный фотохостинг, вещь незаменимая оказывается, а доверия нынешним уж никакого нет. А так уже много чего сделал, осталось с превьюшками разобраться до конца, и еще бы хотелось такую штуку как на айпикчер, снизу превью инфа отображается, только оригинального изображения, а не миниатюрки = ) Ввиду всего, хотел бы вам всем сказать большое спасибо, что помогаете разобраться новичку, а тем более резко критикуете.
Axel G,есть несколько стандартов: http://pear.php.net/manual/en/standards.php http://framework.zend.com/manual/en/coding-standard.html http://www.dagbladet.no/development/phpcodingstandard/ http://www.evolt.org/article/PHP_coding_guidelines/18/60247/ Большинство выбирает или Пеар или Зенд. Тут самому решать.
помогите плиз с парочкой вопросов: 1. как сделать отдачу браузеру данных по мере работы скрипта ? [например так работает сервис http://scan.0day.in:8080 - скрипт работает n минут, но новые данные в окне постоянно появляются] 2. как сделать отмену уже "выведенных" данных ? [допустим у меня инклуд в логах, которые имеют размер 10 метров. каким кодом/способом можно отменить вывод этих данных [что-то по типу очистки буфера] ? ]
=> спасибо, с первым пунктом помог flush(); со вторым пунктом не одна из приведенных функций не прокатила есть иные варианты ?
.::f-duck::., сенкс, ток http://pear.php.net/manual/ru/standards.php Перепишу по правилам, большое спасибо! Я правильно понимаю что для работы с стандартом зенд, необходим установленный зенд-фреймворк (он входит в дефолтный дистриб пхп, или надо ставить дополнительно??), а для пеар необходим лишь простой дистриб пхп?? Эмм, честно сказать понятия не имею. ---------------------------------------------------- Это получается вместо, например include("thumbnail.php"); надо прописывать include_once("thumbnail.php"); или проще include_once "thumbnail.php"; PS: обновил код выше в соответствии с стандартом.
Собираюсь учить php, посоветуйте актуальную версию: 5.3 или же 5.2? Какие у них достоинства и минусы, различия?
вот все отличия http://php.net/ChangeLog-5.php странно что этот вопрос интересует человека, который только собирается учить пхп)) что касается посоветовать версию... зависит от того где этот код должен будет работать. Хостинги не спешат обновлять версии пхп. Но лично я все равно ставлю себе последние версии... так как больше работаю со скриптами, а не с сайтами.
=> ты даешь очень туманные ответы. можно поконкретнее, с примером конкретного кода ? чтоб понятно было что я имею в виду. файл: мне нужно "выкинуть" весь мусор до моего кода и вернуть только то, что вернет мой код +, возможно, мусор, который идет после кода, но его тоже было б хорошо убрать.