Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/08/2010, 14:17
fido-strike
 
Fecha de Ingreso: noviembre-2008
Ubicación: Cochabamba Bolivia
Mensajes: 519
Antigüedad: 15 años, 5 meses
Puntos: 26
Error de Vez en cuando en Mysql o Php?

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 :(

Última edición por fido-strike; 01/09/2010 a las 06:01 Razón: Error descubierto en el codigo!