PHP - Error al procesar formulario

 
Vista:

Error al procesar formulario

Publicado por Necesito ayuda (1 intervención) el 15/02/2010 22:46:55
Saludos yo hice un formulario y en la misma página php programé para insertar registros en la base datos pero tengo los siguientes errores y no sé a que se refieren:

Notice: Undefined index: nombre in C:\Archivos de programa\EasyPHP5.3.0\www\paginas\index.php on line 52

Notice: Undefined index: apellido in C:\Archivos de programa\EasyPHP5.3.0\www\paginas\index.php on line 53

Gracias por su ayuda

Este es el código de la página con la que estoy trabajando:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
</head>

<body>
<table width="750" border="1" align="center">
<tr>
<td><p>Hola Introduce tus datos ahora! </p>
<p>
<label></label></p>
<form id="form1" name="form1" method="post" action="index.php">
Nombre
<input name="nombre" type="text" id="name"/>
Apellido
<input name="apellido" type="text" id="apellido" />
Enviar
<input name="submit" type="submit" id="submit" value="Enviar" />

</form>
<label><br />
</label></td>
</tr>
</table>
</body>
</html>

<?php
$dbhost="localhost";
$dbusuario="root";
$dbpassword="mipassword";
$db="registro";
$conexion=mysql_connect($dbhost,$dbusuario,$dbpassword);
if (!$conexion){
echo "Error al intentar conectarse con el servidor MySQL";
}
else{
echo "Conexion Exitosa";
echo $conexion;
}
$base=mysql_select_db ("registro");
//Insertar registros
$n=$_POST['nombre'];
$a=$_POST['apellido'];
mysql_query("Insert into nombres(Nombres,Apellidos) values ('$n','$a')",$conexion);
mysql_close($conexion);
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error al procesar formulario

Publicado por Diego Romero (1450 intervenciones) el 16/02/2010 03:43:48
Hombre, pues es bien sencillo. La primera vez que el visitante carga la página usa el método de petición GET y no POST y por lo tanto las variables $_POST estarán vacías, es por eso que te marca ese error, simplemente la primera vez no existen ni $_POST["nombre"] no $_POST["apellido"].

Solo si e visitante ha pulsado en el submit del formulario se hará la petición tipo POST y entonces sí existirán $_POST["nombre"] y $_POST["apellido"].

Entonces lo que debes hacer es antes de si quiera conectar a la base de datos es verificar qué método de petición se está usando para invocar la página.

Esto lo puedes hacer así:

<?php
$metodo = $_SERVER["REQUEST_METHOD"];
if ($metodo != "POST") { exit; }
/* resto de tu código aquí */
?>

Adicionalmente, para evitar abusos, deberías verificar que las variables que te interesan existen realmente. Lo puedes hacer con:

if (!isset($_POST["nombre"])) {
echo "No ha ingresado el nombre";
exit;
}
if (empty($_POST["nombre"])) {
echo "Nombre no puede estar vacío";
exit;
}

Si no, terminarás con basura en la base de datos.

Nota: recuerda que nunca debes confiar en los datos que te manda el usuario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar