¿Hay una función de obfuscator de dirección de correo electrónico sólo php? La mayoría de los que se encuentran en la web son una mezcla de JS y PHP.En busca de una función de obfuscator de dirección de correo electrónico sólo php
Respuesta
Aquí hay un par de funciones que uso.
Primero uno ofusca dirección de correo electrónico utilizando los códigos de caracteres HTML:
function getObfuscatedEmailAddress($email)
{
$alwaysEncode = array('.', ':', '@');
$result = '';
// Encode string using oct and hex character codes
for ($i = 0; $i < strlen($email); $i++)
{
// Encode 25% of characters including several that always should be encoded
if (in_array($email[$i], $alwaysEncode) || mt_rand(1, 100) < 25)
{
if (mt_rand(0, 1))
{
$result .= '&#' . ord($email[$i]) . ';';
}
else
{
$result .= '&#x' . dechex(ord($email[$i])) . ';';
}
}
else
{
$result .= $email[$i];
}
}
return $result;
}
Ejemplo:
echo getObfuscatedEmailAddress('[email protected]');
-->
firstname.last-name@example.com
segundo volverá enlace donde dirección de correo electrónico está HTML y URL codificada:
function getObfuscatedEmailLink($email, $params = array())
{
if (!is_array($params))
{
$params = array();
}
// Tell search engines to ignore obfuscated uri
if (!isset($params['rel']))
{
$params['rel'] = 'nofollow';
}
$neverEncode = array('.', '@', '+'); // Don't encode those as not fully supported by IE & Chrome
$urlEncodedEmail = '';
for ($i = 0; $i < strlen($email); $i++)
{
// Encode 25% of characters
if (!in_array($email[$i], $neverEncode) && mt_rand(1, 100) < 25)
{
$charCode = ord($email[$i]);
$urlEncodedEmail .= '%';
$urlEncodedEmail .= dechex(($charCode >> 4) & 0xF);
$urlEncodedEmail .= dechex($charCode & 0xF);
}
else
{
$urlEncodedEmail .= $email[$i];
}
}
$obfuscatedEmail = getObfuscatedEmailAddress($email);
$obfuscatedEmailUrl = getObfuscatedEmailAddress('mailto:' . $urlEncodedEmail);
$link = '<a href="' . $obfuscatedEmailUrl . '"';
foreach ($params as $param => $value)
{
$link .= ' ' . $param . '="' . htmlspecialchars($value). '"';
}
$link .= '>' . $obfuscatedEmail . '</a>';
return $link;
}
Ejemplo:
echo getObfuscatedEmailLink('[email protected]');
-->
<a href="mailto:%66i%72stna%6de.%6c%61st-name@example.com" rel="nofollow">firstname.last-name@example.com</a>
Enfoque interesante +1. Pero podría tener algunos problemas de compatibilidad. –
No lo he probado en Safari y navegadores móviles. FF, IE, Chrome son buenos. –
OK - lo intentaré :-) –
Mi favorito:
marcado + PHP
<span class="rev"><?php echo strrev($email); ?> </span>
CSS
.rev{
direction: rtl;
unicode-bidi: bidi-override;
}
¡Brillante! ¿Alguna idea de cómo se mantiene esto al copiar/pegar correos electrónicos? –
@AakilFernandes ver violín: (( – moonwave99
Ah, esa era mi preocupación Todavía un buen truco –
Aquí está uno con PHP 7 tipo de insinuación
a llamarlo con $this->obfuscateEmail($email);
/**
* @param string $email
* @return string
*/
private function obfuscateEmail(string $email) : string
{
$em = explode("@", $email);
$name = implode(array_slice($em, 0, count($em) - 1), '@');
$len = floor(strlen($name)/2);
return substr($name, 0, $len) . str_repeat('*', $len) . "@" . end($em);
}
Aquí una forma alternativa en caso de que haya un carácter antes de host:
/**
* @param string $email
* @return string
*/
private function obfuscateEmail($email)
{
$em = explode("@", $email);
$name = implode(array_slice($em, 0, count($em)-1), '@');
if(strlen($name)==1){
return '*'.'@'.end($em);
}
$len = floor(strlen($name)/2);
return substr($name,0, $len) . str_repeat('*', $len) . "@" . end($em);
}
- 1. PHP buscar una cadena para una dirección de correo electrónico
- 2. PHP función de validación de correo electrónico
- 3. dirección de correo electrónico noreply.
- 4. Dirección múltiple de correo de PHP
- 5. En busca de un cliente de correo electrónico de mierda
- 6. ¿Busca una dirección de correo electrónico de "trabajo" para una persona en la libreta de direcciones de iPhone?
- 7. postfix: envíe una copia de cada correo electrónico a una dirección de correo electrónico dada
- 8. envío de correo electrónico masivo usando PHP
- 9. verificar una dirección de correo electrónico existen en C#
- 10. ¿Puede haber un apóstrofo en una dirección de correo electrónico?
- 11. PHP validación de correo electrónico
- 12. php error de correo electrónico filter_var
- 13. Cómo verificar que realmente exista una dirección de correo electrónico enviando un correo electrónico a java
- 14. ¿Cómo puedo mayúsculas una dirección de correo electrónico?
- 15. Drupal recibe una dirección de correo electrónico amplia del sitio?
- 16. ¿Cómo comprobar si una dirección de correo electrónico es falsa?
- 17. ¿Cómo verificar si existe una dirección de correo electrónico?
- 18. Identificar si una dirección de correo electrónico es 'pública'
- 19. ¿Es una dirección de correo electrónico un URI?
- 20. de inicio de sesión con nombre de usuario o dirección de correo electrónico en php
- 21. Colas de correo electrónico en php
- 22. Tuberías de correo electrónico con script php
- 23. ¿Hay una biblioteca php para la validación de la dirección de correo electrónico?
- 24. validar la dirección de correo electrónico en UITextField en iPhone
- 25. rieles de validación de usuarios de correo electrónico - sólo lo quieren para validar cuando un usuario se inscribe o actualizaciones de dirección de correo electrónico
- 26. seguridad y función de correo() en php
- 27. claves Gitosis y ssh: ¿la dirección de correo electrónico tiene algo que ver con la dirección de correo electrónico git?
- 28. cómo cambiar la dirección de correo electrónico predeterminada para postfix?
- 29. Validación de dirección de correo electrónico para ASP.NET
- 30. HgGit: "dirección de correo electrónico no válida" en GitHub
quiere decir un código de imagen que necesita para llenar antes de la verdadera dirección de correo electrónico es ¿enviado a ti? ;) –