Ok...
Primero que nada, todo lo que tenga que ver con la modificación de la apariencia del sitio (el fondo del sitio, color de la letra, tamaño de la letra, tamaño de cualquier componente, etc.) debe ir en hojas de estilo CSS (no es que
deba ir en estas, sino que es una recomendación para una fácil modificación del sitio).
Segundo, las inyecciones SQL se hacen con o sin Javascript, pues se envían consultas al servidor y es el servidor quién termina ejecutando el código peligroso. Las inyecciones se evitan con el lenguaje del servidor (llámese PHP, ASP, Perl, Ruby, etc.) Cuando tengas tiempo, hay una versión de Linux llamada Backtrack que, entre muchas herramientas, incluye software que intenta vulnerar tu sistema (SQL Inyection - SQLi), lo que te permitirá fortalecer los puntos débiles.
Ahora sí, a resolver el problema:
<?php
if( isset( $_POST['Nombre'] ) && // Sólo si existe la variable "Nombre" y la variable "Password" se hará lo siguiente
isset( $_POST['Password'] ) && // El índice "Sexo" siempre tendrá un valor (tú lo especificaste así)
isset( $_POST['Numero'] ) ) {
// leer datos de usuario y contraseña de la base de datos
include("config.php") ;
// Conexión con el servidor
$link = mysql_connect($server, $db_user, $db_pass) or die ("error1".mysql_error()); // Siempre es útil tener el enlace en una variable ($link)
// Selección de Base de Datos
mysql_select_db($database) or die ("error2".mysql_error()); // 1
mysql_query ("INSERT INTO `Database_Prueba`.`Usuarios` (`Nombre`, `Password`, `Numero`, `Sexo`) VALUES ('$_POST[Nombre]', '$_POST[Password]', '$_POST[Numero]', '$_POST[Sexo]') ");
} else {
echo "Todos los campos son necesarios";
}
?>
1 Cuando utilizas mysql_select_db no es necesario especificar el nombre de la base de datos al insertar o hacer cualquier tipo de consulta al servidor, por ende la inserción de datos aún funcionaría así: mysql_query( "INSERT INTO `Usuarios` (`Nombre`, `Password`, `Numero`, `Sexo`) VALUES ('$_POST', '$_POST', '$_POST', '$_POST')" );Lo anterior sólo valida que los campos no estén vacíos y aún se pueden hacer inyecciones de código, así que cuidado. Una manera simple de prevenir las inyecciones es limpiar los datos pasados así (después de validar que no están vacíos):
$nombre =
htmlspecialchars( $_POST['Nombre'] );
$password = htmlspecialchars( $_POST['Password'] ); // Yo no limpiaría la contraseña, en su lugar usaría una
expresión regular$numero = is_numeric( $_POST['Numero'] ) ? $_POST['Numero']: 1; //
is_numeric( $variable ) valida que el contenido de la variable sea un número.
$sexo = is_numeric( $_POST['Sexo'] ) ? $_POST['Sexo']: 1;
A pesar de que Sexo siempre tendrá un valor (a todo esto, te falta la etiqueta </select> después del último <option></option> en el formulario), este puede ser otra cosa que no sea un número, pues hay formas de modificar el contenido de los formularios (incluso de los campos tipo
hidden) a través de las herramientas que tiene el navegador (en Google Chrome de Linux, por ejemplo, podrías hacerlo presionando Control + Shift + i).
La última expresión (por si no lo sabes) es como decir "Si es un número (is_numeric() ?), entonces asigna el contenido de la variable a $numero, de lo contrario asigna un 1 a $numero (: 1;)". Sería lo mismo que esto (solo que en una sola línea):
$numero = 0;
if( is_numeric( $_POST['Numero'] ) )
$numero = $_POST['Numero'];
else
$numero = 1;
En cuanto a la última pregunta de tu primer post, ¿qué tipo de mensaje? ¿Un email? ¿Un simple mensaje de "Gracias por registrarte"? Si nos respondes eso te podemos ayudar más.
Saludos :D.