Comunidad de diseño web y desarrollo en internet online

Variables persistentes

Citar            
MensajeEscrito el 25 Oct 2008 04:44 pm
Hola, en vista de que no se bien como se le llama a esto, pues puse un nuevo tema, disculparán si ya estaba posteado en alguna parte.

Estoy empezando con php y estaba siguiendo un libro que encontré en la red, se supone que es muy simple, solo se enuncian unas variables y al recargar la página se deben tomar los valores de las variables y aumentarlos, pero nunca pasa, quisiera saber cual es el error, pues a mi poco entender, no hay nada de raro. El códido es este:

Código :

<html>

<head>
   <title>Persistencia</title>
</head>

<body>

<h1>Demo de persistencia</h1>
<form method="post">
<?php
$txtBoxCounter++;
$hdnCounter++;

print <<<HERE

<input type = "text"
      name = "txtBoxCounter"
      value = "$txtBoxCounter">
      
<input type = "hidden"
      name = "hdnCounter"
      value = "$hdnCounter">

<h3>el valor escondido es $hdnCounter</h3>
<input type = "submit"
      value = "Click para aumentar contadores">
HERE;
?>
</form>
</body>
</html>


Agradezco la orientación.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox
Citar            
MensajeEscrito el 25 Oct 2008 05:12 pm
El ejemplo funciona cuando tiene la directiva de configuración (php.ini) register_globals en on. Ahora, es mejor que trabajes como si supieras que no existiera eso y que siempre está en off.


Código :

<html>

<head>
   <title>Persistencia</title>
</head>

<body>

<h1>Demo de persistencia</h1>
<form method="post">
<?php
$txtBoxCounter++;
$hdnCounter++;

print <<<HERE

<input type = "text"
      name = "txtBoxCounter"
      value = "$txtBoxCounter">
      
<input type = "hidden"
      name = "hdnCounter"
      value = "$hdnCounter">

<h3>el valor escondido es $hdnCounter</h3>
<input type = "submit"
      value = "Click para aumentar contadores">
HERE;
?>
</form>
</body>
</html>



Corregido, para cualquier configuración:

Código :

<html>

<head>
   <title>Persistencia</title>
</head>

<body>

<h1>Demo de persistencia</h1>
<form method="post">
<?php
$txtBoxCounter = $_POST["txtBoxCounter"];
$hdnCounter  = $_POST["$hdnCounter"];
$txtBoxCounter++;
$hdnCounter++;

print <<<HERE

<input type = "text"
      name = "txtBoxCounter"
      value = "$txtBoxCounter">
      
<input type = "hidden"
      name = "hdnCounter"
      value = "$hdnCounter">

<h3>el valor escondido es $hdnCounter</h3>
<input type = "submit"
      value = "Click para aumentar contadores">
HERE;
?>
</form>
</body>
</html>


Por otro lado, no se a que te refieres con "persistente". Simplemente las variables de $_GET, $_POST, y similares son variables superglobales, que pueden ser accedidas y modificadas en cualquier punto de tu script. Por lo que si la cambias en un punto, en el próximo punto que lo accedes tendrás el cambio.

Ahora el concepto de "superglobales" es algo muy de php, es similar a lo que conoces globales en otros lenguajes solo que, el interprete lo declara por defecto y estas son: $_GET, $_POST, $_FILES, $_SERVER, $_SESSION, $_COOKIES. En contraste, también existen las variables globales en php que siguen el mismo concepto que tienes de otros lenguajes, simplemente son declaradas por el mismo programador y se usa algo así:


script.php

Código :

<?php

$someVariable = "mivariable";

function myFunction()
{
     global $someVariable; // sin el global, someVariable no se define;
      echo $someVariable;

}

?>



saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 25 Oct 2008 05:17 pm
Gracias maikel, tu como siempre con una respuesta perfecta.
El término de persistente aparece en el libro, así que pensé que era el correcto.

Muchas gracias por tu explicación, has aclarado un gran concepto.

Por Xyrer

628 de clabLevel

1 tutorial

Genero:Masculino  

Android App Development

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.