No entiendo como sustituir ereg_replace.
No lo uso para reemplazar exactamente, lo que hago es que tengo un formulario de registro, entonces cojo por ejemplo $_POST['usuario'] y se lo asigno a $usuario.
Luego a $_POST['usuario'] le hago el ereg_replace con los carecteres que quiero y comparo las dos cadenas (if $usuario !== $_POST['usuario']...) y si son diferentes saco un mensaje de error diciendo que no se admiten caracteres especiales en el nombre de usuario.
Este es el código que tengo hasta ahora cambiando lo del email:
Código PHP:
<?php
//##############################################
//# Ficha de organización: #
//##############################################
//#[*] Campo Usuario no vacío #
//#[*] Campo Contraseña no vacío #
//#[*] Campo Correo electrónico no vacío #
//#[*] Caracteres especiales Usuario #
//#[*] Longitud mínima Usuario #
//#[*] Longitud mínima Contraseña #
//#[*] Longitud mínima Correo electrónico #
//# [ ] #
//##############################################
include("class.phpmailer.php"); //Se incluye la clase phpmailer para el envío del email
include("class.smtp.php"); //Se incluye la clase smtp para poder usar la cuenta de GMail
header("Content-type: text/html; charset=utf-8"); //Header para que reconozca caracteres como la 'ñ'
//Comprobación de los campos
if ($_POST['password'] !== $_POST['cpassword']) {
echo ('<span style="color:#FF0000">Error: Las contraseñas no coinciden.</span><br>');
$error = 1;
}
if ($_POST['password'] == false) {
echo ('<span style="color:#FF0000">Error: El campo de la contraseña está vacío.</span><br>');
$error = 1;
}
if ($_POST['usuario'] == false) {
echo ('<span style="color:#FF0000">Error: El campo del nombre de usuario está vacío.</span><br>');
$error = 1;
}
if ($_POST['email'] == false) {
echo ('<span style="color:#FF0000">Error: El campo del correo electrónico está vacío.</span><br>');
$error = 1;
}
if ($error == 1) goto end; //Envia al programa al bucle end si hay algún error.
//Fin de la comprobación de campos
$usuario = trim($_POST['usuario']);
$usuario = ereg_replace("[^A-Za-z0-9ñÑáéíóú_.]","",$usuario);
//Se verifica el usuario
if ($usuario !== trim($_POST['usuario'])) {
echo ('<span style="color:#FF0000">Error: No se permiten caracteres especiales en el nombre de usuario.</span><br>');
$error = 1;
}
if (strlen($usuario) < 2) {
echo ('<span style="color:#FF0000">Error: Nombre de usuario demasiado corto.</span><br>');
$error = 1;
}
//Fin de la verificación del usuario
$contraseña = ($_POST['password']);
$contraseña = ereg_replace("[^A-Za-z0-9ñÑçÇáéíóú$#%&¬_.:;,-]","",$contraseña);
//Se verifica la contraseña
if ($contraseña !== trim($_POST['password'])) {
echo ('<span style="color:#FF0000">Error: No se permiten caracteres especiales en la contraseña.</span><br>');
$error = 1;
}
if (strlen($_POST['password']) < 8) {
echo ('<span style="color:#FF0000">Error: Contraseña demasiado corta.</span><br>');
$error = 1;
}
//Fin de la verificación de la contraseña
$contraseña = sha1(md5(trim($_POST['password']))); //Encriptamos la contraseña a MD5 y luego a SHA1
$email = trim($_POST['email']);
//Se verifica la dirección de correo
if (!filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
echo '<span style="color:#FF0000">Error: Dirección de email no válida.</span><br>';
}
if (strlen($email) < 6) {
echo ('<span style="color:#FF0000">Error: Dirección de email demasiado corta.</span><br>');
$error = 1;
}
if ($error == 1) goto end; //Envia al programa al bucle end si hay algún error.
//Fin de la comprobación de la dirección de correo
$fecha = time();
$ipusuario = $_SERVER['REMOTE_ADDR']; //Obtenemos la IP del usuario.
$conexion = mysql_connect("localhost","root",""********"); //Nos conectamos a la base de datos
if (!$conexion) {
die('Error de conexión a la base de datos');
}
//Fin de comprobación de formulario, empezamos con escribir los datos en el registro y verificar que ninguno de los datos existan.
mysql_select_db("CiOS Cloud", $conexion);
$sql = "INSERT INTO usuarios (nombre_usuario, pass_usuario, email_usuario, fecha_registro, ip_registro, fecha_ultimo_acceso, ip_ultimo_acceso, archivos_subidos, espacio_usado_mb, activo)
VALUES ('$usuario','$contraseña','$email','$fecha','$ipusuario','$fecha','$ipusuario','0','0', '1')";
if (!mysql_query($sql,$conexion))
{
die('Error: ' . mysql_error());
} else {
echo "Registro en la BD completado satisfactoriamente<br>Enviando email de validación...<br>";
}
mysql_close($conexion);
//############################################################################################
//##########################Envíamos el email de validación###################################
//############################################################################################
error_reporting(E_STRICT);
$mail = new PHPMailer();
$body = file_get_contents('contents.html');
$body = eregi_replace("[]",'',$body);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only
$mail->Port = 465; // set the SMTP port
$mail->Username = "cioscloud@gmail.com"; // GMAIL username
$mail->Password = "********"; // GMAIL password
$mail->SetFrom = "cioscloud@gmail.com";
$mail->FromName = "CiOS Cloud";
$mail->Subject = "Verificación de la cuenta de CiOS Cloud";
$mail->AltBody = "This is the body when user views in plain text format"; //Text Body
$mail->WordWrap = 50; // set word wrap
$mail->MsgHTML($body);
$mail->AddReplyTo("cioscloud@gmail.com","Webmaster");
$mail->AddAddress("$email","$usuario");
$mail->IsHTML(true); // send as HTML
if(!$mail->Send()) {
echo ('<span style="color:#FF0000">Error: No se pudo enviar el email de validación.</span><br>');
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Se envió un email de validación a su dirección de correo electrónico.";
}
//################################################################################################
end:
echo ("<br>Serás automáticamente redirigido en 6 segundos.");
echo '<meta http-equiv="Refresh" content="6;url=registrarse.html">';
?>
Quizás debería separar lo del email y un par de cosas más en otros ficheros php y hacer un include para que no haya tanto lío..¿no?