Mensajes de error en PHP

Iniciado por #Aitor, 31 Diciembre 2013, 22:16 PM

0 Miembros y 2 Visitantes están viendo este tema.

#Aitor

¡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 (php) [Seleccionar]

$ejemplo = $_POST['dato1'];


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 (php) [Seleccionar]

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


¿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 ;_;

Mi algoritmo en PHP (estupideces y más).
Código (php) [Seleccionar]
while($Se_feliz){
  Piensa_un_OBJETIVO(); // Sin excusas!
  if($Tienes_un_objetivo){
    Suspira(); // Sé paciente.
    if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return;
      //RETURN; ¿O volvemos a empezar?
    }else{
      Inténtalo_de_nuevo();
    }
  }
}

#!drvy

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

Código (php) [Seleccionar]
if(isset($_POST['dato1'])){$ejemplo = $_POST['dato1'];}
// o
$ejemplo = (isset($_POST['dato1']) ? $_POST['dato1'] : null);


Aunque también puedes quitar los errores del tipo NOTICE con
Código (php) [Seleccionar]
error_reporting(E_ALL ^ E_NOTICE);

Saludos

EFEX

Tambien se puede utilizar empty()

Código (php) [Seleccionar]

$var = 0;
// Se evalúa a true ya que $var está vacia
if (empty($var)) {
    echo '$var es o bien 0, vacía, o no se encuentra definida en absoluto';
}


CitarDevuelve 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.
GITHUB 

#Aitor

#3
... ¿Matadme?

Mirad el código que tenía.

Código (php) [Seleccionar]

$usuario = $_POST['user'];

if(isset($usuario) && strlen($user)>0){


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.
Mi algoritmo en PHP (estupideces y más).
Código (php) [Seleccionar]
while($Se_feliz){
  Piensa_un_OBJETIVO(); // Sin excusas!
  if($Tienes_un_objetivo){
    Suspira(); // Sé paciente.
    if($Consigues_el_objetivo){ echo "¡Felicidades #Aitor!";return;
      //RETURN; ¿O volvemos a empezar?
    }else{
      Inténtalo_de_nuevo();
    }
  }
}

#!drvy

#4
CitarTambien 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 (php) [Seleccionar]
if((empty($_GET['dato1'])&&@$_GET['dato1']!=='0')){
 die('No has declarado la variable, negro');
}


o funciones para reutilizar...

Código (php) [Seleccionar]
<?php
function empti(){
   foreach(
func_get_args() as $arg){
      if(!isset(
$arg)){return true;}
      elseif(!
is_array($arg)&&!is_object($arg)&&!is_numeric($arg)){
         
$long = (function_exists('mb_strlen') ? mb_strlen($arg) : strlen($arg));
         if(
$long>0){continue;}else{return true;}
      } elseif(
is_numeric($arg)||is_int($arg)){
         continue;
      } else {
         if(empty(
$arg)){return true;}else{continue;}
      }
   }
   return 
false;
}


$arr = array(); $arr2 = array(5);
$str ''$str2 '1';
$int 0$int2 1;
$var null$var2 false;

var_dump(empti($arr)); echo '<br />'var_dump(empti($arr2)); echo '<br />';
var_dump(empti($str)); echo '<br />'var_dump(empti($str2)); echo '<br />';
var_dump(empti($int)); echo '<br />'var_dump(empti($int2)); echo '<br />';
var_dump(empti($var)); echo '<br />'var_dump(empti($var2)); echo '<br />';

// Acepta cuantos parametros le pases, si alguno de ellos esta vacio, devueve true.
var_dump(empti($arr,$arr2,$str,$str2,$int,$int2,$var,$var2));
?>


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

Saludos