Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: mark182 en 9 Noviembre 2009, 04:44 am



Título: Duda bastante nw con los select
Publicado por: mark182 en 9 Noviembre 2009, 04:44 am
Hol como les va?

Recien comienzo con la programacion web. Estoy creando un sistema de registracion donde eh puesto un select con varias opciones. Lo que no puedo hacer es insertar la opcion elegida en mysql. Y pude insertar todo como el nombre de usuario, password y demas pero con el select nose como hacerlo. Me darian una mano?

Muchas gracias.


Título: Re: Duda bastante nw con los select
Publicado por: cassiani en 9 Noviembre 2009, 04:49 am
PHP?
ps capturas los datos del select igual que cualquier otro campo y lo pasas como parámetro en tu cadena sql.

No sé como lo estarás haciendo ..


Título: Re: Duda bastante nw con los select
Publicado por: mark182 en 9 Noviembre 2009, 05:01 am
Si en php, pero nose...no se inserta en la tabla

Codigo html:

Colegio y Curso: <select name="colegio">
<option value="1"selected>Pedro B. Palacios 1º (ESB)</option>
<option value="2">Pedro B. Palacios 2º (ESB)</option>
<option value="3">Pedro B. Palacios 3º (ESB)</option>
</select>

Codigo php:

$nombre = $_REQUEST["nom"];
$apellido = $_REQUEST["ape"];
$coleycurso = $_REQUEST["colegio"];

mysql_query("INSERT INTO alumnos (nombre,apellido,colegio)
VALUES ('$nombre', '$apellido', '$sexo', '$coleycurso')");

El nombre y apellido se guardan pero el colegio (el select) no.  :-\

Que estoy haciendo mal?


Título: Re: Duda bastante nw con los select
Publicado por: cassiani en 9 Noviembre 2009, 06:40 am
revisa el query, si no me equivoco, eso debería mostrate un error..


Título: Re: Duda bastante nw con los select
Publicado por: xkiz ™ en 9 Noviembre 2009, 07:01 am
http://php.net/manual/en/function.mysql-error.php
fijate hace un echo  mysql_error();
para que te muestre donde esta el error


Título: Re: Duda bastante nw con los select
Publicado por: :ohk<any> en 9 Noviembre 2009, 15:41 pm
mejor:

En el codigo HTML, debe haber un <form action="post"></form>
El que recibe, lo hace asi:

Código
  1.  
  2. //Funcion que limpia las variables y asegura contra inyección SQL
  3.  
  4. function addslashes__recursive($var){
  5. if (!is_array($var))
  6. return addslashes($var);
  7. $new_var = array();
  8. foreach ($var as $k => $v)$new_var[addslashes($k)]=addslashes__recursive($v);
  9. return $new_var;
  10. }
  11.  
  12. //Usando la funcion
  13.  
  14. $_POST=addslashes__recursive($_POST);
  15.  
  16. //Recibiendo variables.
  17.  
  18. $nombre = $_POST["nom"];
  19. $apellido = $_POST["ape"];
  20. $coleycurso = $_POST["colegio"];
  21.  
  22.  

Ahora bien, en el codigo que pusiste dice:

Citar
mysql_query("INSERT INTO alumnos (nombre,apellido,colegio)
VALUES ('$nombre', '$apellido', '$sexo', '$coleycurso')");

Osea, aclaras que tu tabla tiene 3 campos, nombre, apellido, colegio, pero introduces 4 campos, sexo se agrega, el cual no se recibe en ningun lado, osea que puede estar ocasionando un error, porque deberia entrar algo.

Lo que supongo te falta es:

Código
  1. $sexo = $_POST["sexo"];

Y tambien, ejecutas tu consulta sin hacer una conexión, lo mejor seria hacerla asi:

Código
  1. $consulta = "INSERT INTO alumnos (nombre, apellido, sexo, colegio)
  2. VALUES ('$nombre', '$apellido', '$sexo', '$coleycurso'";
  3.  
  4. mysql_query($consulta, $datos_conexion) or die(mysql_error());
  5.  

Donde $datos_conexion seria igual a:

Código
  1.  
  2. $hostname = 'localhost';
  3. $username = 'user';
  4. $password = '****'
  5.  
  6. $datos_conexion = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
  7.  

Y creo que con eso se arregla.
Haber si nos cuentas como anda.

Saludos


Título: Re: Duda bastante nw con los select
Publicado por: mark182 en 9 Noviembre 2009, 16:15 pm
Perdon...lo que pasa es que el original tiene sexo, email, tel y cel pero para hacerlo mas resumido borre todo lo demas pero se ve que me olvide de borrar sexo  ;D  jeje, tambien deje de lado la parte de la conexion con la base de datos porque es algo obvio. Lo que no entendi muy bien es para que sirve esa funcion que pusiste? Que es lo que hace?

Gracias a todos.


Título: Re: Duda bastante nw con los select
Publicado por: :ohk<any> en 9 Noviembre 2009, 16:18 pm
Citar
//Funcion que limpia las variables y asegura contra inyección SQL
 
function addslashes__recursive($var){
if (!is_array($var))
return addslashes($var);
$new_var = array();
foreach ($var as $k => $v)$new_var[addslashes($k)]=addslashes__recursive($v);
return $new_var;
}

Inyeccion SQL:

Citar
nyección SQL es una vulnerabilidad informática en el nivel de la validación de las entradas a la base de datos de una aplicación. El origen es el filtrado incorrecto de las variables utilizadas en las partes del programa con código SQL.

Seguir leyendo... (http://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL)

Saludos


Título: Re: Duda bastante nw con los select
Publicado por: cassiani en 9 Noviembre 2009, 16:26 pm
jejeje evitarla!!


Título: Re: Duda bastante nw con los select
Publicado por: :ohk<any> en 9 Noviembre 2009, 16:28 pm
jejeje evitarla!!

 :xD

Pues claro, no es una función para inyecciones sql, para eso no pones nada y eres vulnerable  :P :laugh:


Título: Re: Duda bastante nw con los select
Publicado por: cassiani en 9 Noviembre 2009, 16:37 pm
see ya se ¬¬ decia que solo le respondias "inyeccion sql" capaz y cree que es para llevarla acabo

ohk  :¬¬ :¬¬


Título: Re: Duda bastante nw con los select
Publicado por: mark182 en 9 Noviembre 2009, 17:45 pm
entonces....que es lo que tengo que hacer? medio que no estoy entendiendo mucho jejej. Pongo ese script o no?


Título: Re: Duda bastante nw con los select
Publicado por: mark182 en 9 Noviembre 2009, 19:24 pm
Listo ya lo pude solucionar. Igualmente me quedo la intriga para que sirve ese script. Gracias a todos.


Título: Re: Duda bastante nw con los select
Publicado por: WHK en 9 Noviembre 2009, 19:44 pm
Hola, con addslashses igual puedes inyectar saltos de lineas, caracteres nulos y % como comodines en caso de haber un like, mejor utiliza la función que está diseñada para evitar una inyección sql:
http://cl.php.net/manual/en/function.mysql-real-escape-string.php