El tema es que en cada llamada deberías validar los valores. Ahora, por que usar htmlspecialchars con un int?...cuando es así (muchas llamadas para un mismo cometido) es mejor hacerte una función ahorrandote de esta manera valider repetidamente en el código, así:
Código PHP:
funcion caracteresHtml( $str ){
if( !emty( $str ) $str = htmlspecialchars( $str );
$return $str;
}
Y luego tu código quedara:
Código PHP:
$comm_start_from = caracteresHtml($comm_start_from);
$start_from = caracteresHtml($start_from);
$archive = caracteresHtml($archive);
$subaction = caracteresHtml($subaction);
$id = caracteresHtml($id);
$ucat = caracteresHtml($ucat);
$category = caracteresHtml($category);
$number = caracteresHtml($number);
$template = caracteresHtml($template);
...
Con esto ya solucionaras el problema. Ahora puede hacerle un update a la función para los ints, así:
Código PHP:
funcion caracteresHtml( $str, $type=0 ){
if( !emty( $str ) $str = $type==0? htmlspecialchars( $str ): intval( $str );
$return $str;
}
Y la llamaras, si son string de la misma manera, y si son ints con un segundo parametro en 1; así:
Código PHP:
...
$number = caracteresHtml($number,1);
$template = caracteresHtml($template);
...
Espero que te ayude lo dicho.