1. Bitcoin адрес для пожертвований: 1dapfB97R98wg8J3hknWpMDJ7P61CWjNn
    Скрыть объявление
  2. Участникам форума доступна Skype конференция. Присоединяйтесь!
  3. Наши основные группы и каналы: VK, Twitter. Подписывайтесь!
  4. Форум работает за счет ваших пожертвований, поэтому у нас нет внешней рекламы.
    Пожертвовать рубль на развитие форума Вы можете по ссылке.
  5. Скрыть объявление
Скрыть объявление
О том как быстро
набрать нужное
число сообщений
написано здесь
Пожертвовать рубль
на развитие
форума можно тут.

set.php

Тема в разделе "Багрепорт", создана пользователем kupidon87, 3 фев 2015.

  1. kupidon87 Старейшина

    Репутация

    105 / 468


    более мение я понел одно на PHP 5.3
    Код (Text):
    1. session_register('securityCode');
    ЯВЛЯЕТСЯ ОШИБКОЙ НА PHP 5.3 ПЕРЕД НАЧАЛОМ УБРАТЬ session_register('securityCode'); ПО ТОЙ ПРИЧИНЕ ЧТО ЧИТАТЬ НИЖЕ

    и как я решил эхту проблему на PHP 5.3 прошу любить и жаловать.


    PHP:
    1. <?PHP
    2. // Настройки
    3.  
    4.    $SECURITY_IMAGE_TYPE = 'GIF';     // Возможные форматы: GIF, JPEG, PNG
    5.    $SECURITY_WIDTH = 130;            // Ширина изображения
    6.    $SECURITY_HEIGHT = 30;            // Высота изображения
    7.    $SECURITY_NUM_GENSIGN = 5;        // Количество символов, которые нужно набрать
    8.  
    9.    $EXT = strtoupper(@$_GET['ext']);
    10.    if($EXT == 'GIF' || $EXT == 'JPEG' || $EXT == 'PNG') $SECURITY_IMAGE_TYPE = $EXT;
    11.    if(is_numeric(@$_GET['width']) && $_GET['width']>100 && $_GET['width']<500) $SECURITY_WIDTH = $_GET['width'];
    12.    if(is_numeric(@$_GET['height']) && $_GET['height']>100 && $_GET['height']<500) $SECURITY_HEIGHT = $_GET['height'];
    13.    if(is_numeric(@$_GET['qty']) && $_GET['qty']>2 && $_GET['qty']<10) $SECURITY_NUM_GENSIGN = $_GET['qty'];
    14.  
    15. // Ядро
    16.  
    17.    session_register('securityCode');
    18.  
    19.    $SECURITY_FONT_SIZE = intval($SECURITY_HEIGHT/(($SECURITY_HEIGHT/$SECURITY_WIDTH)*7));
    20.    $SECURITY_NUM_SIGN = intval(($SECURITY_WIDTH*$SECURITY_HEIGHT)/150);
    21.    $CODE = array();
    22.    $LETTERS = array('0','1','2','3','4','5','6','7','8','9');
    23.    $FIGURES = array('50','70','90','110','130','150','170','190','210');
    24.  
    25. // Создаем полотно
    26.  
    27.    $src = imagecreatetruecolor($SECURITY_WIDTH,$SECURITY_HEIGHT);
    28.  
    29. // Заливаем фон
    30.  
    31.    $fon = imagecolorallocate($src,255,255,255);
    32.    imagefill($src,0,0,$fon);
    33.  
    34.  
    35.  
    36.  
    37. // Если папка шрифтов пуста
    38.  
    39.        for($i = 0; $i<$SECURITY_NUM_GENSIGN; $i++)
    40.        {
    41.  
    42.         // Ориентир
    43.  
    44.            $h = 1;
    45.  
    46.         // Рисуем
    47.  
    48.            $color = imagecolorallocatealpha($src,$FIGURES[rand(0,sizeof($FIGURES)-1)],$FIGURES[rand(0,sizeof($FIGURES)-1)],$FIGURES[rand(0,sizeof($FIGURES)-1)],rand(10,30));
    49.            $letter = $LETTERS[rand(0,sizeof($LETTERS)-1)];
    50.            $x = (empty($x)) ? $SECURITY_WIDTH*0.1 : $x + ($SECURITY_WIDTH*0.8)/$SECURITY_NUM_GENSIGN+rand(0,$SECURITY_WIDTH*0.01);
    51.            $y = ($h == rand(1,2)) ? (($SECURITY_HEIGHT*1)/4) + rand(0,$SECURITY_HEIGHT*0.1) : (($SECURITY_HEIGHT*1)/4) - rand(0,$SECURITY_HEIGHT*0.1);
    52.  
    53.         // Запоминаем
    54.  
    55.            $CODE[] = $letter;
    56.            if($h == rand(0,10)) $letter = strtoupper($letter);
    57.  
    58.         // Пишем
    59.  
    60.            imagestring($src,9,$x,$y,$letter,$color);
    61.        }
    62.  
    63. // Получаем код
    64.  
    65.    $_SESSION['securityCode'] = implode('',$CODE);
    66.  
    67. // Печать
    68.  
    69.    if($SECURITY_IMAGE_TYPE == 'PNG')
    70.    {
    71.        header ("Content-type: image/png");
    72.        imagepng($src);
    73.    }
    74.    elseif($SECURITY_IMAGE_TYPE == 'JPEG')
    75.    {
    76.        header ("Content-type: image/jpeg");
    77.        imagejpeg($src);
    78.    }
    79.    else
    80.    {
    81.        header ("Content-type: image/gif");
    82.        imagegif($src);
    83.    }
    84.  
    85.    imagedestroy($src);
    86. ?>

    PHP:
    1. <?PHP session_start();
    2. // Настройки
    3.   $SECURITY_IMAGE_TYPE = 'gif';     // Возможные форматы: GIF, JPEG, PNG
    4.   $SECURITY_WIDTH = 130;            // Ширина изображения
    5.   $SECURITY_HEIGHT = 30;            // Высота изображения
    6.   $SECURITY_NUM_GENSIGN = 5;        // Количество символов, которые нужно набрать
    7. // $EXT = isset($_GET['ext']) ? strtolower($_GET['ext']) 'gif';
    8.   if($EXT == 'gif' || $EXT == 'jpeg' || $EXT == 'png')
    9.         $SECURITY_IMAGE_TYPE = $EXT;
    10.   if(isset($_GET['width']) && is_numeric($_GET['width']) && $_GET['width']>100 && $_GET['width']<500) $SECURITY_WIDTH = $_GET['width'];
    11.   if(isset($_GET['height']) && is_numeric($_GET['height']) && $_GET['height']>100 && $_GET['height']<500) $SECURITY_HEIGHT = $_GET['height'];
    12.   if(isset($_GET['qty']) && is_numeric($_GET['qty']) && $_GET['qty']>2 && $_GET['qty']<10) $SECURITY_NUM_GENSIGN = $_GET['qty'];
    13. // Ядро
    14.   $_SESSION[' securityCode ']=$securityCode;
    15.   $SECURITY_FONT_SIZE = intval($SECURITY_HEIGHT/(($SECURITY_HEIGHT/$SECURITY_WIDTH)*7));
    16.   $SECURITY_NUM_SIGN = intval(($SECURITY_WIDTH*$SECURITY_HEIGHT)/150);
    17.   $CODE = array();
    18.   $LETTERS = array('0','1','2','3','4','5','6','7','8','9');
    19.   $FIGURES = array('50','70','90','110','130','150','170','190','210');
    20. // Создаем полотно
    21.   $src = imagecreatetruecolor($SECURITY_WIDTH,$SECURITY_HEIGHT);
    22. // Заливаем фон
    23.   $fon = imagecolorallocate($src,255,255,255);
    24.   imagefill($src,0,0,$fon);
    25. // Если папка шрифтов пуста
    26.       for($i = 0; $i<$SECURITY_NUM_GENSIGN; $i++)
    27.       {
    28.        // Ориентир
    29.           $h = 1;
    30.        // Рисуем
    31.           $color = imagecolorallocatealpha($src,$FIGURES[mt_rand(0,sizeof($FIGURES)-1)],$FIGURES[mt_rand(0,sizeof($FIGURES)-1)],$FIGURES[mt_rand(0,sizeof($FIGURES)-1)],mt_rand(10,30));
    32.           $letter = $LETTERS[mt_rand(0,sizeof($LETTERS)-1)];
    33.           $x = (empty($x)) ? $SECURITY_WIDTH*0.1 : $x + ($SECURITY_WIDTH*0.8)/$SECURITY_NUM_GENSIGN+mt_rand(0,$SECURITY_WIDTH*0.01);
    34.           $y = ($h == mt_rand(1,2)) ? (($SECURITY_HEIGHT*1)/4) + mt_rand(0,$SECURITY_HEIGHT*0.1) : (($SECURITY_HEIGHT*1)/4) - mt_rand(0,$SECURITY_HEIGHT*0.1);
    35.        // Запоминаем
    36.           $CODE[] = $letter;
    37.           if($h == mt_rand(0,10)) $letter = strtoupper($letter);
    38.        // Пишем
    39.           imagestring($src,9,$x,$y,$letter,$color);
    40.       }
    41. // Получаем код
    42.   $_SESSION['securityCode'] = implode('',$CODE);
    43. // Печать
    44.         $func = 'image' . $SECURITY_IMAGE_TYPE;
    45.         header('Content-type: image/' . $SECURITY_IMAGE_TYPE);
    46.         $func($src);
    47.         imagedestroy($src);

    Это вам чтоб в будощем не искали=)


  2. RoBoT Старейшина

    Репутация

    176 / 57


    На самом деле не верный подход.
    метод session_register может использоваться не только в файле sec.php
    Потому что данный метод может использоваться еще где-то в движке.
    Потому лучше добавить где-нибудь в файле функций следующий код
    Код (Text):
    1.  
    2. if(!function_exists('session_register'))
    3. {
    4. function session_register()
    5. {
    6. $args = func_get_args();
    7. foreach ($args as $key)
    8. {
    9. $_SESSION[$key] = $GLOBALS[$key];
    10. }
    11. }
    12. }
    13.  
    Код нужен для обратной совместимости, дабы избежать проблем в будущем при работе системы.

     
  3. kupidon87 Старейшина

    Репутация

    105 / 468


    Возможно но я проверял, свой вариант и прекрасно работает) без проблем) но все равно спасибо, и то заметь я писал что:
    ЯВЛЯЕТСЯ ОШИБКОЙ НА PHP 5.3 ПЕРЕД НАЧАЛОМ УБРАТЬ session_register('securityCode'); ПО ТОЙ ПРИЧИНЕ ЧТО ЧИТАТЬ НИЖЕ



     
  4. RoBoT Старейшина

    Репутация

    176 / 57


    Ну я в общем говорил, из-за не совместимости пхп 5.3 перекорячивать все двигло не вариант, потому нужен данный костыль для создания обратной совместимости.