Volver al índiceVarios 1


Situar el cursor en un control al cargar un formulario

Una forma de facilitar el uso de una página con controles es situar automáticamente el cursor en el control que probablemente va a utilizar el usuario, ahorrando al usuario el tener que hacer clic en ese control. Esto se puede conseguir mediante Javascript.

Una manera de hacerlo es asignar el atributo id del control sobre el que se quiere situar el cursor automáticamente y establecer el atributo onload del elemento body con el valor document.getElementById('XYZ').focus(), donde XYZ es el id del control, como muestra el ejemplo siguiente:

<body onload="document.getElementById('cursor').focus()">
<form action="validar1.php">
  <p>Al cargar esta página, el cursor sitúa automáticamente en la primera caja de texto:</p>
  <table>
    <tbody>
      <tr>
        <td>Usuario:</td>
        <td><input type="text" name="usuario" id="cursor" /></td>
      </tr>
      <tr>
        <td>Contraseña:</td>
        <td><input type="password" name="password" /></td>
      </tr>
    </tbody>
  </table>
  <p><input type="submit" value="Entrar" /></p>
</form>
</body>

Al cargar esta página, el cursor se sitúa automáticamente en la primera caja de texto:

Usuario:
Contraseña:

Volver al principio de la página


Diferencias entre print y echo

print y echo son dos sentencias de PHP prácticamente equivalentes y se puede utilizar cualquiera de las dos en las mismas situaciones. Sin embargo, hay alguna diferencia entre ellas:

En resumen, no parece haber una razón de peso para preferir usar print en vez de echo o viceversa. Parece que la elección de uno u otro es personal y basada en la costumbre o la familiaridad con otros lenguajes o entornos en los que uno de los dos está más extendido. En estos apuntes se utiliza preferentemente print.

Volver al principio de la página


La función header()

La función header() permite enviar cabeceras http.

Las cabeceras deben enviarse antes de enviar la página (el texto de la página). Si no es así, las cabeceras no se podrán enviar y se mostrará un mensaje de aviso (si el servidor está configurado para mostrarlos), como muestra el ejemplo siguiente.

<?php
print "<p>Intento fallido de redirección</p>";
header('Location: http://www.example.com');
exit();
?>
Intento fallido de redirección

Warning: Cannot modify header information - headers already sent by (output started at ejemplo.php:2) in ejemplo.php on line 3

Hay que tener en cuenta que si PHP utiliza un buffer intermedio, creado por la directiva output_buffering, no se produciría este error y se realizaría la redirección.


Redirigir una página con header("Location: ...")

La función header() se puede utilizar para redirigir automáticamente a otra página, enviando como argumento la cadena Location: seguida de la dirección absoluta o relativa de la página a la que queremos redirigir.

<?php
header('Location: http://www.example.com');
?>

Si se escriben varias cabeceras iguales, se aplicará la última. En el ejemplo siguiente, la página redirigiría a www.mclibre.org

<?php
header('Location: http://www.example.com');
header('Location: http://www.mclibre.org');
// Esta página redirige a www.mclibre.org
?>

Para asegurarnos de que cabeceras que se encuentran posteriormente anulan una cabecera, se puede utilizar la función exit(), que detiene el programa en ese punto, como muestra el ejemplo siguiente:

<?php
header('Location: http://www.example.com');
exit();
header('Location: http://www.mclibre.org');
// Esta página redirige a www.example.com
?>

Ejemplo de uso de redirección: Supongamos que tenemos un formulario (confirmar.php) para confirmar una acción destructiva (borrar datos de una base de datos, por ejemplo) que envía la confirmación a destruir.php. Para tener en cuenta el caso de que un usuario acceda directamente a la página destruir.php sin haber confirmado la acción en confirmar.php, podemos hacer que se compruebe si se ha recibido la confirmación y en caso contrario redirigir a la página principal del sitio.

<?php
// destruir.php
if (!isset($_REQUEST['si'])) {
    header('Location:index.php');
    exit();
} else {
 ...
?>

Volver al principio de la página

Esta página forma parte del curso "Páginas web con PHP" disponible en http://www.mclibre.org
Autor: Bartolomé Sintes Marco
Última modificación de esta página: 17 de noviembre de 2011

Creative Commons License
Esta obra está bajo una licencia de Creative Commons Reconocimiento-CompartirIgual 3.0 España.