Archivo

Posts Tagged ‘formulario’

La Ley de Cookies

16 de septiembre de 2013 2 comentarios

Bueno, pues otra tontería que tenemos que actualizar. El rollo de las cookies.

En el BOE publicado el pasado 31 de marzo se detalla el Real Decreto-ley 13/2012, de 30 de marzo, por el que se transponen directivas en materia de mercados interiores de electricidad y gas y en materia de comunicaciones electrónicas, y por el que se adoptan medidas para la corrección de las desviaciones por desajustes entre los costes e ingresos de los sectores eléctrico y gasista

«Todos los sitios web deben ofrecer de forma clara y completa métodos para que el usuario de su consentimiento expreso para almacenar datos sobre su navegación en el sitio, a no ser que éste ya haya dado su consentimiento mediante opciones en el navegador que esté utilizando».

Qué es todo esto??

¿No os suena ese típico mensajito que sale ahora contínuamente en las webs informando sobre que usan cookies, que lo Aceptemos o que podemos ver más información?

Así que ya sabes, a poner una capita (DIV) en tu página con un formulario para que el usuario tenga más información y pueda pulsar Aceptar.

Otra solución: Quitar las cookies, a tomar por saco.

Más información en el PDF a continuación:

Guía sobre el uso de las cookies

Validar email

27 de octubre de 2012 Deja un comentario

Una función para validar tu email (incluyendo subdominios).

Código
<?php
function ValidaMail($v_email) {
if (preg_match("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@+([_a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]{2,200}\.[a-zA-Z]{2,6}$",
         $v_email )){
	   return true;
}
else{
       	return false;
 }
}
?>

 

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

Busca en subject una coincidencia con la expresión regular dada en pattern.

Añadir registros a la base de datos

22 de octubre de 2012 Deja un comentario

Vamos ver como podemos añadir nuevos registros a nuesta BD. La recogida de datos la vamos a hacer a traves de un interfaz de web. En primer lugar vamos a crear una página web con un simple formulario, con los campos que deseamos.

Formulario inicial añadir BD
<html>
<body>

<form method="post" action="add_reg.php3">
Nombre   :<input type="Text" name="nombre"><br>
Dirección:<input type="Text" name="direccion"><br>
Teléfono :<input type="Text" name="telefono"><br>
E-mail   :<input type="Text" name="email"><br>
<input type="Submit" name="enviar" value="Aceptar información">
</form>

</body>
</html>

Hemos creado un formulario donde recoger los datos, y una vez introducidos ejecutamos un script llamado add_reg.php3, pues veamos como es este script.

añadir registros
<html>
<body>

<?php
// process form
$link = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$sql = "INSERT INTO agenda (nombre, direccion, telefono, email) ".
  "VALUES ('$nombre', '$direccion', '$telefono', '$email')";
$result = mysql_query($sql);
echo "¡Gracias! Hemos recibido sus datos.\n";

</body>
</html>

Como se puede ver, para introducir un nuevo registro, utilizamos la ya conocida función mysql_query(), la cúal también usamos para las consultas, y usaremos para las actualizaciones, es decir una señora función. ¡Aaah!, una cosa muy importante, para poder añadir o modificar registros debemos tener permiso para ello en el servidor MySQL, por eso en este caso me conecto como root, pero podría ser cualquier otro usuario.

Cargar archivos en PHP

20 de octubre de 2012 Deja un comentario

Cómo hacer que un formulario envíe un archivo al servidor y cómo hacer que éste lo procese.


Configuración de PHP

Para poder recibir archivos, debes tener establecidas las siguientes directivas de configuración en el archivo PHP.ini

  • file_uploads: (On / Off), pemite que haya o no cargas de archivos
  • uploads_max_filesize: tamaño máximo del archivo que se puede subir
  • upload_tmp_dir: directorio temporal donde se guardan los archivos cargados
  • post_max_size: tamaño máximo de los datos enviados por el método post

Formulario

Un formulario puede enviar un archivo al servidor mediante un control de tipo file. El formulario sería:

<form action="carga_archivos.php" method="post" enctype="multipart/form-data">
  <input type="file" name="nombre_archivo_cliente" /><br />
  <input type="submit" name="enviar" value="Enviar" />
</form>

Es importante que el atributo method tenga el valor post y que el atributo enctype tenga el valor multipart/form-data.

El aspecto del formulario dependerá del navegador que utilices. En este navegador sería:


Script PHP

Cuando PHP recibe el archivo, lo almacena en el directorio upload_tmp_dir y rellena la matriz asociativa superglobal $_FILES[«nombre_archivo_cliente»] (el nombre que se haya dado al control en el formulario). Esa matriz contiene los siguientes elementos:

  • $_FILES[‘nombre_archivo_cliente’][‘name’]: nombre que tenía el archivo cargado en el ordenador del cliente
  • $_FILES[‘nombre_archivo_cliente’][‘type’]: tipo MIME del archivo cargado
  • $_FILES[‘nombre_archivo_cliente’][‘size’]: tamaño del archivo cargado
  • $_FILES[‘nombre_archivo_cliente’][‘tmp_name’]: nombre del archivo cargado en el directorio temporal del servidor
  • $_FILES[‘nombre_archivo_cliente’][‘error’]: código de error (en su caso)

Como el archivo del directorio temporal desaparecerá al acabar el script, es necesario copiar el archivo a otro lugar. Para ello utiliza la función move_uploaded_file($origen, $destino), en la que $origen es el nombre del archivo cargado en el directorio temporal (normalmente puedes utilizar directamente $_FILES[‘nombre_archivo_cliente’][‘tmp_name’]) y $destino el nombre del archivo que contendrá la copia.

Ejemplo:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Ficheros</title>
    </head>
    <body>
        <h1>Subir ficheros</h1>

        <form action="cargaarchivos.php" 
              method="post" 
              enctype="multipart/form-data">
        Nombre: <input type="text" name="nombre"/><br/><br/>
        Dirección:     <input type="text" name="direccion"/><br/><br/>
        Foto pequeña: <input type="file" name="fotopeq"/> Max. 1MB <br/><br/>
        Foto grande: <input type="file" name="fotogra"/> Max. 5MB <br/><br/>
        <input type="submit" name="boton" value="Enviar"/>
        <input type="reset" value="Reset"/>    
        </form>

    </body>
</html>

//************************* FICHERO PHP ************************************

<html>
    <head></head>
    <body>
<?php
    $nombre=$_POST['nombre'];
    
    move_uploaded_file($_FILES['fotopeq']['tmp_name'],
                       "c:/tmpcurso/".$nombre."PEQ.jpg");
    move_uploaded_file($_FILES['fotogra']['tmp_name'],
                       "c:/tmpcurso/".$nombre.time()."gra.jpg");
    echo "<p>Gracias por subir sus ficheros</p>";                                          
?>
    </body>
</html>
Categorías: Desarrollo web Etiquetas: , , , ,

Ejercicio Formulario y Resultado en un único fichero

19 de octubre de 2012 Deja un comentario

Escriba un programa que solicite y reciba (sin validar) un nombre, un número de teléfono y una dirección de correo y que conste de una única página.

El siguiente diagrama muestra las comprobaciones que es preciso realizar:

  • Para que el atributo action del formulario o el enlace a la página apunte a sí mismo, independientemente de la ubicación del archivo o de su nombre, se puede utilizar la variable predefinida $_SERVER[PHP_SELF].
  • Para comprobar que se han recibido datos, se puede dar un valor al atributo name del botón Enviar (submit) y comprobar que se ha recibido ese dato (con la función isset, por ejemplo).

..

Ejercicio para calcular la letra del DNI

19 de octubre de 2012 Deja un comentario

Utilizando la siguiente cadena:

'TRWAGMYFPDXBNJZSQVHLCKE'

Haz el módulo al número del DNI y 23 y lo que te dé, es el índice de la cadena para devolver la letra.

Es decir, si el resto de dividir el número del DNI entre 23 da 6, la letra será Y.

 

DNI.PHP

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
<?php
  if (isset($_POST['boton'])){ // Se ha pulsado el botón???
    $letras='TRWAGMYFPDXBNJZSQVHLCKE';
    $dni=$_POST['dni'];
    $indice=intval($_POST['dni'])%23;
    $letra=$letras[$indice];
    echo "<p>La letra del dni $dni es $letra";
  }
  else{   // Primera carga
   include ("dni.inc");    
  }  
?>            
    </body>
</html>

DNI.INC

<h1></h1>
<form action="dni.php" method="post">
    Introduce tu DNI: 
    <input type="text" name="dni"/><br/>
    <input type="submit" name="boton" value="Encuentra letra"/>
    <input type="reset"/>
</form>

 

 

Categorías: Desarrollo web Etiquetas: , , ,

Ejercicio en PHP: Convertidor de bytes

19 de octubre de 2012 Deja un comentario

Crea un formulario que tenga una caja de texto en la que el usuario pueda escribir el número de bytes.

En el formulario también debe haber un grupo de radiobuttons que permita elegir entre KB, MB, GB y TB.

Según lo que el usuario haya elegido en estos radiobuttons, convertiremos los bytes a KB, MB, GB o TB.

Ejercicio formulario completo

14 de octubre de 2012 Deja un comentario

Haz un formulario como el siguiente:

En el select pon 3 opciones (primera opción, segunda opción y tercera opción).

Para la selección múltiple:

Selección Múltiple:<br />
       <select name="seleccion_multiple[]" multiple="multiple">
          <option value="primera">primera</option>
          <option value="segunda">segunda</option>
          <option value="tercera">tercera</option>
       </select>

No es necesario que metas los controles dentro de celdas en una tabla como se hace en el formulario, además, no es una técnica muy buena de diseño web.

El objetivo del ejercicio es aprender a rescatar los valores desde cada tipo de control.

Siempre utiliza isset() para ver si los controles se han rellenado

Para los que son de texto o password simplemente muestra el contenido.

Los tipo checkbox que no se han marcado nunca se envían al servidor. El select y el radio funcionan igual.

El select múltiple tiene un tratamiento distinto, ya que devuelve un array. Se podría utilizar un bucle foreach o un bucle for como el siguiente:

for ($i=0;$i<count($_POST[‘seleccion_multiple’]);$i++)

echo ($_POST[«seleccion_multiple[$i]»];

Observa que en la segunda línea son necesarias las comillas dobles para que sustituya correctamente $i.

CODIGO HTML:

<!DOCTYPE HTML PUBLIC «-//W3C//DTD HTML 4.01 Transitional//EN»
«http://www.w3.org/TR/html4/loose.dtd»>
<html xmlns=»http://www.w3.org/1999/xhtml»>
<head>
<meta http-equiv=»Content-Type» content=»text/html; charset=utf-8″ />
<title>Formulario completo</title>
</head>
<body>
<h1>Formulario completo</h1>
<form action=»formulario.php» method=»post»>
Texto:
<input type=»text» name=»texto»/>
Password:
<input type=»password» name=»contra»/><br/>
Textarea:<br/>
<textarea name=»textolargo» cols=50 row=5></textarea><br/>
Opción 1: <input type=»checkbox» name=»opcion1″ value=»1″ checked/><br/>
Opción 2: <input type=»checkbox» name=»opcion2″ value=»2″/><br/>
Opción 3: <input type=»checkbox» name=»opcion3″ value=»3″/><br/>
Radio1: <input type=»radio» name=»radiobutton» value=»1″/><br/>
Radio2: <input type=»radio» name=»radiobutton» value=»2″/><br/>
Selección:
<select name=»nomultiple»>
<option value=»1″>Primera opción</option>
<option value=»2″>Segunda opción</option>
<option value=»3″>Tercera opción</option>
</select>
Selección múltiple:
<select name=»selecmultiple[]» multiple=»multiple»>
<option value=»1″>Primera</option>
<option value=»2″>Segunda</option>
<option value=»3″>Tercera</option>
</select><br/><br/>
<input type=»submit» value=»Enviar» name=»enviar»/>
<input type=»reset» value=»Limpiar» name=»limpiar»/>
</form>

</body>
</html>

CODIGO PHP:

<html>
    <head></head>
    <body>
        <h1>Muestro datos</h1>
<?php
    
    if (strcmp($_POST['texto'],"")!=0){
        echo "<p>En la caja de texto has escrito:";
        echo ($_POST['texto']);
        echo "</p>";
    }else{
        echo "<p>No has rellenado la caja de texto</p>";
    } 
 // Para la contraseña
     if (strcmp($_POST['contra'],"")!=0){
        echo "<p>En la contraseña has escrito:";
        echo ($_POST['contra']);
        echo "</p>";
    }else{
        echo "<p>No has rellenado la contraseña.</p>";
    }
 // Para el textarea
     if (strcmp($_POST['textolargo'],"")!=0){
        echo "<p>En la textarea has escrito:";
        echo ($_POST['textolargo']);
        echo "</p>";
    }else{
        echo "<p>No has rellenado nada en la textarea.</p>";
    }
// Para el primer checkbox
    if (isset($_POST['opcion1'])){
        echo "<p>Has seleccionado el primer checkbox</p>";        
    }
    else{
        echo "<p>No has seleccionado el primer checkbox</p>";
    }
// Para el segundo checkbox
    if (isset($_POST['opcion2'])){
        echo "<p>Has seleccionado el segundo checkbox</p>";        
    }
    else{
        echo "<p>No has seleccionado el segundo checkbox</p>";
    }
// Para el tercer checkbox
    if (isset($_POST['opcion3'])){
        echo "<p>Has seleccionado el tercer checkbox</p>";        
    }
    else{
        echo "<p>No has seleccionado el tercer checkbox</p>";
    }        
// PAra el radio
    if (!isset($_POST['radiobutton'])){
        echo "<p>No has seleccionado nada en los radio button</p>";
    }elseif ($_POST['radiobutton']==1){
        echo "<p>En el radiobutton has seleccionado la primera opción</p>";
    }else{
        echo "<p>En el radiobutton has seleccionado la segunda opción</p>";
    }
// Para el select normal
    if (!isset($_POST['nomultiple'])){
        echo "<p>No has seleccionado nada en el SELECT</p>";
    }elseif ($_POST['nomultiple']==1){
        echo "<p>Has seleccionado Primera Opción</p>";
    }elseif ($_POST['nomultiple']==2){
        echo "<p>Has seleccionado Segunda Opción</p>";
    }else {
        echo "<p>Has seleccionado Tercera Opción</p>";
    }
    if (isset($_POST['selecmultiple'])){
    for ($i=0;
         $i<count($_POST['selecmultiple']);
         $i++)
        if ( ($_POST["selecmultiple"][$i]) == 1){
            echo "<p>Seleccionada la primera opción en el select múltiple</p>";
        } elseif ( ($_POST["selecmultiple"][$i]) == 2){
            echo "<p>Seleccionada la segunda opción en el select múltiple</p>";
        }else{
            echo "<p>Seleccionada la tercera opción en el select múltiple</p>";
        }    
    }
    else{
        echo "<p>No hay nada seleccionado en el select múltiple</p>";
    }
    ?>
</body>
</html>

 

 

Categorías: Desarrollo web Etiquetas: , , , ,

Ejercicio While PHP

11 de octubre de 2012 Deja un comentario

Realiza un formulario que acepte un número entero y genere una página con tantas líneas como en el número se haya especificado mostrando la siguiente secuencia:

Ésta es la página 1

Ésta es la página 2

Ésta es la página 3

El código fuente de la página HTML:

<html> 
<head> 
   <title>Entrar</title> 
</head> 
<body> 
<H1>Número de líneas</H1> 

<FORM ACTION="ejerciciowhile.php" METHOD="POST"> 
Número de líneas: <br/> 
<INPUT TYPE="text" NAME="numero">
<BR/> 
<BR/>
<INPUT TYPE="submit" VALUE="Enviar"> 

</FORM> 
</body> 
</html>

FICHERO PHP

<html> 
<head> 
   <title>Ejemplo de PHP</title> 
</head> 
<body> 

<?php 
/* LEER VARIABLES DE $_POST */
$numeroDeIteraciones=$_POST["numero"];

$i=1;  //Inicializo el contador
while ($i<=$numeroDeIteraciones){
  echo "Ésta es la línea número ".$i."<br/>";
  $i++;
}
 ?>

<br> 
</body> 
</html>

CODIGO PHP (Provisional)

<html>
<head>
<title>Ejemplo de PHP</title>
</head>
<body>
<table align=center border=1 width=500px>
<tr><td colspan=2 align=center>AGENDA MENSUAL</td></tr>
<tr><td>&nbsp</td>
<td align=center> Mes de
<?php
/* LEER VARIABLES DE $_POST */

$mes=$_POST[‘mes’];
$nombremes=array(
1=>»Enero»,
2=>»Febrero»,
3=>»Marzo»,
4=>»Abril»,
5=>»Mayo»,
6=>»Junio»,
7=>»Julio»,
8=>»Agosto»,
9=>»Septiembre»,
10=>»Octubre»,
11=>»Noviembre»,
12=>»Diciembre»
);

echo $nombremes[$mes];

?>
</td>
</tr>
<tr>
<td> DIA</td>
<td> TAREA</td>
</tr>
<?php

?>
</table>
<br>
</body>
</html>

Categorías: Desarrollo web Etiquetas: , , , ,