hola, el caso es que tengo una base de datos donde se guardan los datos de mis usuarios, esto es desde un principio, no se cual sera el motivo, no soy muy experto en php pero el punto es que al momento de registrarse el valor de email ha veces se guarda en la base de datos y ha veces no.
No se cual sera el motivo, pero a algunos cuando se registran, se les guarda todos los datos sin problema alguno, a otros el email no se les guarda, esto me di cuenta hace tiempo cuando estaba hechando un vistazo a mi mysql, note que el campo de email algunos estaban llenos y otros estaban vacios, no se de que dependera para que a unos se les guarde bien el email y a otros no, me fije en el codigo que procesa los datos para guardarlo en la base de datos, pero yo personalmente no veo ningun tipo de error. por favor quisiera que me lo hechen un vistazo y me digan que puede ser el error.
aqui les dejo el codigo que procesa los datos del formulario de registro:
Código PHP:
<?php
/* -----------------------------------------------------------------------------------------
form01 formulario de contacto 2008-02-26
autor: J?Heitmann
http://www.dpwgranada.net
---------------------------------------------------------------------------------------*/
$directorio = "../";
if($_POST['registro']) {
error_reporting(0);
include("../config.php");
function html($texto) {
$texto = trim($texto) ;
$texto = htmlspecialchars($texto) ;
return $texto ;
}
if($_POST[contrasena]==$_POST[contrasena2]) {
$query = "SELECT * FROM usuarios WHERE nick={$_POST['nick']} or email={$_POST['email']}";
$link = mysql_query($query);
if(mysql_affected_rows($link)==0) {
if(!$_POST[nick]) {
$error = "Lo sentimos, ese nick ya esta registrado";
}
if(!$_POST[contrasena]) {
$error = "La clave/password deben ser iguales";
}
if(!$_POST[email]) {
$error = "ya hay un usuario con ese email";
}
if($_POST[secret]!=9) {
$error = "Respuesta de pregunta no es correcta!";
}
$fecha = time();
$nick = ereg_replace("[^A-Za-z0-9]", "", $_POST[nick]);
$contrasena = md5($_POST[contrasena]);
$MailPass = $_POST[contrasena2];
$email = ($_POST[email]);
$nombre = html($_POST[nombre]);
$pais = html($_POST[pais]);
$ciudad = html($_POST[ciudad]);
$sexo = html($_POST[sexo]);
$boletin = html($_POST[boletin]);
$ip = $REMOTE_ADDR;
$n_dia = html($_POST[n_dia]);
$n_mes = html($_POST[n_mes]);
$n_ano = html($_POST[n_ano]);
} else {
$error = _YA_REGISTRADOS_;
}
}
else {
$error = _ALERTA_CONTRASENA_;
}
if($error) {
echo"<script>alert('"._ERROR_P_." ".$error."'); window.location='javascript:history.back()';</script>";
} else {
include("bienvenido.php");
$infp = mysql_query("SELECT * FROM configuracion");
$info = mysql_fetch_array($infp);
$puntos = $info[preg];
$r=mysql_query("INSERT INTO usuarios (nick,contrasena,pas_sena,email,fecha,nombre,pais,ciudad,sexo,boletin,ip,conectado,puntos,n_dia,n_mes,n_ano) VALUES ('$nick','$contrasena','$MailPass','$email','$fecha','$nombre','$pais','$ciudad','$sexo','$boletin','$ip','$fecha','$puntos','$n_dia','$n_mes','$n_ano')");
if (!$r)
echo"<script>alert('"._ERROR_P_." "._ERROR_QUERY_."'); window.location='javascript:history.back()';</script>";
//reemplace [email protected] por la direcci? donde quieres que se mande los datos.
$recipiente = "[email protected]";
//reemplace miasunto por el asunte que quieres en el email
$asunto = "Nuevo Registro";
$error = 0;
//los campos mandados por el formulario
$nick = $_POST['nick'];
$email = $_POST['email'];
$nombre = $_POST['nombre'];
$sexo = $_POST['sexo'];
$pais = $_POST['pais'];
$n_ano = $_POST['n_ano'];
$clave = $_POST['contrasena'];
//verificaci?i los campos requeridos estan llenos
if($nick == "" || $email == "" || $nombre == "" || $sexo == "" || $pais == "" || $n_ano == "") {
$error=1;
}
//verificaci?i el email es correcto
elseif(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email)) {
$error=2;
}
//mensajes de error
if($error==1) {
echo "El siguiente error ha ocurrido!<BR>";
echo "No ha rellenado todos los campos obligatorios.<BR> Por favor vuelva <A HREF=\"javascript:history.back()\">atras</A>.<BR>";
}
elseif($error==2) {
echo "El siguiente error ha ocurrido!<BR>";
echo "El correo electronico es invalido!<BR> Por favor vuelva <A HREF=\"javascript:history.back()\">atras</A>.<BR>";
}
elseif($error==4) {
echo "El siguiente error ha ocurrido!<BR>";
echo "La respuesta no es correcta!<BR> Por favor vuelva <A HREF=\"javascript:history.back()\">atras</A>.<BR>";
}
else {
$message ="Estos son los datos para boletin del un nuevo usuario: <br>";
$message .="Nick: ".$nick."<br>";
$message .="Pais: ".$pais."<br>";
$message .="Email: ".$email."<br>";
$message .="Edad: ".$n_ano."<br>";
$message .="Sexo: ".$sexo."<br>";
$message = stripslashes($message);
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type:text/html; charset=iso-8859-1\r\n";
$headers .= "From: $email\r\n";
$headers .= "Repaly-to: $email\r\n";
mail($recipiente,$asunto,$message,$headers);
//aqui puedes modificar los mensajes
include("proceso-foro.php");
}
}
}
?>
Ademas esta ultima hora que estuve fijandome que me envian muy a menudo diciendome que los ultimos usuarios que se registraron ultimamente no pueden ingresar a su cuenta, ya que segun parece que el sistema les niega por que el password no coincide, y estuve fijandome, que algunos registros se meten en la base de datos aunque el nick ya este registrado, es decir, se repite el nick al registrarse, no se por que, por que si se fijan en el codigo ya esta implementado la comparacion para que se impide registros de nicks repetidos.
ayudenme por fa :(