Hola. La explicación sobre porque no quiero validar en JavaScript era un resumen.
Evidentemente se puede validar en Javascript y en PHP a la vez, aunque vuelvo a decir que NUNCA lo haría en javascript. En todo caso haría la validación en php mediante una llamada AJAX desde JS (así es más agradable para el usuario), pero la propia validacion de campos nunca en JS. Además que por la seguridad, siempre es mejor que el usuario sepa lo menos posible del codigo de la web.
El formulario lo uso para enviar emails. Lo he hecho como dice GatorV, pero sin el header y un action= a la propia página.
Código PHP:
Ver original<?php
//Enviar mail
include('send.php');
//Controlar doble Post
require("postClass.php");
$thisPost = new Post_Block;
//Evitar caracteres extraños en la cadena
function limpiarCadena($cadena){
$cadena = preg_replace("/¡|\^|'|:|@|#|\$|%|&|\"|~|\+|\*|\/|\||\\|\[|\]|\(|\)|\{|\}/","",$cadena); return $cadena;
}
//sintaxis email
function limpiarEmail($email){
$mail_correcto = 0;
//compruebo unas cosas primeras
//miro si tiene caracter .
//obtengo la terminacion del dominio
//compruebo que la terminación del dominio sea correcta
//compruebo que lo de antes del dominio sea correcto
if ($caracter_ult != "@" && $caracter_ult != "."){
$mail_correcto = 1;
}
}
}
}
}
if ($mail_correcto) return 1;
else return 0;
}
if(isset($_POST['postID']))
if ($thisPost->postBlock($_POST['postID'])) {
if( (isset($_POST["mensaje"])) && (isset($_POST["email"])) ) //Si el campo Nombre está activo y tiene contenido....
if( ($_POST["email"] != '') && (limpiarEmail($_POST["email"])) )
if( ($_POST["mensaje"] != '') ){
$mail = new enviarMail();
$rslt = $mail->sendMsg($_POST["email"],$_POST["name"],$_POST["topic"],$_POST["mensaje"],$_SESSION["lang"]);
if ($rslt) $rtdoMensaje = "Mensaje enviado";
else $rtdoMensaje = "Error al enviar el mensaje. Intentalo de nuevo.";
}
else
$controlMensaje = "<span style='color:red'> (Campo mensaje requerido)</span>";
else
$controlMail = "<span style='color:red'> (Campo mail requerido)</span>";
}
?>
Código HTML:
Ver original<form method="post" action="?x=ctt">
<!-- Textarea -->
<?php if(isset($controlMensaje)) echo $controlMensaje; ?>
<textarea name="mensaje" style="height:225px; width:480px;" ><?php if(isset($_POST["mensaje"])) echo $_POST["mensaje"] ?></textarea>
<!-- Textbox Email -->
<?php if(isset($controlMail)) echo $controlMail; ?>
type="text"
name="email"
value="<?php if(isset($_POST["email"])) echo $_POST["email"] ?>"
/>
<!-- Boton Enviar -->
<input type="submit" style="width:auto; cursor:pointer" value="Enviar"><?php if(isset($rtdoMensaje)) echo $rtdoMensaje; ?>
<?php $thisPost->startPost(); ?>