Пятница, 2025-06-20, 4:39 PM
Приветствую Вас Гость | RSS
Главная | PHP Скрипт – защитный код | Регистрация | Вход
Меню сайта
Вход на сайт
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Программирование

    PHP Скрипт – защитный код

     

     

    В этой статье я покажу, как устроен скрипт отображающий картинку – защитный код, а так же принцип работы этого php скрипта. Данного типа скрипт еще имеет название капча (CAPTCHA).

    Сначала создаем php файл, который будит создавать картинку. Подробный принцип как создать картинку с помощью PHP я показал в той статье.

    Назовем этот файл, допустим, code.php и смело, копируем в него этот код:

    <?php
    session_start();
    $code= array_merge( range('A', 'H'), array('K', 'M', 'N', 'P'), range('R', 'V'), range('X', 'Z'), range('1', '9'));
    $_SESSION['code'] ='';
    for ($i = 0; $i < 3; $i++)
    $_SESSION['code'] .= $code[array_rand($code)];

    $im = imagecreate(70, 20);
    imagecolorallocate($im, 255, 255, 255);
    $color = imagecolorallocate($im, 0, 125, 0);
    imagettftext($im,16,0,6,17, $color, "oreos.ttf", $_SESSION['code']); 
    header('Content-Type: image/png');
    imagepng($im);
    ?>

    Сразу хочу обратить ваше внимание на 2 момента:

    Первый. Функция session_start(); должна находиться самой-самой первой строкой. В противном случае вам выдаст ошибку.
    Второй. Обратите внимание на строку:

    imagettftext($im,16,0,6,17, $black, "/oreos.ttf", $_SESSION['code']);

    Само название функции говорит уже, что в ней присутствует не встроенный TrueType шрифт, а тот шрифт, который мы сами загрузили. Это очень хорошо. Возьмите любой, понравившийся вам шрифт, поместите его в ту папку, где будет пхп файл с этим кодом. И в место oreos.ttf впишите название своего шрифта.

    С моим шрифтом, картинки имеют такой вид:

    Как на мой взгляд очень симпатичные.

    И еще, лично мое мнение, достаточно 3 знаков хорошо читабельных символов для защиты от злостных ботов-спамеров. В моем случае, вероятность угадать код составляет 1 к 27000. Если много символов и они плохо читаются, то это сильно раздражает пользователей, а мы ведь этого не хотим :).

    Второй шаг. Создаем php-файл, например, register.php где у нас и будит наша страница, на которой стоит защита. И так же смело копируем туда этот php код:

    <?php
    session_start();
    ?>
    <img src="code.php" />
    <form method="post">
    Введите число: <input type="text" name="getСode">
    <input name="sub" type=submit value="Ок!">
    </form>
    <?php
    if(isset($_POST['sub']))
    {
    if($_POST['getСode'] == $_SESSION['code'])
    {
    echo "Верно!";
    }
    else
    {
    echo "Число введено неверно!";
    }
    }
    ?>

    И опять я повторяю, что функция session_start(); должна находиться перед любым другим кодом. Простым словом, она должна стоять первой строкой.

    Функция session_start(); создает сессию (или сеанс) в котором содержиться суперглобальный массив $_SESSION и через куки передает $_SESSION всем скриптам где есть сессия session_start();

    uCozCopyright MyCorp © 2025