+<?php
+// vim: set filetype=php et sw=2 sts=2 :
+
+// Usamos locales de la PC para que salga la fecha en el locale del usuario.
+setlocale(LC_ALL, '');
+
+function escapar($s)
+{
+ return strtr($s, ' ', '+');
+}
+
+function deescapar($s)
+{
+ return strtr($s, '+', ' ');
+}
+
+$grabado = false;
+
+if (@$_POST['submit']) // Se envió el formulario, lo proceso
+{
+ if (($f = fopen('usuarios.txt', 'a')) === false) die('Error abriendo arch.');
+ fwrite($f, escapar($_POST['nombre']).'|'.escapar($_POST['apellido'])."\n");
+ fclose($f);
+ $grabado = true;
+}
+
+function get_usuarios()
+{
+ if (($f = fopen('usuarios.txt', 'r')) === false) die('Error abriendo arch.');
+ $usuarios = array();
+ while (!feof($f))
+ {
+ if (!preg_match('/(.*)|(.*)\n/g', fgets($linea), $matches))
+ die ('Formato de archivo incorrecto!');
+ $usuarios[] = array(
+ 'nombre' => desescapar($matches[1]),
+ 'apellido' => desescapar($matches[2]));
+ }
+ fclose($f);
+ return $usuarios;
+}
+
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html lang="es">
+<head>
+ <title>Ejercicio 1</title>
+ <script type="text/javascript" language="JavaScript">
+ <!--
+ function vacio(f)
+ {
+ if (!f.value.replace(/\s/g, '').length) return true;
+ return false;
+ }
+ function validar(f)
+ {
+ if (vacio(f.nombre))
+ {
+ alert('Falta ingresar el nombre!');
+ f.nombre.focus();
+ return false;
+ }
+ if (vacio(f.apellido))
+ {
+ alert('Falta ingresar el apellido!');
+ f.apellido.focus();
+ return false;
+ }
+ return true;
+ }
+ -->
+ </script>
+</head>
+
+<body>
+ <table summary="Estructura principal">
+ <tr>
+ <td colspan="2" align="center">
+ <img src="practica2.png" alt="Logo" />
+ </td>
+ <td width="20%" align="left">
+ <p><strong>Ejercicio 2</strong></p>
+ <p>
+ Buenos Aires,
+ <script type="text/javascript" language="JavaScript">
+ <!--
+ var dia = new Array('Domingo', 'Lunes', 'Martes', 'Miércoles',
+ 'Jueves', 'Viernes', 'Sábado');
+ var mes = new Array('Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo',
+ 'Junio', 'Julio', 'Agosto', 'Septiembre',
+ 'Octubre', 'Noviembre', 'Diciembre');
+ var hoy = new Date();
+ document.write(dia[hoy.getDay()] + ' ' + hoy.getDate() + ' de '
+ + mes[hoy.getMonth()] + ' de ' + hoy.getFullYear());
+ -->
+ </script>
+ </p>
+ <p><strong>Ejercicio 4 y 5</strong></p>
+ <p>
+ Buenos Aires, <?php echo strftime('%A %d de %B de %Y') ?>
+ (la diferencia es que se ejecuta en el servidor, no en el cliente)
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="34%" valign="top">
+ <p style="font-weight: bold">Links:</p>
+ <ul>
+ <li><a href="http://www.google.com/">Google 1</a></li>
+ <li><a href="http://www.google.com/">Google 2</a></li>
+ <li><a href="http://www.google.com/">Google 3</a></li>
+ <li><a href="http://www.google.com/">Google 4</a></li>
+ <li><a href="http://www.google.com/">Google 5</a></li>
+ <li><a href="http://www.google.com/">Google 6</a></li>
+ <li><a href="http://www.google.com/">Google 7</a></li>
+ <li><a href="http://www.google.com/">Google 8</a></li>
+ <li><a href="http://www.google.com/">Google 9</a></li>
+ <li><a href="http://www.google.com/">Google 10</a></li>
+ <li><a href="http://www.google.com/">Google 11</a></li>
+ <li><a href="http://www.google.com/">Google 12</a></li>
+ <li><a href="http://www.google.com/">Google 13</a></li>
+ <li><a href="http://www.google.com/">Google 14</a></li>
+ <li><a href="http://www.google.com/">Google 15</a></li>
+ </ul>
+ </td>
+ <td width="33%" valign="top">
+ <h1>Ejercicio 3</h1>
+ <form action="<?php echo $_SERVER['PHP_SELF'] ?>" name="formulario"
+ onSubmit="return validar(this);" method="post">
+ <p>
+ <input type="text" name="nombre" /><br />
+ <input type="text" name="apellido" /><br />
+ <input type="submit" name="submit" value="Enviar" /><br />
+ <?php if ($grabado) echo '(usuario grabado)' ?>
+ </p>
+ </form>
+ <h2>Ejercicio 6</h2>
+ <p>
+ <a href="<?php echo $_SERVER['PHP_SELF'] ?>?listar=1">Listar
+ usuarios</a>
+ <?php
+ if (@$_GET['listar']) {
+ $usuarios = get_usuarios();
+ if ($usuarios)
+ {
+ echo "<ul>\n";
+ foreach ($usuarios as $u)
+ echo "<li>{$u['nombre']} {$u['apellido']}</li>\n";
+ echo "</ul>\n";
+ }
+ else echo 'No hay usuarios cargados';
+ }
+ ?>
+ </p>
+ <h3>Subtítulo 1.1.1</h3>
+ <p>
+ Fracasó esta tarde una nueva reunión entre los directivos del
+ hospital de niños y los sindicalistas. La discusión para definir cómo
+ incorporar la suba al sueldo seguirá mañana en dependencias del
+ Ministerio de Trabajo.
+ </p>
+ <h3>Subtítulo 1.1.2</h3>
+ <p>
+ Ratifican paros en otros 3 hospitales porteños pero los directores
+ desconocen la medida.
+ </p>
+ <h2>Subtítulo 1.2</h2>
+ <p>
+ Ratifican paros en otros 3 hospitales porteños pero los directores
+ desconocen la medida.
+ </p>
+ <h2>Título 2</h2>
+ <p>
+ Ratifican paros en otros 3 hospitales porteños pero los directores
+ desconocen la medida.
+ </p>
+ </td>
+ <td width="33%" valign="top">
+ <h1>Título 3</h1>
+ <p>
+ Fracasó esta tarde una nueva reunión entre los directivos del
+ hospital de niños y los sindicalistas. La discusión para definir cómo
+ incorporar la suba al sueldo seguirá mañana en dependencias del
+ Ministerio de Trabajo.
+ </p>
+ <h2>Título 4</h2>
+ <p>
+ Ratifican paros en otros 3 hospitales porteños pero los directores
+ desconocen la medida.
+ </p>
+ <h2>Subtítulo 4.1</h2>
+ <p>
+ Ratifican paros en otros 3 hospitales porteños pero los directores
+ desconocen la medida.
+ </p>
+ <h2>Subtítulo 4.2</h2>
+ <p>
+ Ratifican paros en otros 3 hospitales porteños pero los directores
+ desconocen la medida.
+ </p>
+ </td>
+ </tr>
+ </table>
+ <address>
+ Leandro Lucarella - Copyleft 2005 - mar abr 26 00:35:53 ART 2005
+ </address>
+</body>
+</html>