Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Превращаем мыло в картинку (защита от ботов), ЗАмена емайл ссылки на картинку  
:(
    Опции темы
rubyclub
  Дата 11.7.2007, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 26.2.2007
Где: Odessa/Ukraine

Репутация: нет
Всего: 2



На днях поступила задача сделать защиту емайлов на сайте, а именно превращать все емайлы в картинки.
По этому приведу вам пример кода ниже думаю что он нагладно покажет вам что и как делается как только вы запустите его на сайте. 

Но в двух словах 

Сначала ищем все емайл ссылки и преобразовываем их в картинки потомы назад парсим ссылки на картинки. и в результате получаем на странице вместо емайл ссылок просто картинки с емайлами и видно и защищено. 

Код

<?php

if(empty($_GET['sid'])){
    //write html for image
    $mail='[email protected]';
    $text=base64_encode(serialize($mail));
    echo '<img src="imgmail.php?sid='.$text.'" /><br/>';
}else{
    //show coded mail image
    $text=$_GET['sid'];
    header("Content-type: image/gif");    
    echo mail_to_image($text);
}

function mail_to_image($ctext='no mail'){
    $text=unserialize(base64_decode($ctext));
    $size=strlen($text)*8;
    $im = @imagecreate($size, 20) or die("Cannot Initialize new GD image stream");
    $background_color = imagecolorallocate($im, 255, 255, 255);
    $text_color = imagecolorallocate($im, 0, 0, 0);
    imagestring($im,3, 5, 5,  $text , $text_color);
    return imagegif($im);
}
?> 


Будут вопросы или коментарии пишите.
Или заходите ко мне на форум.

Добавлено через 2 минуты
Приношу извинения код был не полон и немного не соответствовал описанию по этому добавлю полный код.
Код

<?php

if(empty($_GET['sid'])){
        //write html for image

echo $body='<div>
<h3>source page</h3>
<a href="mailto:[email protected]">[email protected]</a>
<a href="mailto:[email protected]">[email protected]</a>
<a href="asdasd" >link</a></div>';

//extract all mails
preg_match_all("/<a[^>]+?href\s*=\s*[\"']?mailto:([^'\" >]+?)[ '\"]?\s*>/i",$body, $mails);

        while($mail=array_shift($mails[1])){
        $text=base64_encode(serialize($mail));
                $img_mail= '<img src="imgmail.php?sid='.$text.'" />';

        $body = preg_replace("/<a[^>]+?href\s*=\s*[\"']?mailto:(".$mail.")[ '\"]?\s*>(.*)<\/a>/i", $img_mail, $body);
        }

        echo '<h3>New body<h3>'.$body;
}else{
        //show coded mail image
        $text=$_GET['sid'];
        header("Content-type: image/gif");
        echo mail_to_image($text);
}

function mail_to_image($ctext='no mail'){
        $text=unserialize(base64_decode($ctext));
    $size=strlen($text)*8;
    $im = @imagecreate($size, 20) or die("Cannot Initialize new GD image stream");
    $background_color = imagecolorallocate($im, 255, 255, 255);
    $text_color = imagecolorallocate($im, 0, 0, 0);
    imagestring($im,3, 5, 5,  $text , $text_color);
    return imagegif($im);
}
?>


PM MAIL WWW ICQ   Вверх
Ashen
Дата 12.7.2007, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 1.9.2006

Репутация: нет
Всего: нет



Вопрос - насколько сие ресурсоемко?
Где это применимо?  smile 
Если это на форуме или каталоге делать - бедный сервер - имхо проще заранее генерить картинки.
Просто делать это в реальном времени да еще и на сайте с большой посещаемостью - обрекать сервер на смерть. smile 
--------------------
Хочешь помочь новичку - делай вместе с ним;Хочешь помочь старику - сделай за него;Хочешь помочь мастеру - отойди в сторону;Хочешь помочь дураку - сам дурак...
PM MAIL   Вверх
Megas
Дата 27.7.2007, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 15.1.2006

Репутация: нет
Всего: нет



А как сделать у гифки прозрачный фон?


Спасибо уже сам разобрался.

Это сообщение отредактировал(а) Megas - 27.7.2007, 22:28
PM WWW   Вверх
teroni
Дата 28.7.2007, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 15.5.2007
Где: Днепропетровск

Репутация: 1
Всего: 22



Действительно, какой смысл каждый раз генерировать эти картинки заново?
И еще одно, imagestring без всяких искажений - надежно защитит только от самого ленивого спаммера. Если же спаммер не ленив и эти мылы представляют для него какой-то интерес - грабилка пишется за полчаса.
PM MAIL   Вверх
Severyanin
Дата 1.8.2007, 07:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: нет
Всего: 9



А на прологе еще быстрее smile 


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
BuShaRt
Дата 21.8.2007, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: нет
Всего: 6



rubyclub
Идея бредовая изначально. Если вам не известно, то люди по e-mail шелкают или выделяют, копируют и отсылают.. но точно не перепечатывают.


teroni
Как правило самые ленивые спамеры являються самыми умными и они не пишут грабилки на каждый отдельный форум... есть простенькие скрипты, которые бегают по url-ками и воруют mail адресса и им вообще пофег с какого форума адресса полученны. И со спамера не убудет, если его скрипт не принесет пользы отпарсив один форум... все далаеться автоматически!!


Если уж говорить серьезно, то почему бы просто не сменять значек @ на аналогичное изобрежаение + пробел (чтоб при копирование было видно, где @ стоять должен?
PM MAIL   Вверх
ewolf
Дата 3.9.2007, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

Репутация: 2
Всего: 18



Гооораздо проще выводить email JavaScript'ом, это защит от роботов, а люди будут комфортно работать себе.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Графика | Следующая тема »


 




[ Время генерации скрипта: 0.0784 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.