Buenas,
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";
Y por ejemplo, si yo compruebo si es un número, en el caso que tuviera que aplicar la función de mysqli_real_escape, la aplico antes de comprobar que es un numero o como lo tengo en el código (después)??
Un saludo y gracias de antemano.