Foros del Web » Programando para Internet » PHP »

se duplica usuario

Estas en el tema de se duplica usuario en el foro de PHP en Foros del Web. hola seque esto ya se ha solucionado antes pero aun ami no me sale realmetne no lo se si me falta algo o que sera ...
  #1 (permalink)  
Antiguo 04/07/2009, 09:19
 
Fecha de Ingreso: junio-2009
Ubicación: lima
Mensajes: 139
Antigüedad: 14 años, 10 meses
Puntos: 0
se duplica usuario

hola
seque esto ya se ha solucionado antes pero aun ami no me sale realmetne no lo se si me falta algo o que sera ps
espero me ayuden ...
se em dupñica la persona ingresada y deseariaque esto no sucediera yaque si ingresa otra vez le pagan mas a el usuario cuando n oes verdad y para que esto nopase no debe duplicarse en la base de datos
espero su apoyo en esto ..

Código PHP:
<?
session_start
();
include(
"include/db.php");
include(
"include/functions.php");
db_connect();

$meses = array('01' => 'Enero''02' => 'Febrero''03' => 'Marzo''04' => 'Abril''05' => 'Mayo''06' => 'Junio''07' => 'Julio'
          
'08' => 'Agosto''09' => 'Setiembre''10' => 'Octubre''11' => 'Noviembre''12' => 'Diciembre');

if(!isset(
$_SESSION['user'])) {
    
header("Location: index.php");
}

if(isset(
$_POST['Registrar'])) {
    
$ins_personal "INSERT INTO personal(paterno, materno, nombres, dni, fec_nac, sexo, direccion, id_departamento, id_provincia, id_distrito, telefono, celular, email, profesion, grado_academico, asignatura, nombre_banco, nro_cuenta, fec_registro, ind_personal, usuario_registro, tipo_user) 
                    VALUES('" 
$_POST['paterno'] . "', '" $_POST['materno'] . "', '" $_POST['nombres'] . "', '" $_POST['dni'] . "', '" $_POST['ano'] . '-' $_POST['mes'] . '-' $_POST['dia'] . "', '" $_POST['sexo'] . "', '" $_POST['direccion'] . "', '" $_POST['id_departamento'] . "', '" $_POST['id_provincia'] . "', '" $_POST['id_distrito'] . "', '" $_POST['telefono'] . "', '" $_POST['celular'] . "', '" $_POST['email'] . "', '" $_POST['profesion'] . "', '"$_POST['grado_academico']."'. '"$_POST['asignatura']."'. '"$_POST['nombre_banco'] . "', '" $_POST['nro_cuenta'] . "', '" date('Y-m-d H:i') . "', 'S', '" $_SESSION['id_usuario'] . "', '5')";
    echo 
$ins_personal;
    
db_query($ins_personal);
    
    
header("Location: " $_SERVER['PHP_SELF']);
}
?>
<html>
<head>
    <title>CESAD</title>
<link rel="stylesheet" href="include/estilos.css" type="text/css">
<script language="JavaScript" src ="include/common.js"> </script>
<script language="JavaScript" type="text/javascript">
function ajax_provincia() {
    if (http.readyState == 4) { //4: completado
        if (http.status == 200) { //200: OK
            res = http.responseText;
               document.getElementById('prov').innerHTML = res;
               //Procesarespuesta();
          }
          else { //Se produjo un error
               alert("Error: " + http.statusText);
          }
     }
}
function ajax_distrito() {
    if (http.readyState == 4) { //4: completado
        if (http.status == 200) { //200: OK
            res = http.responseText;
               document.getElementById('dist').innerHTML = res;
               //Procesarespuesta();
          }
          else { //Se produjo un error
               alert("Error: " + http.statusText);
          }
     }
}

function buscaProvincia(IDdep) {
    //alert("dep=" + IDdep);
    http.open('get', 'proc_provincia.php?IDdep=' + IDdep);
    http.onreadystatechange = ajax_provincia;
    http.send(null);
}

function buscaDistrito(IDdep, IDdist) {
    //alert("dep=" + IDdep + ", dist=" + IDdist);
    http.open('get', 'proc_distrito.php?IDdep=' + IDdep + '&IDdist=' + IDdist);
    http.onreadystatechange = ajax_distrito;
    http.send(null);
}

function validaPersonal() {
    if(document.frmPersonal.paterno.value == '') {
        alert("Debe ingresar el apellido paterno");
        document.frmPersonal.paterno.focus();
        return false;
    }
    if(document.frmPersonal.materno.value == '') {
        alert("Debe ingresar el apellido materno");
        document.frmPersonal.materno.focus();
        return false;
    }
    if(document.frmPersonal.nombres.value == '') {
        alert("Debe ingresar el nombre");
        document.frmPersonal.nombres.focus();
        return false;
    }
        if(document.frmPersonal.grado.value == ''){
               alert("Debe ingresar el grado academico");
               document.frmPersonal.grado.focus();
               return false;
    }
    if(document.frmPersonal.dni.value == '') {
        alert("Debe ingresar el numero de DNI");
        document.frmPersonal.dni.focus();
        return false;
    }

    if (isset($_POST[Registrar]) && $_POST[personal] !="")
    {
    $dni= strtolower($_POST[personal]);
    $dni = htmlentities($dni);
    //$dni = strtolower(htmlentities($_POST[personal]));
    $sql = mysql_query(SELECT * FROM ins_personal WHERE dni = '$dni')
    if (mysql_num_rows($sql) == 0)
    {

    echo "Usaurio Creado";
    }
else
    {
    echo "el usuario existe";
    }
    }

    /*if(document.frmPersonal.direccion.value == '') {
        alert("Debe ingresar la direccion");
        document.frmPersonal.direccion.focus();
        return false;
    }
    if(document.frmPersonal.telefono.value == '') {
        alert("Debe ingresar el telefono");
        document.frmPersonal.telefono.focus();
        return false;
        }*/
    return true;
}
</script>
</head>

<body>

<?include("cabecera.php");?>

<form name="frmPersonal" method="post" action="<?echo $_SERVER['PHP_SELF']?>" onsubmit="return validaPersonal();">
<table border="0" width="774" height="458" cellpadding="0" cellspacing="0">
<tr>
    <td valign="top">
    
        <table border="0" width="500" cellpadding="0" cellspacing="0" align="center">
        <tr>
            <td align="center"><p class="clsLblTituloPagina">Registro Datos de Tutor</p></td>
        </tr>
        <tr>
            <td><hr></td>
        </tr>
        </table><br>
                
        <table border="0" width="500" cellpadding="0" cellspacing="0" align="center">
        <tr>
            <td colspan="2" class="clsTituloTabla">Datos Personales</td>
        </tr>
        <tr>
            <td height="2">&nbsp;</td>
        </tr>
        <tr>
            <td>Apellido Paterno:</td>
        -----------------------------------------------------(//aqui poner el ingreso de los valores_________________________________
            <td align="center">
                <input type="submit" name="Registrar" value="Registrar Datos" class="clsSubmit"> &nbsp; 
                <input type="reset" name="limpiar" value="Limpiar" class="clsSubmit">    
            </td>
        </tr>
        </table>
        
    </td>
</tr>

</table>
        </form>

<?include("pie.php");?>

</body>
</html>
  #2 (permalink)  
Antiguo 04/07/2009, 10:20
Avatar de temaqueja  
Fecha de Ingreso: agosto-2002
Ubicación: /dev/null/
Mensajes: 399
Antigüedad: 21 años, 8 meses
Puntos: 4
Respuesta: se duplica usuario

El problema principal que de verdad deberia preocuparte de tu script es que la seguridad es nula, es decir no revisas para nada lo que contienen las variables $_POST['xxxx'] y las insertas dentro del SQL, lo que te hara victima directa de Inyeccion SQL (googlealo)

Ahora, la respuesta a lo que preguntas es porque en tu código PHP no haces ninguna validación, todo se lo dejas al javascript; antes de la linea que dice
Código PHP:
$ins_personal "INSERT IN.............. 
tienes que hacer una consulta select para ver si esa información ya existe en la bd y solo pasar al insert cuando no exista tal información.

Aqui una IDEA GENERAL A GROSO MODO::: No copies y pegues esto!
Código PHP:
$sql "select * from tabla where (dni='".$_POST['dni']."')"
$query mysql_query($sql);
if (
mysql_num_rows($query)>0) {
   echo 
"error, duplicado";
} else {
   
// continua ...
   
$ins_personal "INSERT IN..............
   ............ etc

__________________
_________________________
La computadora nació para resolver problemas que antes no existían
  #3 (permalink)  
Antiguo 04/07/2009, 11:36
 
Fecha de Ingreso: junio-2009
Ubicación: lima
Mensajes: 139
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: se duplica usuario

te refieres a esto antes del insert?
Código PHP:
if(!isset($_SESSION['user'])) {
    
header("Location: index.php");
}

if(isset(
$_POST['Registrar'])) {
    
$sql mysql_query(SELECT FROM personal WHERE dni '$dni')
    if (
mysql_num_rows($sql) == 0)
    {
    echo 
"Usaurio Creado";
    }
    else
    {
    
    

    
$ins_personal "INSERT INTO personal(paterno, materno, nombres, dni, fec_nac, sexo, direccion, id_departamento, id_provincia, id_distrito, telefono, celular, email, profesion, grado_academico, asignatura, nombre_banco, nro_cuenta, fec_registro, ind_personal, usuario_registro, tipo_user) 
                    VALUES('" 
$_POST['paterno'] . "', '" $_POST['materno'] . "', '" $_POST['nombres'] . "', '" $_POST['dni'] . "', '" $_POST['ano'] . '-' $_POST['mes'] . '-' $_POST['dia'] . "', '" $_POST['sexo'] . "', '" $_POST['direccion'] . "', '" $_POST['id_departamento'] . "', '" $_POST['id_provincia'] . "', '" $_POST['id_distrito'] . "', '" $_POST['telefono'] . "', '" $_POST['celular'] . "', '" $_POST['email'] . "', '" $_POST['profesion'] . "', '"$_POST['grado_academico']."'. '"$_POST['asignatura']."'. '"$_POST['nombre_banco'] . "', '" $_POST['nro_cuenta'] . "', '" date('Y-m-d H:i') . "', 'S', '" $_SESSION['id_usuario'] . "', '5')";
    echo 
$ins_personal;
    
db_query($ins_personal);
    
    
header("Location: " $_SERVER['PHP_SELF']);
}
}
?> 
  #4 (permalink)  
Antiguo 04/07/2009, 12:38
Avatar de temaqueja  
Fecha de Ingreso: agosto-2002
Ubicación: /dev/null/
Mensajes: 399
Antigüedad: 21 años, 8 meses
Puntos: 4
Busqueda Respuesta: se duplica usuario

Código PHP:

// por seguridad ...
function tratar_basico($string) {
  
// esta funcion no hace nada jejeje pero si buscas 
  // en google encontraras cientos de buenas 
  // funciones que revisan cadenas de texto!!
  
return($string);
}

if(!isset(
$_SESSION['user'])) {
    
header("Location: index.php");
}

if(isset(
$_POST['Registrar'])) {
    
// aconsejable ....
    //$dni = tratar_basico($_POST['dni']);

    // o (a tu estilo) ....
    
$dni $_POST['dni'];
    
$sql mysql_query("SELECT * FROM personal WHERE dni = '$dni'");
    if (
mysql_num_rows($sql) > 0)
    {
    
// Ese dni ya esta registrado!!!
    
echo "Usaurio Creado";
    }
    else
    {
    
    

    
$ins_personal "INSERT INTO personal(paterno, materno, nombres, dni, fec_nac, sexo, direccion, id_departamento, id_provincia, id_distrito, telefono, celular, email, profesion, grado_academico, asignatura, nombre_banco, nro_cuenta, fec_registro, ind_personal, usuario_registro, tipo_user) 
                    VALUES('" 
$_POST['paterno'] . "', '" $_POST['materno'] . "', '" $_POST['nombres'] . "', '" $_POST['dni'] . "', '" $_POST['ano'] . '-' $_POST['mes'] . '-' $_POST['dia'] . "', '" $_POST['sexo'] . "', '" $_POST['direccion'] . "', '" $_POST['id_departamento'] . "', '" $_POST['id_provincia'] . "', '" $_POST['id_distrito'] . "', '" $_POST['telefono'] . "', '" $_POST['celular'] . "', '" $_POST['email'] . "', '" $_POST['profesion'] . "', '"$_POST['grado_academico']."'. '"$_POST['asignatura']."'. '"$_POST['nombre_banco'] . "', '" $_POST['nro_cuenta'] . "', '" date('Y-m-d H:i') . "', 'S', '" $_SESSION['id_usuario'] . "', '5')";
    echo 
$ins_personal;
    
db_query($ins_personal);
    
    
header("Location: " $_SERVER['PHP_SELF']);
}
}
?> 
__________________
_________________________
La computadora nació para resolver problemas que antes no existían
  #5 (permalink)  
Antiguo 04/07/2009, 13:31
 
Fecha de Ingreso: junio-2009
Ubicación: lima
Mensajes: 139
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: se duplica usuario

uhummm aun flata algo manito mira


este errror= INSERT INTO personal(paterno, materno, nombres, dni, fec_nac, sexo, direccion, id_departamento, id_provincia, id_distrito, telefono, celular, email, profesion, grado_academico, asignatura, nombre_banco, nro_cuenta, fec_registro, ind_personal, usuario_registro, tipo_user) VALUES('GGGGGGGGGGGGG', 'GGGGGGGGGGGGG', 'GGGGGGGGGGGG CV CV', '456789412', '--', 'M', '', '', '', '', '', '', '', '', ''. ''. '', '', '2009-07-04 14:25', 'S', '310', '5')Invalid query
  #6 (permalink)  
Antiguo 10/07/2009, 16:15
 
Fecha de Ingreso: junio-2009
Ubicación: lima
Mensajes: 139
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: se duplica usuario

ayudaaaaaaaaaa pls
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:32.