Modelo de formulario

Hola, buscando en la Red he encontrado varios modelos de formularios. Yo no tengo ni idea de php, y tampoco tengo instalado en el equipo el Apache y todo eso que se necesita para las pruebas en local, de manera que he seleccionado uno que me ha parecido sencillo -o al menos con no demasiado código- para ver qué os parece. Está tomado de www.videotutoriales.us/index.php?news=46, y es éste:

formulario.html

<html>
<head>
<title>Formulario de Contacto</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="enviar.php">


Nombre:

<label>
<input name="nombre" type="text" id="nombre" />
</label>


Telefono:

<input name="telefono" type="text" id="telefono" />


Email:

<input name="email" type="text" id="email" />


Mensaje:

<textarea name="mensaje" id="mensaje"></textarea>


<label>
<input type="submit" name="Submit" value="Enviar Formulario" />
</label>
</p>
</form>
</body>
</html>

Ahora abrimos otro documento y lo guardamos con extension PHP ya sea con algun editor web o notepad.

enviar.php
<?php

$mail='[correo eliminado]';


$nombre = $_POST['nombre'];
$telefono = $_POST['telefono'];
$email = $_POST['email'];
$mensaje = $_POST['mensaje'];

$thank="gracias.html";

$message = "
nombre:".$nombre."
telefono:".$telefono."
email:".$email."
mensaje:".$mensaje."";

if (mail($mail,"Formulario de Consulta",$message))
Header ("Location: $thank");

?>

Mi total desconocimiento de estas cosas me lleva a plantearos varias dudas:

1) si se contrata un hosting con soporte para PHP ¿basta escribir en la página un código como el anterior -por poner un ejemplo- y el formulario funciona sin necesidad de nada más?

2) He visto que hay un PHP4 y un PHP5 (además de los anteriores, supongo...). ¿Eso influye a la hora de implementar un formulario o cualquier otra función basada en PHP?

3) ¿Pueden añadirse a un formulario PHP restricciones de seguridad de algún tipo? No sé, supongamos por ejemplo que al formulario que he puesto antes como muestra se le quisiera limitar el número de caracteres en algún campo, y que admitiera sólo letras y no números ni tags. ¿Cómo se conseguiría eso?

Un saludo al foro :wink:
He echado un vistazo al tuto que me indicas, no obstante debo examinarlo con más detalle. De todas formas, y con respecto a la tercera duda que planteo en mi post anterior, ¿sabes qué código se necesita para que un campo de formulario sólo acepte letras y no números ni tags? La cuestión me parece importante de cara a prevenir usos maliciosos del formulario. Y en cuanto a limitar el número de caracteres, ¿se requiere también PHP o basta con usar el atributo html habitual?
La verdad es que yo escribo todo el código manualmente, con el bloc de notas. De todas formas, estuve mirando por ahí algunas cosillas que posiblemente alguien con nociones de PHP sepa utilizar. ¿Te parece que las incluya aquí?
Bueno, encontré un script PHP "de fabricación casera", elaborado por el responsable de www.pena2.org. Es éste:

function checkString($s) {
$s = str_replace("<","&lt;",$s);
$s = str_replace(chr(13),"
",$s);
return trim($s);
}
$nombre=checkString($_POST['nombre']);

A ver si alguien lo prueba y comenta qué tal funciona.
Caray, qué despiste... He olvidado aclarar que el script anterior sirve para eliminar los tags que posibles usuarios maliciosos pudieran intentar introducir en el campo de nuestro formulario.
Y también que, soluciones personales aparte, existe en PHP una función específica para esto de remover tags: http://es.php.net/strip_tagsEso sí, en caso de que alguien sepa explicarme cómo se añade al código del formulario (en qué parte del mismo debe ir), le agradecería mucho que lo hiciera, porque yo no he entendido ni jota :?
Bueno, pregunté a alguien que tuvo la amabilidad de explicármelo. La cosa quedaría así:

<?php
$mail='[correo eliminado]';

$nombre = $_POST['nombre'];
$telefono = $_POST['telefono'];
$email = $_POST['email'];
$mensaje = $_POST['mensaje'];

// Reemplaza los caracteres numéricos por nulos (es decir, los elimina)
$mensaje = preg_replace("/[0-9]+/","",$mensaje);

// Elimina los tags HTML
$mensaje = strip_tags($mensaje);


// Si el mensaje tiene más de 1000 caracteres...
if (strlen($mensaje) > 1000) {
// Recorta el mensaje a 1000 caracteres.
$mensaje = substr($mensaje,0,1000);
}

$thank="thanks.html";
$message = "
nombre:".$nombre."
telefono:".$telefono."
email:".$email."
mensaje:".$mensaje."";



if (mail($mail,"Formulario de Consulta",$message))
Header ("Location: $thank");

?>

Y si alguien cree ver algún fallo en lo arriba expuesto, que lo comente. :roll: