Práctica de Intro a Distribuidos.
[z.facultad/75.43/practicas.git] / practica2.php
1 <?php
2 // vim: set filetype=php et sw=2 sts=2 :
3
4 // Usamos locales de la PC para que salga la fecha en el locale del usuario.
5 setlocale(LC_ALL, '');
6
7 function escapar($s)
8 {
9   return strtr($s, ' ', '+');
10 }
11
12 function deescapar($s)
13 {
14   return strtr($s, '+', ' ');
15 }
16
17 $grabado = false;
18
19 if (@$_POST['submit']) // Se envió el formulario, lo proceso
20 {
21   if (($f = fopen('usuarios.txt', 'a')) === false) die('Error abriendo arch.');
22   fwrite($f, escapar($_POST['nombre']).'|'.escapar($_POST['apellido'])."\n");
23   fclose($f);
24   $grabado = true;
25 }
26
27 function get_usuarios()
28 {
29   if (($f = fopen('usuarios.txt', 'r')) === false) die('Error abriendo arch.');
30   $usuarios = array();
31   while (!feof($f))
32   {
33     if (!preg_match('/(.*)|(.*)\n/g', fgets($linea), $matches))
34       die ('Formato de archivo incorrecto!');
35     $usuarios[] = array(
36       'nombre'   => desescapar($matches[1]),
37       'apellido' => desescapar($matches[2]));
38   }
39   fclose($f);
40   return $usuarios;
41 }
42
43 ?>
44 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
45
46 <html lang="es">
47 <head>
48   <title>Ejercicio 1</title>
49   <script type="text/javascript" language="JavaScript">
50   <!--
51   function vacio(f)
52   {
53     if (!f.value.replace(/\s/g, '').length) return true;
54     return false;
55   }
56   function validar(f)
57   {
58     if (vacio(f.nombre))
59     {
60       alert('Falta ingresar el nombre!');
61       f.nombre.focus();
62       return false;
63     }
64     if (vacio(f.apellido))
65     {
66       alert('Falta ingresar el apellido!');
67       f.apellido.focus();
68       return false;
69     }
70     return true;
71   }
72   -->
73   </script>
74 </head>
75
76 <body>
77   <table summary="Estructura principal">
78     <tr>
79       <td colspan="2" align="center">
80         <img src="practica2.png" alt="Logo" />
81       </td>
82       <td width="20%" align="left">
83         <p><strong>Ejercicio 2</strong></p>
84         <p>
85         Buenos Aires,
86         <script type="text/javascript" language="JavaScript">
87         <!--
88         var dia = new Array('Domingo', 'Lunes', 'Martes', 'Miércoles',
89                             'Jueves', 'Viernes', 'Sábado');
90         var mes = new Array('Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo',
91                             'Junio', 'Julio', 'Agosto', 'Septiembre',
92                             'Octubre', 'Noviembre', 'Diciembre');
93         var hoy = new Date();
94         document.write(dia[hoy.getDay()] + ' ' + hoy.getDate() + ' de '
95             + mes[hoy.getMonth()] + ' de ' + hoy.getFullYear());
96         -->
97       </script>
98       </p>
99       <p><strong>Ejercicio 4 y 5</strong></p>
100       <p>
101         Buenos Aires, <?php echo strftime('%A %d de %B de %Y') ?>
102         (la diferencia es que se ejecuta en el servidor, no en el cliente)
103       </p>
104       </td>
105     </tr>
106     <tr>
107       <td width="34%" valign="top">
108         <p style="font-weight: bold">Links:</p>
109         <ul>
110           <li><a href="http://www.google.com/">Google 1</a></li>
111           <li><a href="http://www.google.com/">Google 2</a></li>
112           <li><a href="http://www.google.com/">Google 3</a></li>
113           <li><a href="http://www.google.com/">Google 4</a></li>
114           <li><a href="http://www.google.com/">Google 5</a></li>
115           <li><a href="http://www.google.com/">Google 6</a></li>
116           <li><a href="http://www.google.com/">Google 7</a></li>
117           <li><a href="http://www.google.com/">Google 8</a></li>
118           <li><a href="http://www.google.com/">Google 9</a></li>
119           <li><a href="http://www.google.com/">Google 10</a></li>
120           <li><a href="http://www.google.com/">Google 11</a></li>
121           <li><a href="http://www.google.com/">Google 12</a></li>
122           <li><a href="http://www.google.com/">Google 13</a></li>
123           <li><a href="http://www.google.com/">Google 14</a></li>
124           <li><a href="http://www.google.com/">Google 15</a></li>
125         </ul>
126       </td>
127       <td width="33%" valign="top">
128         <h1>Ejercicio 3</h1>
129         <form action="<?php echo $_SERVER['PHP_SELF'] ?>" name="formulario"
130             onSubmit="return validar(this);" method="post">
131           <p>
132           <input type="text" name="nombre" /><br />
133           <input type="text" name="apellido" /><br />
134           <input type="submit" name="submit" value="Enviar" /><br />
135           <?php if ($grabado) echo '(usuario grabado)' ?>
136           </p>
137         </form>
138         <h2>Ejercicio 6</h2>
139         <p>
140           <a href="<?php echo $_SERVER['PHP_SELF'] ?>?listar=1">Listar
141             usuarios</a>
142           <?php
143           if (@$_GET['listar']) {
144             $usuarios = get_usuarios();
145             if ($usuarios)
146             {
147               echo "<ul>\n";
148               foreach ($usuarios as $u)
149                 echo "<li>{$u['nombre']} {$u['apellido']}</li>\n";
150               echo "</ul>\n";
151             }
152             else echo 'No hay usuarios cargados';
153           }
154           ?>
155         </p>
156         <h3>Subtítulo 1.1.1</h3>
157         <p>
158           Fracasó esta tarde una nueva reunión entre los directivos del
159           hospital de niños y los sindicalistas. La discusión para definir cómo
160           incorporar la suba al sueldo seguirá mañana en dependencias del
161           Ministerio de Trabajo.
162         </p>
163         <h3>Subtítulo 1.1.2</h3>
164         <p>
165           Ratifican paros en otros 3 hospitales porteños pero los directores
166           desconocen la medida.
167         </p>
168         <h2>Subtítulo 1.2</h2>
169         <p>
170           Ratifican paros en otros 3 hospitales porteños pero los directores
171           desconocen la medida.
172         </p>
173         <h2>Título 2</h2>
174         <p>
175           Ratifican paros en otros 3 hospitales porteños pero los directores
176           desconocen la medida.
177         </p>
178       </td>
179       <td width="33%" valign="top">
180         <h1>Título 3</h1>
181         <p>
182           Fracasó esta tarde una nueva reunión entre los directivos del
183           hospital de niños y los sindicalistas. La discusión para definir cómo
184           incorporar la suba al sueldo seguirá mañana en dependencias del
185           Ministerio de Trabajo.
186         </p>
187         <h2>Título 4</h2>
188         <p>
189           Ratifican paros en otros 3 hospitales porteños pero los directores
190           desconocen la medida.
191         </p>
192         <h2>Subtítulo 4.1</h2>
193         <p>
194           Ratifican paros en otros 3 hospitales porteños pero los directores
195           desconocen la medida.
196         </p>
197         <h2>Subtítulo 4.2</h2>
198         <p>
199           Ratifican paros en otros 3 hospitales porteños pero los directores
200           desconocen la medida.
201         </p>
202       </td>
203     </tr>
204   </table>
205   <address>
206     Leandro Lucarella - Copyleft 2005 - mar abr 26 00:35:53 ART 2005
207   </address>
208 </body>
209 </html>