Foros del Web » Programando para Internet » PHP »

Detener una ejecucion si se registra un usuario...

Estas en el tema de Detener una ejecucion si se registra un usuario... en el foro de PHP en Foros del Web. Hola, estoy haciendo un registro de usuario con html y php. En este hay tipicos mensajes de errores como cuando se introduce un nombre de ...
  #1 (permalink)  
Antiguo 07/07/2011, 12:15
Avatar de LuisCZ  
Fecha de Ingreso: noviembre-2009
Ubicación: Maracaibo
Mensajes: 127
Antigüedad: 12 años, 7 meses
Puntos: 0
Pregunta Detener una ejecucion si se registra un usuario...

Hola, estoy haciendo un registro de usuario con html y php. En este hay tipicos mensajes de errores como cuando se introduce un nombre de usuario que ya esta siendo utilizado. Todo esto me funciona bien, el problema es que cuando el usuario se registra correctamente aparecen los mensajes de que el nombre de usuario y el correo ya se estan usando (ojo me refiero a solo los mensajes, el usuario se guarda en la base de datos).
Se porque se esta produciendo... pero no se evitarlo, ya he probado colocando die, exit, return debajo de la pieza de codigo que registra a el usuario, pero la pagina se desordena en cuanto a tablas e imagenes se refiere.
Cabe mencionar que los mensajes estan en otras tablas aparte y estan ubicadas por debajo del registro de usuario en cuanto a codigo se refiere.

Saludos y gracias de antemano.
  #2 (permalink)  
Antiguo 07/07/2011, 12:25
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 17 años, 1 mes
Puntos: 394
Respuesta: Detener una ejecucion si se registra un usuario...

Bueno así queda que muy difícil (adivinando)... pon el código para ver el tipo de condiciones y como las estas manejando.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #3 (permalink)  
Antiguo 08/07/2011, 09:38
Avatar de LuisCZ  
Fecha de Ingreso: noviembre-2009
Ubicación: Maracaibo
Mensajes: 127
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Detener una ejecucion si se registra un usuario...

Cita:
Iniciado por jotaincubus Ver Mensaje
Bueno así queda que muy difícil (adivinando)... pon el código para ver el tipo de condiciones y como las estas manejando.
Hola jotaincubus, este es el codigo completo de registro de usuario:

Código:
<?php 
mysql_connect ("localhost", "root",""); 
mysql_select_db("Mybd") or die("Cannot select database"); 

if (isset($_POST["usuario"])) { 
$usuario = $_POST["usuario"]; 
$contrasena = $_POST["contrasena"]; 
$contrasenar = $_POST["contrasenar"];
$pais = $_POST["pais"]; 
$correo = $_POST["correo"]; 
$fecha=date("y,m,d");

if ( $_POST[ 'form' ] == "form2"){
if($usuario==NULL|$contrasena==NULL|$contrasenar==NULL|$pais==NULL|$correo==NULL) { 
echo "";
}else{  
if($contrasena!=$contrasenar) { 
echo ""; 
}else{
if ((strlen($correo) <= 6) or (substr_count($correo,"@") != 1) or (substr($correo,0,1) == "@") or (substr($correo,strlen($correo)-1,1) == "@") or (strstr($correo,"'")) or (strstr($correo,"\"")) or (strstr($correo,"\\")) or (strstr($correo,"\$")) or (strstr($correo," "))){
echo "";
}else{
$checkuser = mysql_query("SELECT usuario FROM usuarios WHERE usuario='$usuario'");
$username_exist = mysql_num_rows($checkuser); 

$checkemail = mysql_query("SELECT correo FROM usuarios WHERE correo='$correo'"); 
$email_exist = mysql_num_rows($checkemail); 

if ($email_exist>0|$username_exist>0) { 
echo ""; 
}else{ 
$query = "INSERT INTO usuarios (usuario, contrasena, pais, correo, fecha) VALUES('$usuario','$contrasena','$pais','$correo','$fecha')";
 mysql_query($query) or die(mysql_error()); 
echo "El usuario $usuario ha sido registrado de manera satisfactoria.";
} 
} 
} 
}
}  
}
?>
		<form method="post" name="formulario">
          <table width="100%" border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td height="50" colspan="2"><table width="100%" height="75" border="0" align="left" cellpadding="0" cellspacing="0">
                <tr>
                  <td width="25" align="left" valign="top"><img src="Imagenes/fonubiI.jpg" width="25" height="75"></td>
                  <td align="left" valign="top" background="Imagenes/fonubiC.jpg"><div align="center" class="UbicacionDePagina">
                    <p>Bienvenidos a la secci&oacute;n de registro de usuario</p>
                    <p class="style11">Ingrese todos sus datos reales y no deje campos vacios para que se realice el registro de manera correcta. </p>
                  </div></td>
                  <td width="25" align="left" valign="top"><img src="Imagenes/fonubiD.jpg" width="25" height="75"></td>
                </tr>
              </table>                              </tr>
            <tr>
              <td height="25" colspan="2">                          </tr>
            <tr>
              <td height="50">
            <label for="textfield"></label><p>
              <label><span class="Texto">Nombre de usuario: </span><br>
              <input name="usuario" type="text" class="Texto" id="usuario" value="<?php if (isset($_POST["usuario"])) {$usuario = $_POST["usuario"]; echo $usuario;} ?>" maxlength="20"/>
              </label>
            </p>
              <td width="700" align="left" valign="baseline">
			  <?php
			  if (isset($_POST["usuario"])) { 
			  $usuario = $_POST["usuario"];
              if($usuario==NULL) { 
			  ?>
			  <p>
			  <table width="300" border="0" align="left" cellpadding="0" cellspacing="0">
                <tr>
                  <td width="25"><img src="Imagenes/error1.png" width="25" height="40"></td>
                  <td background="Imagenes/error2.png"><div align="center" class="style12">Aviso: El campo usuario est&aacute; vacio.</div></td>
                  <td width="25"><img src="Imagenes/error3.png" width="25" height="40"></td>
                </tr>
              </table>
              </p>
			  <?php
              }
			  $checkuser = mysql_query("SELECT usuario FROM usuarios WHERE usuario='$usuario'");
              $username_exist = mysql_num_rows($checkuser); 
			  if ($username_exist>0) { 
			  ?>
			  <p>
              <table width="350" border="0" align="left" cellpadding="0" cellspacing="0">
                <tr>
                  <td width="25"><img src="Imagenes/error1.png" width="25" height="40"></td>
                  <td background="Imagenes/error2.png"><div align="center" class="style12">Aviso: El  nombre de usuario ya est&aacute; en uso.</div></td>
                  <td width="25"><img src="Imagenes/error3.png" width="25" height="40"></td>
                </tr>
              </table>
			  </p>
			  <?php
			  }
              }
              ?>            
              <label><span class="Texto">Correo electrónico:</span><br>
              <input name="correo" type="text" class="Texto" id="correo" value="<?php if (isset($_POST["usuario"])) {$correo = $_POST["correo"]; echo $correo;} ?>" maxlength="40"/>
              </label>
            </p>            </td>
              <td width="700" align="left" valign="baseline">
			  <?php
			  if (isset($_POST["usuario"])) { 
			  $correo = $_POST["correo"];
			  if ((strlen($correo) <= 6) or (substr_count($correo,"@") != 1) or (substr($correo,0,1) == "@") or (substr($correo,strlen(              $correo)-1,1) == "@") or (strstr($correo,"'")) or (strstr($correo,"\"")) or (strstr($correo,"\\")) or (strstr($correo,"\$")) or (strstr($correo," "))){
			  ?>
			  <p>
              <table width="475" border="0" align="left" cellpadding="0" cellspacing="0">
                <tr>
                  <td width="25"><img src="Imagenes/error1.png" width="25" height="40"></td>
                  <td background="Imagenes/error2.png"><div align="center" class="style12">Aviso: El  campo de correo electr&oacute;nico est&aacute; vac&iacute;o o no es v&aacute;lido.</div></td>
                  <td width="25"><img src="Imagenes/error3.png" width="25" height="40"></td>
                </tr>
              </table> 
			  </p>
			  <?php
              }
			  $checkemail = mysql_query("SELECT correo FROM usuarios WHERE correo='$correo'"); 
              $email_exist = mysql_num_rows($checkemail); 
			  if ($email_exist>0) { 
			  ?>
			  <p>
              <table width="525" border="0" align="left" cellpadding="0" cellspacing="0">
                <tr>
                  <td width="25"><img src="Imagenes/error1.png" width="25" height="40"></td>
                  <td background="Imagenes/error2.png"><div align="center" class="style12">Aviso: La  direcci&oacute;n de correo electr&oacute;nico ya se encuentra registrada.</div></td>
                  <td width="25"><img src="Imagenes/error3.png" width="25" height="40"></td>
                </tr>
              </table>
			  </p>
			  <?php
			  }
              }
              ?>			  </td>
            </tr>
                      </table>
          </form>
  #4 (permalink)  
Antiguo 08/07/2011, 10:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 16 años, 1 mes
Puntos: 2135
Respuesta: Detener una ejecucion si se registra un usuario...

El problema es el orden de tu código, deberías de refactorizarlo y tratar de optimizarlo y seguir una logica mas concreta ya que te estas repitiendo y por ende pasa lo que pasa, porque estas entremezclando todo.

Por ejemplo si estas validando puedes usar booleanos para verificar, algo asi:
Código PHP:
Ver original
  1. <?php
  2. $bValid = true;
  3. if (!validacion1()) {
  4.        $mensaje = "error";
  5.        $bValid = false;
  6. }
  7. if (!validacion2()) {
  8.        $mensaje = "error 2";
  9.        $bValid = false;
  10. }
  11.  
  12. // mas abajo
  13. if ($bValid) {
  14.        // insertas en bdd
  15. } else {
  16.        echo $error;
  17. }

Saludos.
  #5 (permalink)  
Antiguo 08/07/2011, 11:58
Avatar de LuisCZ  
Fecha de Ingreso: noviembre-2009
Ubicación: Maracaibo
Mensajes: 127
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Detener una ejecucion si se registra un usuario...

Ok! lo intentare! muchas gracias!

Etiquetas: detener, ejecucion, html, tabla
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:06.