estoy validando las variables que recibo al enviar un formulario, mi pregunta es si es necesario usar mysqli_real_escape o simplemente usando mis validaciones para que corresponda con el tipo que quiero vale?? Os pongo el código:
Código HTML:
<form method="post" action="alta.php" enctype="multipart/form-data"> <div id="m1"> <b>Nombre:</b> <input type="text" id="nom" name="nom_act" maxlength="20" pattern="^[A-ZÁÉÍÓÚ]{1}[A-Za-zñÑáéíóúüÁÉÍÓÚÜ\s/.]{1,19}" required autofocus onkeyup="Mayus(this)"> <br> <b>Descripción:</b> <br> <textarea name="desc_act" placeholder="Escriba una descripción..." required onkeyup="Mayus(this)"></textarea> <br> <b>Sala:</b> <select id="sala" name="sala_act" required> <?php while($fila = mysqli_fetch_array($registros)) { ?><option value="<?php echo $fila["id"];?>"><?php echo $fila["nom"];?></option><?php } ?> </select> <b>Nº máx. de alumnos:</b> <input id="alum" type="number" name="cap_act" value="26" min="1" max="150" step="1" required> </div> <div id="m2"> <input type="checkbox" name="marca" value="1" onClick="matric(this.form)"> <b>Precio Matrícula:</b> <input type="number" name="matr_act" min="1" max="1000" step="0.1" required disabled> </form>
Código PHP:
$n = preg_replace('/\s\s+/',' ',mysqli_real_escape_string($conex,$_POST["nom_act"]));
$n = strtoupper(substr($n,0,1)) . substr($n,1);
if(strlen($n)>20 || strlen($n)<2 || is_numeric($n) || is_numeric(substr($n,0,1)))
$enviar = false;
$s = mysqli_real_escape_string($conex,$_POST["sala_act"]);
if(is_numeric($s) && $s!='0')
{
if(strlen($s)>1)
$enviar = false;
else
{
$s = (int)$s;
$registros = mysqli_query($conex,"SELECT nom FROM sala WHERE uso='si' AND id=$s");
if(mysqli_num_rows($registros)==0)
$enviar = false;
}
}
else
$enviar = false;
$d = mysqli_real_escape_string($conex,$_POST["desc_act"]);
$d = preg_replace('/\s\s+/',' ',filter_var($d,FILTER_SANITIZE_STRING));
$d = str_replace("'"," ", $d);
$d = strtoupper(substr($d,0,1)) . substr($d,1);
$c = mysqli_real_escape_string($conex,$_POST["cap_act"]);
if(is_numeric($c))
{
$c = (int)$c;
if($c==0 || $c>150)
$enviar = false;
}
else
$enviar = false;
if(isset($_POST['marca']))
{
if($_POST['marca']=='1' && is_numeric($_POST["matr_act"]))
{
$m = mysqli_real_escape_string($conex,$_POST["matr_act"]);
$m = number_format($m,2,'.','');
}
else
$enviar = false;
}
else
$m = "NULL";
Un saludo y gracias de antemano.