PHP - Manejando errores

   
Vista:

Manejando errores

Publicado por Cachi (33 intervenciones) el 18/02/2016 15:48:43
Hola !

De este código que adjunto de un login de usuarios, ¿ Cómo debería modificar el código para hacer el tratamiento de errores a través de excepciones de PHP en lugar de cómo está hecho ?
¿Cómo lo harían ustedes ?

Gracias por la ayuda amigos !
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Manejando errores

Publicado por xve (5519 intervenciones) el 18/02/2016 20:32:23
Hola Cachi, puedes ser un poco mas especifico? exactamente que tipo de errores quieres controlar?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Manejando errores

Publicado por Cachi (33 intervenciones) el 19/02/2016 14:07:40
Hola XVE, cómo estás ?

Me refiero a reemplazar las situaciones de error mandando una excepcion en lugar de manejarlo por ejemplo con un die(mysql_error()) o con un if y mostrando un mensaje....
¿Cómo podría hacer esos cambios ?

¿Me explico mejor ?

Gracias cómo siempre !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Manejando errores

Publicado por xve (5519 intervenciones) el 19/02/2016 19:26:15
Cada vez que ejecutas una instrucción o comando, por ejemplo: mysql_connect(), te devuelve el manejador de la base de datos, o false en caso de error.

Te refieres a algo así?
1
2
3
4
5
6
7
$conexion=mysql_connect("localhost", "root", "");
if($conexion==false)
{
    echo "Error";
}else{
    ....
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Manejando errores

Publicado por Cachi (33 intervenciones) el 19/02/2016 21:11:57
Me refiero a algo así en el archivo de conexion por ejemplo reemplazar el exit o die que tienen tanto el mysql_connect como el mysql_select_db por algo asi:

1
2
3
4
5
6
7
8
9
@$conexion=mysql_connect("localhost", "root", "");
@$dbseleccionada=mysql_select_db("login", $conexion);
 
if (!$conexion) {
throw new Exception ('No se pudo establecer una conexion');
}
if (!$dbseleccionada) {
throw new Exception ('No se pudo seleccionar la base de datos');
}

Usando exception... pero no se cómo hacerlo en todos los casos, estoy algo confundido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Manejando errores

Publicado por Cachi (33 intervenciones) el 21/02/2016 20:54:09
Hola !
Ya hice la modificación en connect.php

Lo tenía así:
1
2
3
4
5
6
<?php
@$conexion=mysql_connect("localhost", "root", "")
or exit("No se pudo establecer una conexión");
@$dbseleccionada=mysql_select_db("login", $conexion)
or exit("No se pudo seleccionar la base de datos");
?>

Y lo transformé en esto:
1
2
3
4
5
6
7
8
9
<?php
try {
@$conexion=mysql_connect("localhost", "root", "");
@$dbseleccionada=mysql_select_db("login", $conexion);
if (!$conexion) { throw new Exception ('Error: Imposible establecer una conexion');}
if (!$dbseleccionada) { throw new Exception ('Error: Imposible seleccionar la base de datos');}
}
catch (Exception $e) { echo $e->getMessage(); exit();}
?>

Lo que no se es cómo hacer este tipo de cambio en el login.php donde el select

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>
 
<body>
<?php
include ('conect.php');
 
$result = mysql_query("SELECT * FROM usuarios WHERE usuario = '".$_POST['usuario']."' AND password = '".$_POST['password']."' ") or die(mysql_error());
 
$row = mysql_fetch_array($result);
if (mysql_num_rows($result) !=0){
	$_SESSION['usuario'] = $_POST['usuario'];
	$_SESSION['password'] = $_POST['password'];
?>
	<script type="text/javascript">
		window.location='pagina2.php'
	</script>
<?php
}
else {
?>
	<script type="text/javascript">
		alert('Usuario y/o password inexistentes');
		window.location='inicio.html'
	</script>
<?php
}
 
?>
</body>
</html>

Ni tampoco se me ocurre cómo hacerlo en el registrar.php donde el insert.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>
 
<body>
<?php
include ('conect.php');
 
mysql_query ("INSERT INTO usuarios VALUES ('".$_POST['usuario']."', '".$_POST['password']."', '".$_POST['nombre']."', '".$_POST['apellido']."', '".$_POST['email']."', ".$_POST['dni'].")");
 
if (mysql_errno() == 0){
	echo 'El usuario ha sido dado de alta';
	echo '<a href="inicio.html">Ingresar</a>';
}
else{
	if (mysql_errno() == 1062){
 
?>
		<script type="text/javascript">
			alert('Ese nombre de usuario ya existe en la base de datos');
			window.location='inicio.html'
        </script>
<?php
	}
	else{
		 die ('Error al insertar: '.mysql_error());
	}
}
?>
</body>
</html>

Tanto código me confunde :(

Alguna idea ?
Gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Manejando errores

Publicado por Cachi (33 intervenciones) el 23/02/2016 14:30:37
Hola !!

Sigo trabado con este tema, ¿Alguien podría darme alguna ayuda por favor ?

Desde ya muchísimas gracias !!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Manejando errores

Publicado por xve (5519 intervenciones) el 23/02/2016 18:41:26
Hola Cachi, no me queda claro exactamente que necesitas controlar...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Manejando errores

Publicado por Cachi (33 intervenciones) el 23/02/2016 20:59:26
Gracias XVE por tu interés !!

Me refiero a no usar "or die(mysql_error()" o " or exit("No se pudo establecer una conexión"); "
Y en lugar de eso modificarlo para poder usar Excepciones... Cómo hice en el archivo connect.php que mostré unos mensajes más arriba. Lo mismo quisiera hacer en registrar.php y login.php

Alguna idea ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Manejando errores

Publicado por xve (5519 intervenciones) el 24/02/2016 07:55:49
Hola Cachi, pero en el resto de tu código, ya no tienes el "die" o "exit"... solo son consultas sql, no?

Exactamente en que linea querrías utilizar excepciones?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Manejando errores

Publicado por Cachi (33 intervenciones) el 24/02/2016 13:01:27
Hola XVE, sí, tengo DIE...

Fijate por favor en login.php
en la línea 15 hay un die(mysql_error())
y en el registrar.php en la línea 29 hay un die ('Error al insertar: '.mysql_error());

Esos, cómo los manejo con excepciones ?

Gracias desde ya XVE !!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Manejando errores

Publicado por xve (5519 intervenciones) el 24/02/2016 15:30:02
Hola Cachi, perdona, no lo habia visto, porque en la consulta mysql_query() no tiene sentido ponerlo, ya que la consulta no devolvera nunca un error... o no devuelve registros o devuelve registros!!! revisa la documentación y veras como controlarlo...

http://php.net/manual/es/function.mysql-query.php
1
2
3
4
$result = mysql_query('SELECT * WHERE 1=1');
if (!$result) {
    die('Invalid query: ' . mysql_error());
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Manejando errores

Publicado por Cachi (33 intervenciones) el 24/02/2016 15:43:13
OK, gracias !!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar