2014-08-28 3 views
0

Мне интересно, как я могу конвертировать электронные письма своего веб-сайта в изображения?Преобразование электронной почты к изображению?

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

Любые подсказки?

Я использую PHP, чтобы сделать это:

if (isset($_GET['text'])) { 
    // get string 
    $text = $_GET['text']; 
} else { 
    // set default 
    $text = 'liame'; 
}; 
// reverse string 
$text = strrev($text); 
$textLength = strlen($text); 
$textHeight = 10; 

// create image handle 
$image = ImageCreate($textLength*($textHeight-1),20); 

// set colours 
$backgroundColour = ImageColorAllocate($image,255,255,255); // white 
$textColour = ImageColorAllocate($image,0,0,0); // black 

// set text 
ImageString($image,$textHeight,0,0,$text,$textColour); 

// set correct header 
header('Content-type: image/png'); 

// create image 
ImagePNG($image); 

, а затем

$email = $row['email']; 

<img src="image.php?text=<?php echo $email; ?>" alt="Hidden Email" /> 

, но он не работает, то изображение показывает, как сломанный.

+1

Как большое использование - изображение, показывающее оборот адрес электронной почты будет? Я сразу же закрою ваш сайт, если увижу это. –

+0

Кроме того, я запускал этот код через [PHPTester] (http://phptester.net/) (поскольку большинство тестировщиков типа eval.in в Интернете не поддерживают GD), и он отлично работает (выдает «email»). Проблема в другом месте ...? Попробуйте удалить вызов 'header()' и посмотреть, генерирует ли PHP какие-либо ошибки. –

+2

Забавный факт: 'image.php? Text = niet @ example.com' не является« более безопасным »для ваших пользователей, чем« niet @ example.com ». Это необходимо сделать встроенным, если вообще. –

ответ

1

Вот «прямо из БД» Решение:

Sidenote: Я решил использовать два столбца с пунктом WHERE, но вы можете изменить его.

Выполнение этого, как вы хотели, ну ... комментарии под вашим вопросом говорят сами за себя.

Вы можете либо установить его (этот код) внутри iframe на странице вы хотите, чтобы показать в

Sidenote:.
Он не может быть «включают в себя», потому что воля перезапишите содержимое своей страницы заголовком изображения.

Да, я знаю, и я знаю, что это поражения цели, но вы также можете показать его из img src и ссылки на него, либо к href или mailto: < = это - я просто описывая, каковы ваши (дополнительные) варианты, если вы хотите использовать их в будущем. Связывание его с формой, которую люди могут заполнить, будет лучшим способом.

<a href="http://www.example.com"><img src="image_generator_file.php"></a> 

или просто не связывая его вообще:

<img src="image_generator_file.php" border="0"> 

Sidenote:WHERE id = 1 может быть изменен на WHERE id = $user_id и заселение его и извлекается из БД. Вам нужно будет обернуть его в кавычки WHERE id = '$user_id', если это VARCHAR и заранее определить переменную раньше времени. I.e .: $user_id = $row['email']; например.

PHP/SQL:

<?php 

include 'connection.php'; // Make sure connection is mysqli_ and not mysql_ 

$query = mysqli_query($conn,"SELECT id, email FROM your_table WHERE id = 1"); 

    while($row = mysqli_fetch_assoc($query)){ 

     $email = $row['email']; 

    } 


    $text = $email; 

    // reverse string 
    //$text = strrev($text); 

    $textLength = strlen($text); 
    $textHeight = 10; 

    // create image handle 
    $image = ImageCreate($textLength*($textHeight-1),20); 

    // set colours 
    $backgroundColour = ImageColorAllocate($image,255,255,255); // white 
    $textColour = ImageColorAllocate($image,0,0,0); // black 

    // set text 
    ImageString($image,$textHeight,0,0,$text,$textColour); 

    // set correct header 
    header('Content-type: image/png'); 

    // create image 
    ImagePNG($image); 

Для дополнительной укладки, вы можете установить класс CSS к изображению:

<img src="image_generator_file.php" class="pad"> 

CSS:

.pad { 
padding-top:3px; 
padding-bottom:2px; 
padding-left:5px; 
padding-right:5px; 
background:#ffffff; 
} 
Смежные вопросы