Foros del Web » Programando para Internet » PHP »

Qué falla en este código?

Estas en el tema de Qué falla en este código? en el foro de PHP en Foros del Web. Hola a todos. He hecho un código de registro de una web que estoy desarrollando. Pero soy novato en esto del PHP y me da ...
  #1 (permalink)  
Antiguo 09/02/2013, 14:33
 
Fecha de Ingreso: septiembre-2011
Mensajes: 60
Antigüedad: 13 años, 2 meses
Puntos: 1
Pregunta Qué falla en este código?

Hola a todos. He hecho un código de registro de una web que estoy desarrollando. Pero soy novato en esto del PHP y me da error en el código (línea 5).

Sé que el resto de las líneas funcionan, pero dudo desde la 5 a la 13. Necesito que valla comprobando si he introducido el email. Si lo he introducido correctamente. Si coinciden las contraseñas y demás.

El código es:
Código PHP:
include('config.php');
    
// Primero comprobamos que ningún campo esté vacío y que todos los campos existan.
    
    
if ( isset($_POST["email"]) && empty($_POST["email"] ) {
        echo 
"Falta el email";
    } elseif (!
eregi("^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9\-]+\. [a-zA-Z0-9\-\.]+$"$_POST["email"])) {
        echo 
"El email introducido no es válido";
    } elseif (empty(isset(
$_POST["password"])) {
        echo 
"Falta la contraseña";
    } elseif (
$_POST["password"] != (isset($_POST["password2"])) {
        echo 
"Las contraseñas no coinciden";
    } else {

    if(isset(
$_POST['password']) || !empty($_POST['password']) && $_POST['password'] &&
    isset (
$_POST['email']) || !empty($_POST['email'])) {
        
// Si entramos es que todo se ha realizado correctamente
        
$password md5($_POST['password']);
        
$mail htmlentities(isset($_POST['email']));
        
        
$link mysql_connect ($dbhost$dbusername$dbuserpass);
        
mysql_select_db($dbname,$link);
        
        
$queEmp "SELECT email FROM usuarios WHERE email='$mail'";
        
$resEmp mysql_query($queEmp$link) or die(mysql_error());
        
$totEmp mysql_num_rows($resEmp);
        if(
$totEmp 0){
        echo 
"El mail ingresado no esta disponible";
        exit();
        }
        
        
// Con esta sentencia SQL insertaremos los datos en la base de datos
        
mysql_query("INSERT INTO usuarios (email,password)
        VALUES ('{$mail}','{$password}')"
,$link);
        
        
// Damos de baja el enlace de registro
        
$hash htmlentities(isset($_GET['hash'])); 
        
$link mysql_connect($dbhost$dbusername$dbuserpass);
        
mysql_query("UPDATE invitacion SET valido='NO' WHERE hash='$hash'",$link);
        
        
// Ahora comprobaremos que todo ha ido correctamente
        
$my_error mysql_error($link);

        if(!empty(
$my_error)) {

            echo 
"Ha habido un error al insertar los valores. $my_error";

        } else {

            echo 
"Los datos han sido introducidos satisfactoriamente";

        }

    } else {

        echo 
"Error, no ha introducido todos los datos";

    } 
Por si hace falta, el código de la página de registro es:
Código HTML:
<html>
<head>
<title>Sistema de invitacion</title>
</head>
<body>
<form name="form1" method="post" action="insertar.php">
	Email:
	<label>
		<input name="username" type="email" id="email">
	</label>
	<br>
	<br>
	Contraseña:
	<label>
		<input name="password" type="password" id="password">
	</label>
	<br>
	<br>
	Repetir contraseña:
	<label>
		<input name="password2" type="password" id="password2">
	</label>
	<br>
	<br>
	<label>
		<input type="submit" name="Submit" value="Registrarse">
	</label>
</form>
</body>
</html> 
Muchas gracias. Espero que me podáis ayudar.
PD: Recalco que soy principiante en PHP ;)
  #2 (permalink)  
Antiguo 09/02/2013, 14:37
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años, 7 meses
Puntos: 58
Respuesta: Qué falla en este código?

Dinos que error te da exactamente y será más fácil ayudarte
  #3 (permalink)  
Antiguo 09/02/2013, 17:40
 
Fecha de Ingreso: septiembre-2011
Mensajes: 60
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Qué falla en este código?

Cita:
Iniciado por alyciashape Ver Mensaje
Dinos que error te da exactamente y será más fácil ayudarte
Me da este error: Parse error: parse error in /Library/WebServer/Documents/login/insertar.php on line 5
  #4 (permalink)  
Antiguo 09/02/2013, 19:16
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 12 años, 1 mes
Puntos: 36
Respuesta: Qué falla en este código?

viendo solamente a la rápida, veo que al primer if le falta cerrarse con el ")"

Saludos
  #5 (permalink)  
Antiguo 09/02/2013, 19:21
 
Fecha de Ingreso: septiembre-2011
Mensajes: 60
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Qué falla en este código?

Cita:
Iniciado por rottenp4nx Ver Mensaje
viendo solamente a la rápida, veo que al primer if le falta cerrarse con el ")"

Saludos
Ok. Ya lo he corregido, pero me sigue dando el mismo error en el mismo lugar, que puede ser?

Saludos
  #6 (permalink)  
Antiguo 10/02/2013, 10:48
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Qué falla en este código?

En la línea:

Código PHP:
Ver original
  1. if ( isset($_POST["email"]) && empty($_POST["email"] ) {

Te falta cerrar el paréntesis del if

En la línea:

Código PHP:
Ver original
  1. } elseif (!eregi("^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9\-]+\. [a-zA-Z0-9\-\.]+$", $_POST["email"])) {

Estás usando una función obsoleta, deberías usar las funciones preg_*

En la línea:

Código PHP:
Ver original
  1. } elseif (empty(isset($_POST["password"])) {

No puedes usar un empty y un isset juntos de esa manera y además no cerraste un paréntesis.

En la línea:

Código PHP:
Ver original
  1. } elseif ($_POST["password"] != (isset($_POST["password2"])) {

Más de lo mismo, te falta cerrar el último paréntesis del if.

Además de eso muchas de tus condiciones no tienen lógica.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 10/02/2013, 13:21
 
Fecha de Ingreso: septiembre-2011
Mensajes: 60
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Qué falla en este código?

Gracias por la ayuda. He quitado varias condiciones para probarlo. He corregido todo lo que me has dicho y demás.

El código finalmente me ha quedado así:
Código PHP:
<?php
include('config.php');
    
// Primero comprobamos que ningún campo esté vacío y que todos los campos existan.
    
    
if ( isset($_POST["email"]) && empty($_POST["email"]) ) {
        echo 
"Falta el email";
    } elseif (empty(
$_POST["password"])) {
        echo 
"Falta la contraseña";
    } elseif (
$_POST["password"] != (isset($_POST["password2"]))) {
        echo 
"Las contraseñas no coinciden";
    } else {

    if(isset(
$_POST['password']) || !empty($_POST['password']) && $_POST['password'] &&
    isset (
$_POST['email']) || !empty($_POST['email'])) {
        
// Si entramos es que todo se ha realizado correctamente
        
$password md5($_POST['password']);
        
$mail htmlentities(isset($_POST['email']));
        
        
$link mysql_connect ($dbhost$dbusername$dbuserpass);
        
mysql_select_db($dbname,$link);
        
        
$queEmp "SELECT email FROM usuarios WHERE email='$mail'";
        
$resEmp mysql_query($queEmp$link) or die(mysql_error());
        
$totEmp mysql_num_rows($resEmp);
        if(
$totEmp 0){
        echo 
"El mail ingresado no esta disponible";
        exit();
        }
        
        
// Con esta sentencia SQL insertaremos los datos en la base de datos
        
mysql_query("INSERT INTO usuarios (email,password)
        VALUES ('{$mail}','{$password}')"
,$link);
        
        
// Damos de baja el enlace de registro
        
$hash htmlentities(isset($_GET['hash'])); 
        
$link mysql_connect($dbhost$dbusername$dbuserpass);
        
mysql_query("UPDATE invitacion SET valido='NO' WHERE hash='$hash'",$link);
        
        
// Ahora comprobaremos que todo ha ido correctamente
        
$my_error mysql_error($link);

        if(!empty(
$my_error)) {

            echo 
"Ha habido un error al insertar los valores. $my_error";

        } else {

            echo 
"Los datos han sido introducidos satisfactoriamente";

        }

    } else {

        echo 
"Error, no ha introducido todos los datos";

    }
?>
Y me sigue dando error. pero esta vez me da este error:
Parse error: parse error in /Library/WebServer/Documents/login/insertar.php on line 57

O sea, en el cierre del php (?>) No entiendo por qué.

Pueden ayudarme a hacer las condiciones que comenté al principio de esta pregunta sin que de errores?

Muchas gracias a todos!
Saludos
  #8 (permalink)  
Antiguo 10/02/2013, 13:25
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Qué falla en este código?

Al final cerraste una llave y son 2... Más cuidado con las llaves de las condiciones.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Etiquetas: correccion, sistema, usuarios
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 12:13.