PHP - isset php no funciona, ¿no reconoce variables, version php, error de lógica?

 
Vista:
Imágen de perfil de Albert J.
Val: 18
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

isset php no funciona, ¿no reconoce variables, version php, error de lógica?

Publicado por Albert J. (7 intervenciones) el 18/11/2018 02:08:21

Hola, buenas tardes grupo


Antes que nada quiero aclarar que ya he buscado en este foro sobre el tema y no encontré respuesta a mi duda. La cuestión es la siguiente: estoy tratando de entender el porque no se ejecuta la función "isset()", o mas bien porque no logro hacerla funcionar correctamente cuando utilizo un formulario (en el mismo archivo o en archivo separados).

De antemano muchas gracias, y si notan el post muy largo es porque estoy descartando todas las posibilidades que yo he intentado y pretendo hacer mas efectiva mi participación.

Uso: Windows 8.1, xamp (ya use wamp), php 7.2.12, IDE PhpStorm 2017.1.3

Quiero describir lo que entiendo de la función:
- Como dice en la documentación de php "Determina si una variable esta definida y no es NULL"
- Devuelve TRUE si $var existe y tiene un valor distinto de NULL, FALSE de lo contrario.

Pequeños ejemplos (1) para tener una idea visual y ayudar a futuras dudas(Este código esta en un solo archivo php):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
 
$var=0;
$var2=NULL;
$var3;
 
//Variable definida = 0; (true)
if(isset($var)){
    echo "Definida, su valor es ".$var;
}
 
echo "<br>";
 
//Variable con valor NULL (false)
if (isset($var2)){
    echo "Definida";
}else{echo "No definida, su valor es NULL";}
 
echo "<br>";
 
//Una variable no definida Y no referenciada (sin contexto de uso); imprime NULL (Tomado de la documentación)
if (isset($var3)){
    echo "definida";
}else{echo "Variable NULL";}
 
echo "<br>";
 
//Variable no definida
if (isset($var4)){
    echo "definida";
}else{echo "Variable no definida";}
?>

Hasta aquí todo bien, el problema comienza con el siguiente código (cabe mencionar que este ejemplo lo he visto en diferentes páginas de formas muy similares y funciona sin problemas) ejemplo (2):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
 
</head>
<body>
 
<?php
if (isset($_POST['btn1'])){
    echo "Esta definida";
}else{echo "NO definida";}
 
?>
 
<form action="" method="post">
    <input type="submit" name="btn1" value="Enviar">
</form>
 
</body>
</html>

Cuando ejecuto el código lo que sucede es lo siguiente:

no-definido

No sé que es exactamente lo que esta ocurriendo. En cualquier lugar donde coloque el codigo php, sea en el <head>
o debajo del form se ejecuta de la misma forma: "NO definida". Este ejemplo no tiene un input del tipo texto,
pero ocurre lo mismo si lo agrego.

En el siguiente ejemplo (3) agrego el input tipo texto y agrego otro archivo: validar.php.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
 
</head>
<body>
 
<form action="validar.php" method="post">
    Name: <input type="text" name="nombre">
    <input type="submit" name="btn1" value="Enviar">
</form>
 
</body>
</html>

validar.php

1
2
3
4
5
6
7
<?php
 
if (isset($_POST['btn1'])){
    echo "Bienvenido";
}else{echo "NO definido";}
 
?>

Sucede lo mismo!!! "NO definido".




Es aquí en lo que me quiero centrar, y mis dudas son las siguientes:


- ¿En realidad no están definidas ninguna de las dos variables ($_POST['btn1'] y $_POST['nombre']) pasadas por el método $_POST?
- ¿Porque isset no valida en ninguno de los ejemplos (2 y 3)?
- ¿Es una cuestión de versiones de php (uso 7.2.12)?
- ¿Estoy usando erróneamente la lógica de la función isset?
- ¿El archivo con el contenido html debe ser extensión .html o no hay problema si es .php?

Un saludo y muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.081
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

isset php no funciona, ¿no reconoce variables, version php, error de lógica?

Publicado por xve (6932 intervenciones) el 18/11/2018 18:15:03
Hola Albert, no se exactamente el problema que tienes, pero esta todo funcionando correctamente!!!

Intento explicarte:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
 
</head>
<body>
 
<?php
if (isset($_POST['btn1'])){
    echo "Esta definida";
}else{echo "NO definida";}
 
?>
 
<form action="" method="post">
    <input type="submit" name="btn1" value="Enviar">
</form>
 
</body>
</html>

Cuando abres esta página, te indica "No definida", porque cuando cargas la pagina en el PHP, $_POST["btn1"] no existe, por que todavía no se la has pasado por POST al PHP.
Una vez que pulsas el botón, se envía a la pagina PHP la variable $_POST["btn1"] y luego te muestra el resultado "Esta definida".

No se si me he sabido explicar, pero recuerda que el PHP se ejecuta unicamente en el servidor y el HTML se interpreta unicamente en el navegador.

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Albert J.
Val: 18
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

isset php no funciona, ¿no reconoce variables, version php, error de lógica?

Publicado por Albert J. (7 intervenciones) el 19/11/2018 01:22:50
Hola xve, saludos.

Me has recordado y dejado claro el orden de ejecución del script de php. Revise mi código que mencionaste y tienes razón, en un principio aparece "NO definido" y debajo el botón, pero a mi no me funciona igual; después de presionar el botón no me cambia a "definido", continua en el estado de "NO definido". Y esto es el problema, no sé realmente lo que esta sucediendo. No sé si es un problema de php (obvio se esta ejecutando), problema de la versión o del propio IDE. Estoy realmente atorado con este pequeño problema.

Gracias y espero que me puedan ayudar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.081
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

isset php no funciona, ¿no reconoce variables, version php, error de lógica?

Publicado por xve (6932 intervenciones) el 19/11/2018 08:07:49
Tu código funciona perfectamente, yo lo he probado!!!

Haz una prueba... en el form action="", pon el nombre del archivo... no vaya a ser que haya alguna redirección o cosa rara en tu servidor.

pon:
1
<form action="<?php echo $_SERVER["PHP_SELF"]?>" method="post">

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Albert J.
Val: 18
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

isset php no funciona, ¿no reconoce variables, version php, error de lógica?

Publicado por Albert J. (7 intervenciones) el 20/11/2018 01:47:56
Compañeros dicen que una imagen vale mas que mil palabras, en este caso un video. Lo grabe para tratar de explicar y mostrar que es lo que sucede. Muchas gracias.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de kip
Val: 2.944
Oro
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

isset php no funciona, ¿no reconoce variables, version php, error de lógica?

Publicado por kip (876 intervenciones) el 20/11/2018 02:29:01
Hola, el problema que tienes es un bug al parecer del IDE que usas, PHPStorm https://intellij-support.jetbrains.com/hc/en-us/community/posts/207521565--POST-not-working-on-localhost.

Al final del enlace de arriba colocan este otro enlace, una guia para configurar MAMP y PHPStorm https://confluence.jetbrains.com/display/PhpStorm/Installing+and+Configuring+MAMP+with+PhpStorm+IDE.

No se que version del IDE usas pero segun aqui existe la version sin este problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
Imágen de perfil de Albert J.
Val: 18
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

isset php no funciona, ¿no reconoce variables, version php, error de lógica?

Publicado por Albert J. (7 intervenciones) el 20/11/2018 03:45:22

Efectivamente kip, actualice la versión a la 2017.2.5 y ahora funciona perfecto.




En resumen, creo que no se me ocurrió que el IDE tuviera algún error como ese, busque un poco mas y encontré esto:
https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000097930-Can-not-use-POST-method-in-PhpStorm

Al final alguien sugiere actualizar para resolver el problema.

Las ultimas actualizaciones:
https://confluence.jetbrains.com/display/PhpStorm/Previous+PhpStorm+Releases?fromIDE

Solo basta descargar el zip y descomprimirlo en una nueva carpeta vacía junto a la anterior, después solo reemplazar el acceso directo en el escritorio y ya.

Screenshot_1


Saludos y muchas gracias!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar