Diferencia entre revisiones de «PHP Paso de datos utilizando campos ocultos»
Ir a la navegación
Ir a la búsqueda
(Página creada con «* A utilización de campos ocultos ten unha limitación xa que sempre será necesario enviar os datos dunha páxina á seguinte <u>utilizando un formulario</u>. * A idea...») |
|||
| (No se muestra una edición intermedia de otro usuario) | |||
| Línea 1: | Línea 1: | ||
| − | * | + | == Paso de datos mediante campos ocultos == |
| + | |||
| + | * Outra forma de pasar información dunha páxina á seguinte consiste en empregar campos ocultos dun formulario mediante: | ||
| + | |||
| + | ::<syntaxhighlight lang="html"> <input type="hidden"> </syntaxhighlight> | ||
| + | |||
| + | * Os campos ocultos non se amosan visualmente no formulario, pero o seu valor envíase xunto co resto dos campos cando se realiza o '''submit'''. | ||
| + | |||
| + | * Esta técnica ten unha limitación importante: os datos só se envían cando se envía o formulario. Polo tanto, é necesario que exista un formulario que conteña os campos ocultos. | ||
| + | |||
| + | * Por exemplo, podemos gardar temporalmente un nome nun campo oculto: | ||
| + | |||
| + | ::<syntaxhighlight lang="php"> | ||
| − | |||
| − | |||
<?php | <?php | ||
| − | $ | + | $datoAGardar = 'Angel'; |
| − | |||
?> | ?> | ||
| − | |||
| + | <form action="seguinte.php" method="post"> | ||
| + | <input | ||
| + | type="hidden" | ||
| + | name="campoOcultoNome" | ||
| + | value="<?= htmlspecialchars( | ||
| + | $datoAGardar, | ||
| + | ENT_QUOTES | ENT_SUBSTITUTE, | ||
| + | 'UTF-8' | ||
| + | ) ?>" | ||
| + | > | ||
| + | |||
| + | ``` | ||
| + | <button type="submit">Continuar</button> | ||
| + | ``` | ||
| + | |||
| + | </form> | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | * Na páxina '''seguinte.php''' poderiamos recuperar o valor mediante: | ||
| + | |||
| + | ::<syntaxhighlight lang="php"> | ||
| + | $nomeRecibido = $_POST['campoOcultoNome'] ?? ''; | ||
| + | |||
| + | if (!is_string($nomeRecibido)) { | ||
| + | $nomeRecibido = ''; | ||
| + | } | ||
| + | |||
| + | $nome = trim($nomeRecibido); </syntaxhighlight> | ||
| + | |||
| + | * Este mecanismo pode empregarse, por exemplo, nun formulario dividido en varias páxinas, no que queremos enviar á seguinte páxina parte da información introducida anteriormente. | ||
| + | |||
| + | : Por exemplo: | ||
| + | |||
| + | ::<syntaxhighlight lang="text"> | ||
| + | Páxina 1 | ||
| + | ↓ | ||
| + | nome = Ana | ||
| + | |||
| + | Páxina 2 | ||
| + | ↓ <input type="hidden" name="nome" value="Ana"> | ||
| + | ↓ | ||
| + | idade = 20 | ||
| + | |||
| + | Páxina 3 | ||
| + | ↓ | ||
| + | recibe nome + idade </syntaxhighlight> | ||
| + | |||
| + | * '''IMPORTANTE:''' Un campo oculto '''non é un campo secreto'''. | ||
| + | |||
| + | : Aínda que non apareza visualmente no formulario, o usuario pode inspeccionar e modificar o seu valor empregando as ferramentas do navegador ou enviando manualmente unha petición HTTP. | ||
| + | |||
| + | : Polo tanto, os valores recibidos mediante campos ocultos deben tratarse igual que calquera outro dato recibido desde o cliente: | ||
| + | |||
| + | :* Deben ser '''validados no servidor'''. | ||
| + | :* Non deben empregarse directamente para tomar decisións de seguridade. | ||
| + | :* Non debemos confiar neles para gardar información como permisos, roles, prezos ou identificadores aos que o usuario non debería poder acceder. | ||
| + | |||
| + | * Por exemplo, non sería seguro confiar directamente nun campo como: | ||
| + | |||
| + | ::<syntaxhighlight lang="html"> <input type="hidden" name="prezo" value="100"> </syntaxhighlight> | ||
| − | + | : porque o usuario podería modificar o valor antes de enviar o formulario: | |
| + | ::<syntaxhighlight lang="html"> <input type="hidden" name="prezo" value="1"> </syntaxhighlight> | ||
| − | + | : O prezo real debería obterse novamente no servidor, por exemplo consultando a base de datos a partir do identificador do produto. | |
| + | * Os campos ocultos son útiles para transportar información entre formularios, pero cando necesitamos manter información de forma fiable entre varias páxinas dunha aplicación normalmente empregaremos '''sesións''', que veremos posteriormente. | ||
| Línea 20: | Línea 90: | ||
| − | <br> -- [[Usuario:angelfg|Ángel D. Fernández González]] -- ( | + | <br> -- [[Usuario:angelfg|Ángel D. Fernández González]] -- (2026). |
Revisión actual del 18:26 13 sep 2026
Paso de datos mediante campos ocultos
- Outra forma de pasar información dunha páxina á seguinte consiste en empregar campos ocultos dun formulario mediante:
<input type="hidden">
- Os campos ocultos non se amosan visualmente no formulario, pero o seu valor envíase xunto co resto dos campos cando se realiza o submit.
- Esta técnica ten unha limitación importante: os datos só se envían cando se envía o formulario. Polo tanto, é necesario que exista un formulario que conteña os campos ocultos.
- Por exemplo, podemos gardar temporalmente un nome nun campo oculto:
<?php $datoAGardar = 'Angel'; ?> <form action="seguinte.php" method="post"> <input type="hidden" name="campoOcultoNome" value="<?= htmlspecialchars( $datoAGardar, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8' ) ?>" > ``` <button type="submit">Continuar</button> ``` </form>
- Na páxina seguinte.php poderiamos recuperar o valor mediante:
$nomeRecibido = $_POST['campoOcultoNome'] ?? ''; if (!is_string($nomeRecibido)) { $nomeRecibido = ''; } $nome = trim($nomeRecibido);
- Este mecanismo pode empregarse, por exemplo, nun formulario dividido en varias páxinas, no que queremos enviar á seguinte páxina parte da información introducida anteriormente.
- Por exemplo:
Páxina 1 ↓ nome = Ana Páxina 2 ↓ <input type="hidden" name="nome" value="Ana"> ↓ idade = 20 Páxina 3 ↓ recibe nome + idade
- IMPORTANTE: Un campo oculto non é un campo secreto.
- Aínda que non apareza visualmente no formulario, o usuario pode inspeccionar e modificar o seu valor empregando as ferramentas do navegador ou enviando manualmente unha petición HTTP.
- Polo tanto, os valores recibidos mediante campos ocultos deben tratarse igual que calquera outro dato recibido desde o cliente:
- Deben ser validados no servidor.
- Non deben empregarse directamente para tomar decisións de seguridade.
- Non debemos confiar neles para gardar información como permisos, roles, prezos ou identificadores aos que o usuario non debería poder acceder.
- Por exemplo, non sería seguro confiar directamente nun campo como:
<input type="hidden" name="prezo" value="100">
- porque o usuario podería modificar o valor antes de enviar o formulario:
<input type="hidden" name="prezo" value="1">
- O prezo real debería obterse novamente no servidor, por exemplo consultando a base de datos a partir do identificador do produto.
- Os campos ocultos son útiles para transportar información entre formularios, pero cando necesitamos manter información de forma fiable entre varias páxinas dunha aplicación normalmente empregaremos sesións, que veremos posteriormente.
-- Ángel D. Fernández González -- (2026).