Foros del Web » Programando para Internet » PHP »

ayuda con "or die"

Estas en el tema de ayuda con "or die" en el foro de PHP en Foros del Web. hola, tengo una duda, con el siguiente codigo. Código PHP: <?php //Configuracion de la cuenta include( "config/config.php" ); //conectamos ala cuenta mysql_connect  ( $dbhost ,  $dbusername ,  $dbuserpass ); mysql_select_db ...
  #1 (permalink)  
Antiguo 13/10/2009, 13:20
 
Fecha de Ingreso: mayo-2009
Mensajes: 200
Antigüedad: 15 años
Puntos: 7
Exclamación

hola, tengo una duda, con el siguiente codigo.

Código PHP:
<?php
//Configuracion de la cuenta
include("config/config.php");
//conectamos ala cuenta
mysql_connect ($dbhost$dbusername$dbuserpass);
mysql_select_db($dbname) or die('No se puede seleccionar la base de datos');
//comprobamos la secion
session_start();
//sacamos la info de la BD tabla user
$IDDATA mysql_query("SELECT ID,username FROM user") or die(mysql_error());
//la pasamos a array
$BET mysql_fetch_array($IDDATA);
//y estraemos el valor de ID en la tabla user
$INFO $IDDATA['ID'];
//sacamos la info de la BD tabla pj
$IDDATAB mysql_query("SELECT ID,namepj FROM pj WHERE ID = '$INFO'") or die(mysql_error());
//la pasamos a array
$DBT mysql_fetch_array($IDDATAB);
//y estraemos el valor de ID en la tabla pj
$DBTZ $DBT['ID'];
//comparacion de las dos ID
if ($INFO != $IDDATAB) {
//manda a crear el personaje
    
echo "<meta http-equiv='refresh' content='1;url=/create.html' />";
}else{
//manda a la sala de juegos
    
echo "<meta http-equiv='refresh' content='1;url=/play.html' />";
?>
Primero es para que miren el código y me digan los errores otra cosa, los dos últimos or die quisiera quitarlos por que lo único que necesito es que revise si los datos están en la tabla, y siga de largo sin meterse en el error, luego yo ago la comparacion que si no encuentra nada obvio las variables van a ser diferentes, la pregunta como hago para pasar la variable $INFO al HTML url=/create.html ya que es uno de los campos que se usaran para crear la siguiente parte en este caso sera la misma ID para las 2 tablas.

creo que la variable la puedo pasar con esto pero tengo que probarlo, lo que no me queda claro aun es lo del "or die",

Cita:
echo "<meta http-equiv='refresh' content='1;url=/create.html?info' />";

Última edición por GatorV; 13/10/2009 a las 18:22
  #2 (permalink)  
Antiguo 13/10/2009, 14:19
Avatar de _-ZeuS-_  
Fecha de Ingreso: junio-2007
Ubicación: Quito, Ecuador! ;)
Mensajes: 100
Antigüedad: 16 años, 10 meses
Puntos: 7
Respuesta: ayuda con "or die"

mira la funcion die() es una función que te ayuda a matar la ejecución del servidor si encuentra un error en el código por ejemplo tienes:

Código PHP:
$IDDATAB mysql_query("SELECT ID,namepj FROM pj WHERE ID = '$INFO'") or die(mysql_error()); 
lo que le estás diciendo al servidor es que si encuentra un error en la ejecución del query mate el proceso y te muestre el error que te devuelve mysql. así ke no te preokupes por eso sólo es para ayudar si tuvieras un error si te está dando ese error es por que tienes un problema te recomiendo leer los errores. Si no tienes errores el sistema va a pasar trankilamente ahora el codigo anterior teien ke ser así:

Código PHP:
echo "<meta http-equiv='refresh' content='1;url=/create.html?info=$INFO' />"
y lo cojes con $_GET["info"]; y listo
  #3 (permalink)  
Antiguo 13/10/2009, 14:35
 
Fecha de Ingreso: mayo-2009
Mensajes: 200
Antigüedad: 15 años
Puntos: 7
Exclamación Respuesta: ayuda con "or die"

ok listo les muestro el codigo al acabarlo:

Cita:
<?php
//Configuracion de la cuenta
include("config/config.php");
//conectamos ala cuenta
mysql_connect ($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die('No se puede seleccionar la base de datos');
//comprobamos la secion
session_start();
//sacamos la info de la BD tabla user
$iddata = mysql_query("SELECT ID,username FROM user") or die(mysql_error());
//la pasamos a array
$beta = mysql_fetch_array($iddata);
//y estraemos el valor de ID en la tabla user
$info = $iddata['ID'];
//sacamos la info de la BD tabla pj
$iddatab = mysql_query("SELECT ID,namepj FROM pj WHERE ID = '$INFO'") or die(mysql_error());
//la pasamos a array
$dbt = mysql_fetch_array($iddatab);
//y estraemos el valor de ID en la tabla pj
$dbtz = iddata['ID'];
//comparacion de las dos ID
if ($info != $dbtz) {
//manda a crear el personaje
echo "<meta http-equiv='refresh' content='1;url=/create.html?info=$info' ' />";
}else{
//manda a la sala de juegos
echo "<meta http-equiv='refresh' content='1;url=/play.html' />";
?>
resivir la variable en el html
Código HTML:
<?php
$info=($_GET["info"]);
?> 
y pasarle el valor a otra variable en html para que sea usada por otro php:
(no esta todo el codigo)
Código HTML:
<form name="form1" method="post" action="ser.php" id="form1" class="f1">
<input type="hidden" name="ID" id="ID" value="<?php $info; ?>" />
</form> 
  #4 (permalink)  
Antiguo 13/10/2009, 14:42
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: ayuda con "or die"

Cita:
Iniciado por _-ZeuS-_ Ver Mensaje
mira la funcion die() es una función que te ayuda a matar la ejecución del servidor si encuentra un error en el código por ejemplo tienes:

Código PHP:
$IDDATAB mysql_query("SELECT ID,namepj FROM pj WHERE ID = '$INFO'") or die(mysql_error()); 
lo que le estás diciendo al servidor es que si encuentra un error en la ejecución del query mate el proceso y te muestre el error que te devuelve mysql. así ke no te preokupes por eso sólo es para ayudar si tuvieras un error si te está dando ese error es por que tienes un problema te recomiendo leer los errores. Si no tienes errores el sistema va a pasar trankilamente ahora el codigo anterior teien ke ser así:
Significa que si tengo deshabilitado los errores en mi PHP.INI no veré ningún error por pantalla aunque tenga la función die()?

Y otra pregunta sobre el mismo tema. Aunque tenga habilitado o deshabilitado el reporte de errores del php.ini (indistintamente), en el fichero de log del servidor web podré ver el mensaje de error del mysql_error() o me aparecerá otro distinto?

Gracias de antemano!
  #5 (permalink)  
Antiguo 13/10/2009, 16:58
Avatar de _-ZeuS-_  
Fecha de Ingreso: junio-2007
Ubicación: Quito, Ecuador! ;)
Mensajes: 100
Antigüedad: 16 años, 10 meses
Puntos: 7
Respuesta: ayuda con "or die"

en realidad no es eso, mira el php.ini te muestra los errores de ejecución de php ahora la función die() como te explique hace que se pare la ejecución del código en otras palabras le dice al servidor no sigas ejecutando el código luego de esto.

ahora el die() también puede ser usado como visualizador más o menos como echo debido a que si te fijas dice die(mysql_error()); lo que hace es, indistintamente del error o del archivo php.ini es mostrarte el error que el servidor de mysql te arrojó. por ejemplo me puede salir en pantalla "Error in query: INSERT ITNO PRUEBA" pero si no te sale ningún error es por que está funcionando bien.

La forma de poner die(mysql_error()); nació precisamente para saber si existio un error con la base de datos al momento de manipularla x estos errores php no te los muestra
  #6 (permalink)  
Antiguo 13/10/2009, 18:17
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Respuesta: ayuda con "or die"

Solo una nota: "or die()" son en realidad dos operaciones completamente distintas e independientes.

or no es más que un operador lógico, die() es una función equivalente a exit(), son exactamente iguales y su función es terminar la ejecución del script, permitiendo arrojar un código o mensaje de salida.

No más. Su uso es independiente aunque se ha extendido el uso de esta combinación, la cual se considera una mala practica. En el momento de desarrollo ese tipo "mensajes" y comportamiento podría ser válido, pero en un sistema en producción se debería procurar la presentación del mensaje de error de manera más amigable al usuario sin "matar" la aplicación y sin mostrar información "técnica" que pueda comprometer la seguridad del sistema.

Un saludo
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #7 (permalink)  
Antiguo 13/10/2009, 22:10
 
Fecha de Ingreso: mayo-2009
Mensajes: 200
Antigüedad: 15 años
Puntos: 7
Exclamación Respuesta: ayuda con "or die"

Cita:
Iniciado por jam1138 Ver Mensaje
Solo una nota: "or die()" son en realidad dos operaciones completamente distintas e independientes.

or no es más que un operador lógico, die() es una función equivalente a exit(), son exactamente iguales y su función es terminar la ejecución del script, permitiendo arrojar un código o mensaje de salida.

No más. Su uso es independiente aunque se ha extendido el uso de esta combinación, la cual se considera una mala practica. En el momento de desarrollo ese tipo "mensajes" y comportamiento podría ser válido, pero en un sistema en producción se debería procurar la presentación del mensaje de error de manera más amigable al usuario sin "matar" la aplicación y sin mostrar información "técnica" que pueda comprometer la seguridad del sistema.

Un saludo
Tienes toda la rason pero tambien deves considerar que a la hora de desarrollar la aplicacion es preferible saber de donde salen los errores. y este metodo es efectivo y preciso.para asta donde lo e provado.
  #8 (permalink)  
Antiguo 14/10/2009, 12:11
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Respuesta: ayuda con "or die"

Mis ojos
Cita:
Iniciado por arcanisgk1 Ver Mensaje
Tienes toda la razón pero también debes considerar que a la hora de desarrollar la aplicación es preferible saber de donde salen los errores. y este método es efectivo y preciso.para hasta donde lo he probado.
... ajá, ¿quién dijo lo contrario? .


Va de nuevo.
Lo idóneo sería poder capturar el error, crear un log y mostrarle un mensaje amigable al usuario "dentro del propio sistema". Con esta metodología de uso (or die()), no puedes hacer nada de eso, no puedes cachar el error, el mensaje que se le presenta al usuario es nada amigable y, peor aún, en este caso concreto --donde se arroja lo retornado por mysql_error()-- se muestar información sensible que puede significar un problema en la seguridad del código.

En pocas palabras: una mala práctica.

PHP cuenta con buenas funciones para el manejo de errores. Como desarrollador puedes lanzar errores que se comportarán como los nativos de php (trigger_error()) con lo cual podrías conseguir toda la información que necesitarás a la hora de desarrollar, permitiéndote desactivarlos en un ambiente de producción (error_reporting()), mostrando un mensaje amigable y útil al usuario sin finalizar la aplicación. De hecho, con PHP puedes crear tu propio gestor de errores (set_error_handler()), el cual, creo por acá había uno creado por Webstudio hace ya algún tiempo.

Otra opción que vino con PHP5 es el uso de excepciones, fácilmente manejables con bloques try{} catch(){} y que están siendo usadas de maneja nativa por extensiones como PDO ... pero, eso, no es asunto de este tema ...

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 01:20.