elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Mensajes de error en PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Mensajes de error en PHP  (Leído 2,946 veces)
#Aitor

Desconectado Desconectado

Mensajes: 173



Ver Perfil
Mensajes de error en PHP
« en: 31 Diciembre 2013, 22:16 pm »

¡Hola familia! (Qué cutre quedó esto)

Una preguntita muy simple.

Un formulario, que envia los datos a traves de PHP, metodo POST (Aunque esto último es irrelevante supongo).

Almaceno lo introducido en el formulario en una variable.

Código
  1. $ejemplo = $_POST['dato1'];
  2.  

Si yo me salto la url donde está el formulario, y me voy directamente al .php, la variable $ejemplo no está definida, y PHP tira este error.

Código
  1. Notice: Undefined index: user in C:\xampp1\htdocs\PHP\Pruebas\bd.php on line 5
  2. Campos vacios
  3.  

¿Cómo evito que PHP muestre los errores a todo el quisqui que entre ahí? O en concreto ése error.

Primero, porque queda feo.
Segundo, porque estoy dando información al usuario, como que en la linea 5 hay algo que no está definido...

Un saludo, y... ¿Feliz 2014? 2 horitas ;_;



En línea

Mi algoritmo en PHP (estupideces y más).
Código
  1. while($Se_feliz){
  2.  Piensa_un_OBJETIVO(); // Sin excusas!
  3.  if($Tienes_un_objetivo){
  4.    Suspira(); // Sé paciente.
  5.    if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return;
  6.      //RETURN; ¿O volvemos a empezar?
  7.    }else{
  8.      Inténtalo_de_nuevo();
  9.    }
  10.  }
  11. }
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: Mensajes de error en PHP
« Respuesta #1 en: 31 Diciembre 2013, 22:24 pm »

Lo mas normal es comprobar si la variable en cuestion esta declarada.

Código
  1. if(isset($_POST['dato1'])){$ejemplo = $_POST['dato1'];}
  2. // o
  3. $ejemplo = (isset($_POST['dato1']) ? $_POST['dato1'] : null);

Aunque también puedes quitar los errores del tipo NOTICE con
Código
  1. error_reporting(E_ALL ^ E_NOTICE);

Saludos


En línea

EFEX


Desconectado Desconectado

Mensajes: 1.171


"Dinero Facil"


Ver Perfil WWW
Re: Mensajes de error en PHP
« Respuesta #2 en: 31 Diciembre 2013, 22:33 pm »

Tambien se puede utilizar empty()

Código
  1. $var = 0;
  2. // Se evalúa a true ya que $var está vacia
  3. if (empty($var)) {
  4.    echo '$var es o bien 0, vacía, o no se encuentra definida en absoluto';
  5. }
  6.  

Citar
Devuelve FALSE si var existe y tiene un valor no vacío, distinto de cero. De otro modo devuelve TRUE.

Las siguientes expresiones son consideradas como vacías:

    "" (una cadena vacía)
    0 (0 como un integer)
    0.0 (0 como un float)
    "0" (0 como un string)
    NULL
    FALSE
    array() (un array vacío)
    $var; (una variable declarada, pero sin un valor)
http://php.net/manual/es/function.empty.php

off: Parece que hoy somos 3 en el foro de desarrollo web  :), aqui faltan unas 4 horas.
En línea

#Aitor

Desconectado Desconectado

Mensajes: 173



Ver Perfil
Re: Mensajes de error en PHP
« Respuesta #3 en: 31 Diciembre 2013, 22:39 pm »

... ¿Matadme?

Mirad el código que tenía.

Código
  1. $usuario = $_POST['user'];
  2.  
  3. if(isset($usuario) && strlen($user)>0){
  4.  

Primero la variable y después la comprobación de si ésta era nula, con razón me salia el mensaje...


Pd: @EFEX yep... Lamento molestar tanto xD

¿4 horas? ¿de dónde eres? por tu forma de escribir diría argentina... *Revisando hora de argentina*  Me equivoqué  :silbar: :silbar:

Gracias a los dos de nuevo.
« Última modificación: 31 Diciembre 2013, 22:41 pm por #Aitor » En línea

Mi algoritmo en PHP (estupideces y más).
Código
  1. while($Se_feliz){
  2.  Piensa_un_OBJETIVO(); // Sin excusas!
  3.  if($Tienes_un_objetivo){
  4.    Suspira(); // Sé paciente.
  5.    if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return;
  6.      //RETURN; ¿O volvemos a empezar?
  7.    }else{
  8.      Inténtalo_de_nuevo();
  9.    }
  10.  }
  11. }
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: Mensajes de error en PHP
« Respuesta #4 en: 31 Diciembre 2013, 23:05 pm »

Citar
Tambien se puede utilizar empty()

De hecho yo lo prefiero antes que isset pero el no aceptar el 0 me caga (xD) y a veces tengo que poner mas condiciones estúpidas xD

Código
  1. if((empty($_GET['dato1'])&&@$_GET['dato1']!=='0')){
  2.  die('No has declarado la variable, negro');
  3. }

o funciones para reutilizar...

Código
  1. <?php
  2. function empti(){
  3.   foreach(func_get_args() as $arg){
  4.      if(!isset($arg)){return true;}
  5.      elseif(!is_array($arg)&&!is_object($arg)&&!is_numeric($arg)){
  6.         $long = (function_exists('mb_strlen') ? mb_strlen($arg) : strlen($arg));
  7.         if($long>0){continue;}else{return true;}
  8.      } elseif(is_numeric($arg)||is_int($arg)){
  9.         continue;
  10.      } else {
  11.         if(empty($arg)){return true;}else{continue;}
  12.      }
  13.   }
  14.   return false;
  15. }
  16.  
  17.  
  18. $arr = array(); $arr2 = array(5);
  19. $str = ''; $str2 = '1';
  20. $int = 0; $int2 = 1;
  21. $var = null; $var2 = false;
  22.  
  23. var_dump(empti($arr)); echo '<br />'; var_dump(empti($arr2)); echo '<br />';
  24. var_dump(empti($str)); echo '<br />'; var_dump(empti($str2)); echo '<br />';
  25. var_dump(empti($int)); echo '<br />'; var_dump(empti($int2)); echo '<br />';
  26. var_dump(empti($var)); echo '<br />'; var_dump(empti($var2)); echo '<br />';
  27.  
  28. // Acepta cuantos parametros le pases, si alguno de ellos esta vacio, devueve true.
  29. var_dump(empti($arr,$arr2,$str,$str2,$int,$int2,$var,$var2));
  30. ?>

Se me olvido que tambien puedes silenciar el error mediate @. Ejemplo
Código
  1. $ejemplo = @$_POST['dato1'];

Saludos
« Última modificación: 31 Diciembre 2013, 23:08 pm por @drvy » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines