es algo echo a la ligera y bien paranoico
, pero tambien recuerda que puedes utilizar jquery o algun ajax para validar datos desde lado del usuario, hay muchos aqui tienes un links
http://www.google.es/#hl=es&source=h...ca4cb4c0fea563
pero tambien recuerda que siempre tienes que validar del lado servidor con php.... el javascript o ajax te sirve para usuarios no maliciosos....
en fin aqui tienes un codigo que realice a la ligera tal vez te de algun error pero trata de mejorarlo.... yo uso cosas asi, muchos prefieren usar filtros de terceros para validacion como
http://htmlpurifier.org/ Código PHP:
<?php
// incluimos el archivo de conexion
include ('db_cnx.php');
// recibimos el formulario
$error_empresa= "Está empresa ya existe. Por favor intente con otro cliente.<br>";
$error_vacio="debes completar todos los campos del formulario";
///coloca todos los caracteres y palabras que puedan hacer daño slect, WHERE, from etc...
///debes colcoarlos en minuscualas y mayuculas si no usa la funcion php para pasar lo que
//usuario coloque siempre a minusculas.....
$reemplame=array("\x00",'*','#','@','!','%','&','|','+','-','$','^' ,'\x00', '\\/', '/', ':', '?', '¿', '<', '>', ',', ';','(',')','$','%','[',']','"',' ','Á','É','Í','Ó','Ú','Ü','ú','ó','á','é','í','ü','.','UNION','union');
if(isset($_POST['enviar']) && $_POST['enviar'] == 'Enviar')
{
$codigo_emp = htmlentities($_POST['codigo_emp'], ENT_QUOTES);
//si el codigo es numerico solamente
if (!preg_match("/^[0-9]+$/", $codigo_emp)){
///si no es valor numeral lo envias a una pagina de error o lo que tu quieras
header("Location:pagina_error.php");
exit();
}
$descripcion = htmlentities($_POST['descripcion'], ENT_QUOTES);
//si la descripcion tendra caracteres alfa numericos unicamente
if (!preg_match("/^[a-zA-Z0-9]+$/", $descripcion)){
///si tiene un codigo malicioso lo envias a pagina de error
//NOTA: no aclares en la pagina ninguna nota que diga que error cometio ...
//eso daria pautas al atacante, tambien recuerda que debes hacer una tabla en tu DB
//para almacenar IP y errores si se cometen ejemplo: mas 7 errores de este tipo
//bloqueas el IP ....
header("Location:pagina_error.php");
exit();
}
$comprador1 = htmlentities($_POST['comprador1'], ENT_QUOTES);
if (!preg_match("/^[a-zA-Z]+$/", $comprador1)){
///iden anteriores
header("Location:pagina_error.php");
exit();
}
$identidad1 = htmlentities($_POST['identidad1'], ENT_QUOTES);
if (!preg_match("/^[a-zA-Z]+$/", $identidad1)){
///crear archivo de aviso suspension
header("Location:pagina_error.php");
exit();
}
$comprador2 = htmlentities( $_POST['comprador2'], ENT_QUOTES);
if (!preg_match("/^[a-zA-Z]+$/", $comprador2)){
header("Location:pagina_error.php");
exit();
}
$identidad2 = htmlentities($_POST['identidad2'], ENT_QUOTES);
if (!preg_match("/^[a-zA-Z]+$/", $identidad2)){
header("Location:pagina_error.php");
exit();
}
// comprobamos que el formulario no envie campos vacios
if(empty($_POST['codigo_emp']) && $_POST['descripcion'] &&
$_POST['comprador1'] && $_POST['identidad1'] && $_POST['comprador2'] && $_POST['identidad2'])
{
$error_vacio;
// $error_stop=1; se usaria para crear un codigo mas complejo pero no tengo tiempo :-(
}
elseif{
$img1=$_POST['codigo_emp'];
$img1=str_replace($reemplame,'',$img1);
$codigo_emp = $_POST['codigo_emp'];
$codigo_emp=str_replace($reemplame,'',$codigo_emp);
$descripcion = $_POST['descripcion'];
$descripcion=str_replace($reemplame,'',$descripcion);
$comprador1 = $_POST['comprador1'];
$comprador1=str_replace($reemplame,'',$comprador1);
$identidad1 = $_POST['identidad1'];
$identidad1=str_replace($reemplame,'',$identidad1);
$comprador2 = $_POST['comprador2'];
$comprador2=str_replace($reemplame,'',$comprador2);
$identidad2 = $_POST['identidad2'];
$identidad2=str_replace($reemplame,'',$identidad2);
$busqueda = sprintf("SELECT codigo_emp FROM datos WHERE codigo_emp='%s'",stripslashes(mysql_real_escape_string('$codigo_emp')));
$busqueda_sqlq=mysql_query($busqueda);
//$busqueda_fetch=mysql_fetch_array($busqueda_sqlq);
elseif(mysql_num_rows($busqueda)!=0) { // ó " !=0 " como se quiera ver
// Inciso a:
$error_empresa;
// $error_stop=1; se usaria para crear un codigo mas complejo pero no tengo tiempo :-(
// echo "<a href=\"javascript:history.back()\">Regresar</a>";
//si genera error el formulario no se enviara debe cargarse ...creo ....que tendras que crear sessiones con los campos del formulario para que lo que ha colocado el usuario no se borre....
} else {
$codigo_emp = mysql_real_escape_string($_POST['codigo_emp']);
$descripcion = mysql_real_escape_string(($_POST['descripcion']);
$comprador1 = mysql_real_escape_string(($_POST['comprador1']);
$identidad1 = mysql_real_escape_string(($_POST['identidad1']);
$comprador2 = mysql_real_escape_string(( $_POST['comprador2']);
$identidad2 = mysql_real_escape_string(($_POST['identidad2']);
mysql_query("INSERT INTO datos (codigo_emp, descripcion, comprador1, identidad1, comprador2, identidad2) values ('$codigo_emp', '$descripcion', '$comprador1', '$identidad1', '$comprador2', '$identidad2')", $db_link)
or die(mysql_error());
// enviamos un mensaje de exito
echo "Los datos fueron guardados correctamente";
}
}
// si el formulario viene vacio
//enviamos un mensaje de error
/// echo "El formulario tiene campos vacios, debe llenar el formulario";
}
}
?>
yo en particular prefiero no mostrar que error a ocurrido ya que eso daria pautas a un malicioso, solo mostraria un mensaje general algo asi: --> hay errores en la informacion, por favor verique los datos introducidos.
pues digamos que un malicioso se mete a tu formulario y comienza a generar errores, si da error el campo ejemplo "dos" con esto le estas diciendo que el campo uno es correcto
se entiende....
saludos!!