Тема: phpMyAdmin и CAPTCHA
Помогите прикрутить CAPTCHA к phpMyAdmin по авторизации cookie
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форум PHP-MyAdmin.RU → Настройка phpMyAdmin → phpMyAdmin и CAPTCHA
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Помогите прикрутить CAPTCHA к phpMyAdmin по авторизации cookie
viktor6
Если проблема в том, что подбирают к phpMyAdmin пароль, то лучшим решением будет закрыть каталог с помощью .htaccess
Hanut
Шеф сказал поставит CAPTCHA и не хочет не чего другого слышать
viktor6
Если у вас есть какие-то наработки, то покажите где возникли трудности, может смогу что-нибудь подсказать. Но уже готовых решений я не знаю.
Hanut
Особых наработок нету, есть то, что я пробовал.
Использовал Kcaptha http://www.captcha.ru/kcaptcha/
phpmyadmin размещаю в корне веб-сервера
Потом нашол что поля (логин, пароль) на авторизацию по методу cookie находятся в файле /libraries/auth/cookie.auth.lib.php
И вот после строчки запроса логина и пароля вставил код (270 строка):
<div class="item">
<label><?php echo $GLOBALS['strKCaptcha']; ?></label>
<input type="text" name="keystring" size="8">
<img src="./kcaptcha/?<?php echo session_name()?>=<?php echo session_id()?>">
</div>
* Где $GLOBALS['strKCaptcha'] - переменная языкового файла (в языковый файл добавил $strKCaptcha = 'Введите код с картинки'; )
Продолжаем по файлу /libraries/auth/cookie.auth.lib.php
После строк где проверка коректности логина и пароля, добавил (стока 521):
//kcaptcha
if (isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){
return true;
}else{
return false;
}
unset($_SESSION['captcha_keystring']);
В результате капча не работает: авторизация проходит без участия капчи...
Увадаемые форумчане, Hanut, буду рад за любую помощь!
Заранее спасибо!
ashasmod
По сути все правильно вы делали при редактировании /libraries/auth/cookie.auth.lib.php. Попробуйте простой вариант, который отправил вам на почту, при желании его можно существенно улучшить, но и сейчас он вполне рабочий. Папку img с файлами img.php и arialbd.ttf, положите в корень phpMyAdmin.
Поле ввода с динамичной картинкой кода (270 строка).
<div class="item">
<label>Test</label>
<input type="text" name="keystring" size="8">
<img src="img/img.php?" style="cursor: pointer;" alt="" onclick="javascript:this.src+=Math.ceil(Math.random()*10);" />
</div>
Проверка. Строка 455. Перед:
if (! empty($_REQUEST['pma_username'])) {
if (isset($_POST['keystring']) && md5($_POST['keystring']) != $_SESSION['code_session']) {
return false;
}
После того, как внесете изменения в скрипт, обязательно почистите кеш и куки браузера.
Генерация картинки. Файл /img/img.php
<?php
header('Content-Type: image/png');
header('Cache-control: no-cache, no-store');
session_name('phpMyAdmin');
session_start();
$im = imagecreatetruecolor(120, 30);
$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);
$font = 'arialbd.ttf';
imagefilledrectangle($im, 0, 0, 119, 29, $white);
$code = '';
$j = 10;
for($i = 0; $i < 5; $i++) {
$number = mt_rand(0, 9);
$color = imagecolorallocate($im, mt_rand(0, 200), mt_rand(0, 200), mt_rand(0, 200));
imagettftext($im, mt_rand(15, 25), mt_rand(-20, 20), $j, 25, $color, $font, $number);
$j += mt_rand(15, 23);
$code .= $number;
}
while($i < 500) {
imagesetpixel($im, mt_rand(0, 120), mt_rand(0, 30), $black);
$i++;
}
$_SESSION['code_session'] = md5($code);
imagepng($im);
imagedestroy($im);
exit();
?>
Hanut
Спасибо за помошь, все работает!
Благодаря вам уже есть готовое решение!
А дальше можно усовершенствовать, по желанию!
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форум PHP-MyAdmin.RU → Настройка phpMyAdmin → phpMyAdmin и CAPTCHA
Форум работает на PunBB, при поддержке Informer Technologies, Inc
Currently installed 7 official extensions. Copyright © 2003–2009 PunBB.