Если быть проще - то создают массив в котором одно из значений путь к картинке, второе ответ на картинку. Рандомно выбирают элемент массива - клиенту показывают картинку, а в сессию записывают ответ. Затем сверяют ответ от клиента со значением сессии
за грамматику "3-" можно. создаёшь переменную с рандом буквами. создаёшь функцию, создающую капчу. функцию выполняешь с переменной, получаешь картинку показываешь картинку текстовое поле содержит ответ, его получаешь при нажатии на кнопку если значение текст. поля равно значению переменной, то пускать, else - ошибку и повтор