Собственно вопрос, как грамотно организовать работу с данными, есть допустим 2 файла: img.php - картинка с капчой form.php - форма в которой будет: Код (PHP): echo '<img src="img.php" />'; Мне надо img.php передать код, который должен быть на картинке 1. просто записать в сессию: Код (PHP): $_SESSION['capcha_code'] = $capcha_code; не прокатит, потому что, а если открываю несколько вкладок, выходит происходит перезапись. по этому надо организовывать что бы запись происходила в массив. 2. записать в массив, как то так: Код (PHP): $_SESSION['capcha_code']['sfdgj'] = $capcha_code; а картинке передать откуда надо взять информацию, что то типа: Код (PHP): echo '<img src="img.php?from=sfdgj" />'; тоже не совсем конает, потому что вредитель может переходить по ссылке img.php?from=sfdgj много раз, ему каждый раз будет выводиться один и тот же код, с разными искажениями и так может быть распознана капча. 3. ob_start() тоже не катит, помнится я пытался сделать картинку на WP, она почему то делалась с ошибкой, при этом все тоже самое без WP работало. 4. я тут видел что кто то шифровал md5 и записывал в куки, но это чепуха. 5. так же как вариант, можно не передавать код, а он будет сам генерироваться в картинке и там же записываться в сессию, опять же возникает вопрос, как будет картинка узнавать длину и словарь. А картинке просто передавать передавать куда записывать в сессию, типа: Код (PHP): echo '<img src="img.php?to=sfdgj" />'; Код (PHP): $_SESSION['capcha_code'][ $_GET['to'] ] = $capcha_code; Кто какие вариант, а точнее алгоритмы может предложить.
?to=sfdgj (+ к форме добавить hidden input с этим кодом, ну и смотри ещё в сторону CSRF) может to (случайное число и текст ) выдавать при обновлении страницы + дата когда истекает в сессии (удалять если ввёл правильно), по этому если злоумышленник один раз введёт капчу правильно, ты её из сессии удаляешь, всё, больше ей не воспользуешься.