1

Тема: Помогите люди добрые с генерацией изображения со случайным кодом

я скачал скрипт регистрация пользователей http://ruseller.com/lessons/les369/test4.rar
установил все работает отлично, только там код просто меняется местами например первый раз выдал fa5b2b, а во второй раз те же цифры и буквы только в другом порядке 5bbf2a. Если ты вводишь в поле в любом порядке эти символы то регистрируется.
я в коде поменял вместо минуты, поставил секунды

я поменял это в my_codegen.php и save_user.php

function generate_code() //генерируем код
{
   
    $hours = date("H"); // час       
    $minuts = substr(date("s"), 0 , 1);//     ВОТ ЗДЕСЬ ВМЕСТО "s" СТОЯЛО "H" Я их поменял
    $mouns = date("m");    // месяц             
    $year_day = date("z"); // день в году

    $str = $hours . $minuts . $mouns . $year_day; //создаем строку
    /*$num = rand(11111, 99999);*/
    $str = md5(md5($str)); //дважды шифруем в md5
    $str = strrev($str);// реверс строки
    $str = substr($str, 3, 6); // извлекаем 6 символов, начиная с 3
    // Вам конечно же можно постваить другие значения, так как, если взломщики узнают, каким именно способом это все генерируется, то в защите не будет смысла.
   

    $array_mix = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
    srand ((float)microtime()*100000);
    shuffle ($array_mix);
    //Тщательно перемешиваем, соль, сахар по вкусу!!!
    return implode("", $array_mix); // объединяем все значения массива в строку и возвращаем
}

теперь у меня код на картинка меняется каждый раз по разному, но когда вводишь код в поле мне выводить сообщение ВЫ ВВЕЛИ НЕВЕРНО КОД С КАРТИНКИ

Сообщение добавлено Fri Feb 12 03:33:58 2010
помогите пожалуйста Чайнику это мне очень важно, заранее спасибо

2

Re: Помогите люди добрые с генерацией изображения со случайным кодом

Этот пример выведет в коде 6 цифр и сохранит их хеш в cookie.

В my_codegen.php замените функцию:

function generate_code() {
    $rand = mt_rand(100000, 999999);
    setcookie('code', md5($rand . $_SERVER['REMOTE_ADDR']));
    return $rand;
}

В save_user.php замените функцию:

function chec_code($code) {
    $code = trim($code);//удаляем пробелы

    if (isset($_COOKIE['code']) && md5($code . $_SERVER['REMOTE_ADDR']) === $_COOKIE['code']) {
        return true;
    } else return false;
}

3

Re: Помогите люди добрые с генерацией изображения со случайным кодом

Спасибо за ответ, но не помогло. Опять выводить сообщение Вы ввели неверно код с картинки

4

Re: Помогите люди добрые с генерацией изображения со случайным кодом

bekets
Попробуйте отладить и найти ошибку.

Цифры выводятся на картинке? Куки записываются?

5

Re: Помогите люди добрые с генерацией изображения со случайным кодом

Цифры выводятся но незнаю записываются ли куки. Незнаю как проверить это

6

Re: Помогите люди добрые с генерацией изображения со случайным кодом

bekets
В любом скрипте на том же хосте выведите куки таким образом:

<?php
print_r($_COOKIE);
?>

7

Re: Помогите люди добрые с генерацией изображения со случайным кодом

Спасибо Hanut
там в обеих файлах стояли функция generate_code() поэтому когда я вставлю секунды он на каждом генерируется по разному и из за этого выходит ошибка.  Я убрал функцию generate_code() на файле save_user.php и вызвал его с сессии.
Все проблему решил, огромное спасибо тебе Hanut