Hola.
Yo para hacer lo que tu comentas lo que hago es hacerme 1 función sencillita, con un for que recorre la cadena y verifica si ahi algun caracter "raro".
Esta función no contiene funciones especificas de php y es como diria yo "estandar" jeje.
Aqui tienes, (esta función la tendrias que llamar antes del procesamiento de datos para verificar si te intentan inyectar sql inyection).
function verificarsql($valor) {
for(int $i=0;$i<=strlen($valor);$i++)
if($valor[$i]=='-' || $valor[$i]=='=') {
echo '<script>alert("No se admiten caracteresespeciales");location.href="PAGINA A REDIRECCIONAR";</script>';
}
}
Pero realmente esa función no es muy efectiva que digamos (se puede saltar facilmente).
Lo que podrias hacer es que, las contraseñas solo contengan números y verificar con una función si alguna letra escrita es diferente a un número, (con esta función):
function verificarcaracter($valor) {
for(int $i=0;$i<=strlen($valor);$i++)
if($valor[$i]<0 || $valor[$i]>9)
echo '<script>alert("No se admiten estos caracteres.");location.href="pagina a redireccionar";</script>';
}
Yo te recomendaria la 2º opción, pero tiene un inconveniente y es que las contraseñas solamente las podrias almacenar númericas (solamente números).
--------------------------------
Explicación código:
1º Función: lo que hace esta función es recorrer todos los caracteres de la cadena que le pasamos como parametro ($valor) y verificar si se encuentra algun caracter (-) o un signo igual (=) devolver un error y redireccionar a la página que queramos.
2º Función: Lo que hace esta función es recorrer todos los carácteres de la cadena que le pasamos como parámetro ($valor) y verificar si se encuenta algun caracter. Ya que las contraseñas solamente contendran números.
---------------------------------------------
Ya se que el código puede mejorarse con funciones como htmlentities() y demás funciónes de php para manejar los caracteres "raros" pero a mi me gusta hacerme funciones "de toda la vida" y no elegir funciones especificas de un lenguaje...
NOTA: Debes de cambiar en el location.href= el texto de REDIRECCIONAR PAGINA, al fichero que quieres redireccionar despues del error.
-----------------------------------------------------------------------------------------
Añado:
La redirección utilizando la función header() de php, como ha dicho el usuario (fede_cp) es muy buena opción, pero tiene un pero, y el pero es el siguiente:
Esta función te dará error si la insertas despues de varias lineas de código de php. ¿Porque? pues porque los "headers" de la página ya se habran enviado al servidor, y la función header() no funcionará, ya que, el script en php, te dará un warning diciendote que los headers ya han sido enviados, que no se pueden modificar ya que han sido enviados.
¿A que se traduce esto? A que no redireccionaria.
Por este caso, utilizo yo location.href de javascript para redireccionar, ya que, el 95% de los navegadores actuales tienen javascript activado por defecto y muy poca gente (por no decir ningúna) no desactiva javascript, asi que, no tendrias problemas.
---------------------------------------------------------------------------------------------
Estas funciónes aún se le puede meter más azucar para que sea más dulce jeje...
Se pueden modificar para que, cuando detecte una inyección de ese tipo, guarde la ip del visitante ($_SERVER['REMOTE_ADDR']), en un fichero de texto o base de datos para ver si la misma persona intenta atacarte varias veces y tomar medidas. Incluso, al detectar
ese tipo de inyección te podria enviar un correo, avisandote de que
tal ip te esta intentando hackear.
Si necesitas la función más "azucarada" jeje, dimelo y te la posteo aqui en 5 minutitos.
Ya me cuentas!
Saludos.