[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Перебору пароля от чего?
     
  2. Deani

    Deani New Member

    Joined:
    9 Nov 2009
    Messages:
    49
    Likes Received:
    1
    Reputations:
    0
    как бы цикл.. начиная с 000 и заканчивая fff
     
  3. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    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_length0'',$charset,$charset_length); 
    echo 
    "Пароль не найден(\r\n"
    ?>
     
    #15483 Pashkela, 12 Jun 2010
    Last edited: 12 Jun 2010
  4. Axel G

    Axel G New Member

    Joined:
    28 Jan 2009
    Messages:
    86
    Likes Received:
    3
    Reputations:
    3
    Здравствуйте всем, появился вопрос, как сделать наложение картинки на картинку (своеобразный ватермарк)??

    Скрипт аплоада сам создает такое изображение
    [​IMG]
    Если юзер выбирает чекбокс, то надо на превью наложить [​IMG] чтобы в итоге получить
    [​IMG]

    Вот клиентская часть
    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. Ширина миниатюрки также задается пользователем.
     
  5. #Wolf#

    #Wolf# Elder - Старейшина

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    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-$lo00$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-$lo00$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);
     
    #15485 #Wolf#, 13 Jun 2010
    Last edited: 13 Jun 2010
  6. Axel G

    Axel G New Member

    Joined:
    28 Jan 2009
    Messages:
    86
    Likes Received:
    3
    Reputations:
    3
    Уфф, что-то я в конец запутался, подогнать никак не получается = (

    Выкладываю весь исходный код скрипта [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");

    ?>
     
    #15486 Axel G, 13 Jun 2010
    Last edited: 16 Jun 2010
  7. .::f-duck::.

    .::f-duck::. Member

    Joined:
    30 May 2009
    Messages:
    343
    Likes Received:
    32
    Reputations:
    7
    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);
    Короче,жутки у тебя говнокод.
     
    #15487 .::f-duck::., 13 Jun 2010
    Last edited: 13 Jun 2010
  8. Axel G

    Axel G New Member

    Joined:
    28 Jan 2009
    Messages:
    86
    Likes Received:
    3
    Reputations:
    3
    .::f-duck::., это было в основе кода (из одного скрипта взял, он тупо создавал превьюшки и все) хотя сейчас вроде работает безотказно = ) А можешь хорошим манерам по коду подучить, я как могу, так и мыкаюсь, можно сказать практикуюсь сразу же. elseif - это да моя самопись уже. Спасиб те за критику, для меня сейчас это очень важно. И, соглашусь, с тем что я неопытный хомячок = )

    А сам скрипт пишу для себя, стало интересно разобраться как это все работает, да и к тому же неплохая практика, соорудить персональный фотохостинг, вещь незаменимая оказывается, а доверия нынешним уж никакого нет. А так уже много чего сделал, осталось с превьюшками разобраться до конца, и еще бы хотелось такую штуку как на айпикчер, снизу превью инфа отображается, только оригинального изображения, а не миниатюрки = )

    Ввиду всего, хотел бы вам всем сказать большое спасибо, что помогаете разобраться новичку, а тем более резко критикуете.
     
    #15488 Axel G, 13 Jun 2010
    Last edited: 13 Jun 2010
  9. .::f-duck::.

    .::f-duck::. Member

    Joined:
    30 May 2009
    Messages:
    343
    Likes Received:
    32
    Reputations:
    7
    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/
    Большинство выбирает или Пеар или Зенд.
    Тут самому решать.
     
  10. DrakonHaSh

    DrakonHaSh Elder - Старейшина

    Joined:
    16 Apr 2008
    Messages:
    118
    Likes Received:
    29
    Reputations:
    24
    помогите плиз с парочкой вопросов:

    1. как сделать отдачу браузеру данных по мере работы скрипта ? [например так работает сервис http://scan.0day.in:8080 - скрипт работает n минут, но новые данные в окне постоянно появляются]

    2. как сделать отмену уже "выведенных" данных ? [допустим у меня инклуд в логах, которые имеют размер 10 метров. каким кодом/способом можно отменить вывод этих данных [что-то по типу очистки буфера] ? ]
     
  11. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    Функции управления выводом
    http://www.softtime.ru/group/id_group=12
     
  12. DrakonHaSh

    DrakonHaSh Elder - Старейшина

    Joined:
    16 Apr 2008
    Messages:
    118
    Likes Received:
    29
    Reputations:
    24
    =>
    спасибо, с первым пунктом помог flush();

    со вторым пунктом не одна из приведенных функций не прокатила :(
    есть иные варианты ?
     
  13. Axel G

    Axel G New Member

    Joined:
    28 Jan 2009
    Messages:
    86
    Likes Received:
    3
    Reputations:
    3
    .::f-duck::., сенкс, ток http://pear.php.net/manual/ru/standards.php Перепишу по правилам, большое спасибо!

    Я правильно понимаю что для работы с стандартом зенд, необходим установленный зенд-фреймворк (он входит в дефолтный дистриб пхп, или надо ставить дополнительно??), а для пеар необходим лишь простой дистриб пхп??

    Эмм, честно сказать понятия не имею.

    ----------------------------------------------------

    Это получается вместо, например include("thumbnail.php"); надо прописывать include_once("thumbnail.php"); или проще include_once "thumbnail.php";

    PS: обновил код выше в соответствии с стандартом.
     
    #15493 Axel G, 14 Jun 2010
    Last edited: 14 Jun 2010
  14. FastFood

    FastFood New Member

    Joined:
    8 Jun 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Собираюсь учить php, посоветуйте актуальную версию: 5.3 или же 5.2? Какие у них достоинства и минусы, различия?
     
  15. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    вот все отличия http://php.net/ChangeLog-5.php

    странно что этот вопрос интересует человека, который только собирается учить пхп))

    что касается посоветовать версию... зависит от того где этот код должен будет работать. Хостинги не спешат обновлять версии пхп.
    Но лично я все равно ставлю себе последние версии... так как больше работаю со скриптами, а не с сайтами.
     
    #15495 phpdreamer, 14 Jun 2010
    Last edited: 14 Jun 2010
    1 person likes this.
  16. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    два:
    1)AJAX
    2)перезагрузка страницы
     
  17. DrakonHaSh

    DrakonHaSh Elder - Старейшина

    Joined:
    16 Apr 2008
    Messages:
    118
    Likes Received:
    29
    Reputations:
    24
    =>
    ты даешь очень туманные ответы. можно поконкретнее, с примером конкретного кода ?

    чтоб понятно было что я имею в виду. файл:
    мне нужно "выкинуть" весь мусор до моего кода и вернуть только то, что вернет мой код +, возможно, мусор, который идет после кода, но его тоже было б хорошо убрать.
     
  18. roxblnfk

    roxblnfk Elder - Старейшина

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    в начале мусора ob_start(), после ob_clean()
     
  19. Axel G

    Axel G New Member

    Joined:
    28 Jan 2009
    Messages:
    86
    Likes Received:
    3
    Reputations:
    3
    Домашний Веб-сервер. Что выбрать Apache или IIS ??
     
  20. Dark_cracker

    Dark_cracker Member

    Joined:
    29 May 2009
    Messages:
    73
    Likes Received:
    8
    Reputations:
    1
    unset() если правильно понял
     
Thread Status:
Not open for further replies.