Bueno, primero que nada, gracias por tomarte la molestia de leer el mensaje, y segundo, disculpa si escribo bestialidades, soy muy novato en todo este asunto de php...
Recientemente me puse a trabajar en una pagina web, y actualmente estoy haciendo el formulario de contacto.. normalucho, nada del otro mundo... pero quiero hacer un class de validacion para usarlo a futuro en otros forms, como puede ser login, o ingresar datos a la db, es por eso mismo que quiero hacerlo de un modo que me funcione y obviamente, me sea entendible con mi poco nivel de programacion.
La idea seria la siguiente:
En el php donde iria el form:
Código PHP:
Ver original<?php
if (isset($_POST['Submit'])) {
$functions->validarNombre($_POST['name'],'15','50');
if (!$errors) {
//envia el email
echo "gracias por el email pepito!!<br/><br/>";
} else {
echo '<div class="error_box">' . $errors . '<br/></div>';
}
}
?>
La class de validacion:
Código PHP:
Ver original<?
{
}
class functions extends nwMySQL
{
var $username;
var $password;
function validarNombre($name, $min_length, $max_length)
{
if ($name != "")
{
$name = filter_var($name, FILTER_SANITIZE_STRING
); if ($name == "")
{
$errors .= 'Please enter a valid name.<br/><br/>';
}
elseif (strlen($name) < $min_length) {
$errors .= 'Please enter a valid name.<br/><br/>';
}
elseif (strlen($name) > $max_length) {
$errors .= 'Please enter a valid name.<br/><br/>';
}
}
else
{
$errors .= 'Please enter your name.<br/>';
}
}
}
?>
La llamo en el index.php de la web de la siguiente manera:
Código PHP:
Ver original<?
header("Cache-control: private");
require ('_modulos/configuracion.php');
require ('_modulos/mysql.class.php');
require ('_modulos/functions.class.php');
require ('_modulos/lenguajes.class.php');
require ('_modulos/paginacion.class.php');
$Contenido = $_REQUEST['go'];
if($Contenido == '')
{
$Contenido = 'inicio';
}
$nwMy = new nwMySQL;
$nwMy->Connect();
$functions = new functions();
?>
La pregunta principal seria, como hago para imprimir/chequear el $errors en el php del formulario?
Si se preguntan porque esta todo en spanglish es porque me resulta facil acordarme algunas funciones en español y otras en ingles...
Por si a alguien le es de ayuda tmb, el codigo original del formulario de php lo saque de aca: http://net.tutsplus.com/tutorials/php/sanitize-and-validate-data-with-php-filters/
Bueno, lo solucione por mi cuenta, por si a alguien le ayuda, dejo el codigo actual, tambien si ven algo incorrecto y me lo corrigen, se los agradeceria.
Código PHP:
Ver original<?
{
}
require ("lenguajes.class.php");
class functions extends nwMySQL
{
var $username;
var $password;
var $errors;
//Validar variable para nombre/login, con minimo y maximo de caracteres
function validarTexto($valor_input, $min_length, $max_length,$nombreinput)
{
if ($valor_input != "")
{
$valor_input = filter_var($valor_input, FILTER_SANITIZE_STRING
); $input_length = strlen($valor_input); if ($valor_input == "")
{
$this->errors[] = sprintf(formvalidator_fieldinvalid
,$nombreinput); return false;
}
if ($input_length < $min_length)
{
$this->errors[] = sprintf(formvalidator_fieldminlenght
,$nombreinput,$min_length); return false;
}
if ($input_length > $max_length)
{
$this->errors[] = sprintf(formvalidator_fieldmaxlenght
,$nombreinput,$max_length); return false;
}
}
else
{
$this->errors[] = sprintf(formvalidator_fieldrequired
,$nombreinput); return false;
}
}
//Validar direcciones de E-Mail
function validareMail($valor_input,$nombreinput)
{
if ($valor_input != "")
{
$valor_input = ereg("^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$", $valor_input); if ($valor_input == "")
{
$this->errors[] = sprintf(formvalidator_fieldinvalid
,$nombreinput); return false;
}
}
else
{
$this->errors[] = sprintf(formvalidator_fieldrequired
,$nombreinput); return false;
}
}
function validarNumero($valor_input,$min_length,$max_length,$nombreinput)
{
if ($valor_input != "")
{
$input_length = strlen($valor_input); {
$this->errors[] = sprintf(formvalidator_fieldnumeric
,$nombreinput); return false;
}
if ($input_length < $min_length)
{
$this->errors[] = sprintf(formvalidator_fieldminlenght
,$nombreinput,$min_length); return false;
}
if ($input_length > $max_length)
{
$this->errors[] = sprintf(formvalidator_fieldmaxlenght
,$nombreinput,$max_length); return false;
}
}
else
{
$this->errors[] = sprintf(formvalidator_fieldrequired
,$nombreinput); return false;
}
}
// Chequea si se encontraron errores.
function validarbuscarErrors()
{
if (count($this->errors) > 0) {
return true;
}
else
{
return false;
}
}
// Devuelve una lista de errores, separados por un elemento customizado.
function validarlistarErrors($delim = '')
{
return implode($delim,$this->errors); }
}
?>
Para mostrar los errores:
Código PHP:
Ver originalif (isset($_POST['Enviar'])) {
$functions->validarTexto($_POST['name'],'5','30',contact_contactform_nameandlastname);
$functions->validarNumero($_POST['phone'],'8','15',contact_contactform_telephone);
$functions->validarNumero($_POST['cellphone'],'10','17',contact_contactform_cellphone);
$functions->validarTexto($_POST['estate'],'5','30',contact_contactform_estate);
$functions->validarTexto($_POST['city'],'5','30',contact_contactform_city);
$functions->validareMail($_POST['email'],contact_contactform_email);
$functions->validarTexto($_POST['message'],'10','1000',contact_contactform_yourmessage);
if (!$functions->validarbuscarErrors())
{
//envia el email
echo '<div class="ok_box">gracias por el email pepito!!<br/></div>';
}
else
{
echo '<div class="error_box">'.$functions->validarlistarErrors('<br />'). '</div>';
}
}