2013-05-25 4 views
1

Я пытаюсь улучшить способ отправки сообщений электронной почты с помощью PHP. На данный момент мой код выглядит следующим образом:Обфускать электронную почту на PHP?

<?php 
    //==== FORM DATA 
    $name = $_REQUEST['cName']; 
    $email = $_REQUEST['cEmail']; 
    $message = $_REQUEST['cMessage']; 

    //==== EMAIL DETAILS 
    $to = "[email protected]"; 
    $subject = "Web Query"; 
    $headers .= "From:".$email; 
    $headers .= "MIME-Version: 1.0\r\n"; 
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 

    //==== EMAIL CONTENT 
    $content = 
    "<b>From: </b>".$name."<br />". 
    "<b>Email: </b>".$email."<br /><br />". 
    "<b>Message: </b>".$message; 

    //==== SEND EMAIL 
    mail($to, $subject, $content, $headers); 
?> 

Там один потенциальный недостаток я заметил так, как я это сделать. Я помещаю адрес электронной почты 'to', и я беспокоюсь, что это может привести к спаму (все остальные данные поступают из представления формы html, за исключением адреса 'to', который прямо в PHP). Каков самый простой способ обфускации этого адреса электронной почты и необходимо ли это делать?

+1

запутать неправильное слово здесь - вы хотите, чтобы избежать ваша строка. – MMM

ответ

3

Ваш адрес электронной почты указан в вашем PHP-коде, поэтому он не отображается в браузере клиента.

Тем не менее, вы используете незащищенные данные формы в своих заголовках электронной почты (как указано в МММ), это вызывает большую озабоченность и должно быть рассмотрено перед тем, как поместить этот код в живую.

+1

'-1' - он не в безопасности! Он использует '$ _REQUEST' и встраивает его прямо в заголовки! Это позволяет вводить заголовки. – MMM

+0

, используя no-reply @ ... никогда не бывает хорошим вариантом, а не дружелюбным –

+1

@ Cube32: Вы заявляете, что его код безопасен, и это неверно, независимо от того, пытаетесь ли вы ответить на его вопрос или нет. – MMM

2

вы должны избежать ваши $ _REQUEST переменные перед их использованием, например, с mysql_real_escape_string и вы должны проверить, если они имеют правильные типы значений и проверять их с помощью пользовательских функций с помощью filter_var как My Common Sense упоминается (действительный адрес электронной почты): https://stackoverflow.com/a/16748986/753676

+0

Определить «ускользание»? В противном случае этот ответ вообще не поможет –

+0

Спасибо, я посмотрю. PHP болит голова. Мои знания PHP и mysql очень тонкие. – Coop

+1

mysql_real_escape_string? Тот, кто поддержал этот ответ, хотел бы, чтобы причина –

0

, если вы хотите, чтобы избежать почты не будет рассматриваться как спам, вы должны попытаться отправки почты с помощью SMTP authentication.For этого вы можете использовать phpmailer

+0

, которые не решают проблему со спам-фильтрами, есть много факторов, которые могут предупредить спам-фильтр (например, контент , URL-адреса изображений, строка темы и многое другое) –

+0

@ DanielRuf Ruf..So far, если все идет нормально, тогда smtp auth будет работать, и вы получите свою почту в Inbox. Но если ваш контент подозрительный и есть сложная защита от спама в ваш почтовый сервер вы не получите почту в папке «Входящие», даже если вы отправляете из доверенной почты. Я использую до сих пор не найденную проблему. – sAnS

+0

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

2
$name = htmlspecialchars($_REQUEST['cName']); 
$email = filter_var($_REQUEST['cEmail'], FILTER_VALIDATE_EMAIL); 
$message = htmlspecialchars($_REQUEST['cMessage']); 
+0

это должно быть использовано, спасибо =) почти забыл этих маленьких «помощников», потому что я в основном использовал только фреймворки, которые автоматически выполняли все эти задачи проверки (лучше, чем изобретать колесо, а не использовать фреймворк вроде ZF): D –

+0

Я пробовал использовать htmlspecialchars но он просто нарушает процесс и больше не отправляет электронное письмо ... – Coop

+0

Каков результат/содержимое сообщения $ после этого? –

Смежные вопросы