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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


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

Desconectado Desconectado

Mensajes: 57


Be Free!


Ver Perfil
Undefined variable
« en: 18 Julio 2013, 16:58 pm »

Que anda mal aca?:

Código
  1. <form method="post" action="<?=htmlspecialchars($_SERVER['PHP_SELF'])?>"><fieldset><legend>Form</legend>
  2.  
  3. <label>Name:</label> <input type="text" size="15" name="name" value="<?=$name;?>" /> <span id="error">$nameErr</span>
  4. <input type="submit" name="submit" id="button" value="Send" /></form>
  5.  
  6.  
  7. <?php
  8. if (isset($_POST['submit']))
  9. {
  10.    // Initialize variables
  11.  $name = "";
  12.  
  13.  if ($_SERVER['REQUEST_METHOD'] == "POST")
  14.  {
  15.    if (empty($_POST['name']))
  16.    {
  17.        $nameErr = "Missing";
  18.    }
  19.    else
  20.    {
  21.        $name = $_POST['name'];
  22.    }
  23.  
  24.  }

Notice: Undefined variable: name in line...


En línea

Vordarxis

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Undefined variable
« Respuesta #1 en: 18 Julio 2013, 17:19 pm »

Yo creo que lo que necesitas es algo así:

Código:
<?php

$name = "";
$nameErr = "";
if (isset($_POST['submit']))
{
    // Initialize variables
 
  if ($_SERVER['REQUEST_METHOD'] == "POST")
  {
    if (empty($_POST['name']))
    {
        $nameErr = "Missing";
    }
    else
    {
        $name = $_POST['name'];
    }
 
  }
 }
 ?>
<form method="post" action="<?=htmlspecialchars($_SERVER['PHP_SELF'])?>"><fieldset><legend>Form</legend>
 
<label>Name:</label> <input type="text" size="15" name="name" value="<?=$name;?>" /> <span id="error"><?=$nameErr;?></span>
<input type="submit" name="submit" id="button" value="Send" /></form>


En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Undefined variable
« Respuesta #2 en: 19 Julio 2013, 01:36 am »

Código
  1. <form method="post" action="<?=htmlspecialchars($_SERVER['PHP_SELF'])?>"><fieldset><legend>Form</legend>
  2.  
  3. <label>Name:</label> <input type="text" size="15" name="name" value="<?=$name;?>" /> <span id="error">$nameErr</span>
  4. <input type="submit" name="submit" id="button" value="Send" /></form>
  5.  
  6.  
  7. <?php
  8. if (isset($_POST['submit']))
  9. {
  10.    // Initialize variables
  11.  $name = "";
  12.  
  13.  if ($_SERVER['REQUEST_METHOD'] == "POST")
  14.  {
  15.    if (empty($_POST['name']))
  16.    {
  17.        $nameErr = "Missing";
  18.    }
  19.    else
  20.    {
  21.        $name = $_POST['name'];
  22.    }
  23.  
  24.  }

En la linea 3, estas utilizando la variable $name pero esta no esta definida antes, por eso el error. El codigo de @Vordarxis funcionaria pero lo ideal es entender porque pasan las cosas.

Saludos.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Vordarxis

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Undefined variable
« Respuesta #3 en: 19 Julio 2013, 08:32 am »

Yoya, tienes toda la razón. Hace tiempo que no me paso por foros y voy perdiendo buenos hábitos.

Lo suyo es que el código php, en el cual se declaran las variables, lo escribas antes que el HTML, en el que se utilizan las variables. A parte, cuando intentas utilizar las variable $nameErr no sólo no está declarada, sino que no está entre <?php y ?> asi que el código se pintará, en lugar de ejecutarse.

En la línea 15, a parte de usar empty, haría una comparación con la cadena vacía. Muchas veces es lo que llega cuando no rellenas un campo en un formulario.
En línea

Geek7

Desconectado Desconectado

Mensajes: 57


Be Free!


Ver Perfil
Re: Undefined variable
« Respuesta #4 en: 19 Julio 2013, 10:23 am »

gracias
« Última modificación: 19 Julio 2013, 13:28 pm por Geek7 » En línea

Geek7

Desconectado Desconectado

Mensajes: 57


Be Free!


Ver Perfil
Re: Undefined variable
« Respuesta #5 en: 19 Julio 2013, 13:29 pm »

pero tengo el mismo problema con una funcion:

Código
  1. <?php
  2. // Initialize variables
  3.  $name = $address = $email = $items = $success = "";
  4.  $error_name = $error_address = $error_email = $error_items = "";
  5.  
  6. function checkName($nombre) {
  7.  
  8.    if(empty($nombre))
  9.    {
  10.        $error_name = "Missing";
  11.    }
  12.    elseif (!preg_match('/^[a-zA-z]*$/', $nombre, $name_match))
  13.    {
  14.        $error_name = "Only alphabets  allowed";
  15.    }
  16.  
  17.    return $error_name;
  18. }
  19. if (isset($_POST['submit']))
  20. {
  21.    if($_SERVER['REQUEST_METHOD'] == "POST")
  22.    {
  23.    $name = $_POST['name'];
  24.    $address = $_POST['address'];
  25.    $email = $_POST['email'];
  26.    $item = array();
  27.  
  28.    // Verify input:
  29.    checkName($name);
  30.    }
  31.  
  32. }
  33. ?>
  34.  
  35. html........

Como es que no esta definida si esta arriba de la funcion?
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Undefined variable
« Respuesta #6 en: 20 Julio 2013, 04:06 am »

Siempre recuerda, mostrar el error así evitas a los demás tener que ejecutar el código para conocer el error...

El error se debe a que dentro del ámbito de una función en PHP, todas las variables son locales a menos que se declare que son variables globales.


Ejemplo:
Código
  1. <?php
  2. $hola = "Hola mundo";
  3.  
  4. function checkName($nombre) {
  5. echo $hola;//Error ya que la variable $hola no esta definida en la función checkname
  6. }
  7. checkName("XD");
  8.  
  9. ?>

Tendrás que declarar que las variables son globales antes de utilizarla. Con el keyword global

Código
  1. <?php
  2.  
  3. $hola = "Hola mundo";
  4.  
  5.  
  6. function checkName($nombre) {
  7. global $hola;//La variable $hola es una variable que pertenece al un contexto global no a un contexto local
  8. echo $hola;// Salida: Hola mundo
  9.  
  10. }
  11.  
  12.    checkName("XD");
  13.  
  14. ?>

Igualmente tienes que tener cuidado con las variables que declaras dentro de algún bloque, ya sea if,while, etc... Porque la variable que declares dentro de ese bloque solo se podrá acceder desde el mismo bloque, y fuera solo si el bloque llega a ejecutarse, de lo contrario no.

Código
  1. <?php
  2.  
  3. $hola = "Hola mundo";
  4.  
  5. function checkName($nombre) {
  6.  
  7.  
  8. if(true) {$xD = 888;}
  9. echo $xD;//Salida: 888
  10. }
  11.  
  12.    checkName("XD");
  13.  
  14. ?>


Código
  1. <?php
  2.  
  3. $hola = "Hola mundo";
  4.  
  5. function checkName($nombre) {
  6.  
  7.  
  8. if(false) {$xD = 888;}
  9. echo $xD;//Error: Undefined variable: xD....
  10. }
  11.  
  12.    checkName("XD");
  13.  
  14. ?>

Variable Scope

Saludos.
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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