isset php no funciona, ¿no reconoce variables, version php, error de lógica?
Publicado por Albert J. (9 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 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


0