elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
12 Octubre 2008, 10:27  



+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderadores: Ertai, дٳŦ٭)
| | | |-+  busco Un codigo muy sencillo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Imprimir
Autor Tema: busco Un codigo muy sencillo  (Leído 736 veces)
bels_mike

Desconectado Desconectado

Mensajes: 260



Ver Perfil
busco Un codigo muy sencillo
« en: 09 Octubre 2007, 17:28 »

Bueno, me gustaria crear un formulario de tal modo lso datos que se metan vallan a parar a la base de datos SQL, sol oserian 2 datos, dos palabras, nombre y apllidos.... alguien me puede ayudar?
En línea

alone-in-the-chat

Desconectado Desconectado

Mensajes: 534


Ver Perfil
Re: busco Un codigo muy sencillo
« Respuesta #1 en: 09 Octubre 2007, 21:11 »

Claro que te podemos ayudar .

Cual es la pregunta???


Saludos.
En línea

Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b
bels_mike

Desconectado Desconectado

Mensajes: 260



Ver Perfil
Re: busco Un codigo muy sencillo
« Respuesta #2 en: 09 Octubre 2007, 21:37 »

vale, voy a explicarl ode otra forma, quiero que al rellenar un formulario de dos casillas nada mas sem e envie la informacion a algún sitio, como mi cuenta de correo o una taba de la base de datos....
« Última modificación: 10 Octubre 2007, 00:00 por bels_mike » En línea

R41N-W4R3

Desconectado Desconectado

Mensajes: 222


Ver Perfil
Re: busco Un codigo muy sencillo
« Respuesta #3 en: 11 Octubre 2007, 11:48 »



  En google pones   php  mysql     hay muchos y muy buenos tutoriales basico que te explican como crear la conexion con la BD, como crear el formulario y como meter esos datos......  no es ni medio hoja de codigo..........  intentalo y si no te sale yo mismo te ayudo....  pero intentalo pq sino no aprenderas nada.......

Saludos
En línea
bels_mike

Desconectado Desconectado

Mensajes: 260



Ver Perfil
Re: busco Un codigo muy sencillo
« Respuesta #4 en: 11 Octubre 2007, 19:00 »

ok ok.... voy a mirar... aunq ya he mirado y no me iva pero sigo mirando... :P
En línea

Roberto T.

Desconectado Desconectado

Mensajes: 1.114



Ver Perfil
Re: busco Un codigo muy sencillo
« Respuesta #5 en: 11 Octubre 2007, 19:30 »

Tener tiene que ir... si php y mysql no funcionaran no existirian ningun foro como este  :rolleyes:

Bueno te dare las pistas de que debes usar html para el formulario, luego recibir los datos en php y luego pasarlos a la db... podrias intentarlo con la clase ezsql para empezar a aprender, es sencillita para insertar datos y luego recuperarlos.

Como dice el companiero de arriba, si no lo intentas no pasaras de copiar el codigo y pegarlo, y perderemos a un futuro gran desarrollador web  ;)

Saludos.
En línea

bels_mike

Desconectado Desconectado

Mensajes: 260



Ver Perfil
Re: busco Un codigo muy sencillo
« Respuesta #6 en: 11 Octubre 2007, 23:28 »

jaj y te aseguro que lo toy intentando, solo pregunto algo cuando lo veo tecnicamente imposible....
En línea

bels_mike

Desconectado Desconectado

Mensajes: 260



Ver Perfil
Re: busco Un codigo muy sencillo
« Respuesta #7 en: 12 Octubre 2007, 13:45 »

mas o menos ya lo estoy consiguiendo :D ahora tengo una duda existencial, como puedo hacer que cundo me vuelva a meter la pagniana cargue de nuevo el codigo?? me refiero a que no l otenga en el caché porque si hay datos nuevos si que lso lee pero yo he cambido una cosilla  y no aparece cambiada.. aunq de a actualizar... ¿me entendeis?


edito:
Ademas cuando meto nuevos daos en la base los mete en blanco, mirad esto son lso códigos de als 3 paginas que se utilizan

conect.php
Código
<html> 
<head>
  <title>Ejemplo de PHP</title>
</head>
<body>
 
<?php
function Conectarse()
{
  if (!($link=mysql_connect("localhost","atm","xxxxxxx")))
  {
     echo "Error conectando a la base de datos.";
     exit();
  }
  if (!mysql_select_db("_atm",$link))
  {
     echo "Error seleccionando la base de datos.";
     exit();
  }
  return $link;
}
?>
 
</body>
</html>
 

Ejemplo3.php
Código
<html> 
<head>
  <title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1>
<FORM ACTION="procesar.php">
<TABLE>
<TR>
  <TD>Correo electrónico:</TD>
  <TD><INPUT TYPE="text" NAME="correo" SIZE="20" MAXLENGTH="30"></TD>
</TR>
<TR>
  <TD>cotraseña:</TD>
  <TD><INPUT NAME="pass" TYPE="password" SIZE="20" MAXLENGTH="30"></TD>
</TR>
</TABLE>
<INPUT TYPE="submit" NAME="accion" VALUE="Grabar">
</FORM>
<hr>
 
<?php
  include("conect.php");
  $link=Conectarse();
  $result=mysql_query("select * from prueba",$link);
?>
 
<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
     <TR>
       <TD>&nbsp;<B>Correos electr&oacute;nicos </B></TD>
       <TD>&nbsp;<B>pass</B>&nbsp;</TD></TR>
 
 
<?php      
  while($row = mysql_fetch_array($result)) {
     printf("<tr><td>&nbsp;%s</td> <td>&nbsp;%s&nbsp;</td></tr>", $row["correo"], $row["pass"]);
  }
  mysql_free_result($result);
  mysql_close($link);    
?>
 
</table>
</body>
</html>


procesar.php
Código
<?php 
  include("conect.php");
  $link=Conectarse();
  $nombre=$_GET['correo'];
  $apellidos=$_GET['pass'];    
  mysql_query("insert into prueba (correo,pass) values ('$correo','$pass')",$link);
 
  header("Location: ejemplo3.php");
?>



os recuerdo lo que pasa, al meter los datos en la base de datos me los da en blanco..... esta es la página:
http://atm.ilbello.com/prueba/ejemplo3.php
« Última modificación: 12 Octubre 2007, 13:54 por bels_mike » En línea

Roberto T.

Desconectado Desconectado

Mensajes: 1.114



Ver Perfil
Re: busco Un codigo muy sencillo
« Respuesta #8 en: 12 Octubre 2007, 18:43 »

Creo que es por que al recoger los datos por GET, recoges la pass y la asignas a $apellidos, y al intentar meter en la linea SQL la valiable $pass en la db no existe dicha variable... intenta cambiando
Código:
$apellidos=$_GET['pass'];

por

Código:
$pass=$_GET['pass'];

Ah, y para empezar esta bien el codigo, pero si pretendes usarlo en tu pagina filtra los datos antes de meterlos en la db, pues sino seras vulnerable a ataques de sql injection y tal... solo tienes que verificar que sean solo numeros y letras y no caracteres extranios.

Saludos.
En línea

bels_mike

Desconectado Desconectado

Mensajes: 260



Ver Perfil
Re: busco Un codigo muy sencillo
« Respuesta #9 en: 13 Octubre 2007, 01:25 »

vale a ver xD el fallo de codigo s bastante odbio y mira que lo repasé hee...pero bueno... de errores se aprende ahora... como evito las inyecciones??
En línea

Roberto T.

Desconectado Desconectado

Mensajes: 1.114



Ver Perfil
Re: busco Un codigo muy sencillo
« Respuesta #10 en: 13 Octubre 2007, 01:36 »

Programacion Segura con PHP
Te recomendaria ese script si vas a aceptar muchos caracteres "extranos" en las pass, como podrian ser & ^ $ @ etc...
Si vas a ser un poco mas estricto podria usarse algo como lo siguiente, que podria ser mas eficaz, aunque es algo escrito por mi, podria estar gafado xD, para aceptar solo numeros, letras y guiones, y que ademas sea de 6 a 12 caracteres seria esto:
Código:
function limpiar_pass($pass) {
if(preg_match("/^[a-z0-9-_]{6,12}$/i",$pass)) {
return $pass;
}else{ die ("El mensaje de error que tu quieras"); }
}
y luego cuando vayas a recoger la pass por GET haces esto:
Código:
$pass=limpiar_pass($_GET['pass']);
asi estarias a salvo...
aunque como ya digo para la mayoria de los casos sirve perfectamente el script del post que te he puesto al principio, y ademas con el metodo de Azielito se limpian automaticamente todas las variables, sin que no tengas que hacer mas que colocarlo al principio de tu script.

Saludos.
En línea

bels_mike

Desconectado Desconectado

Mensajes: 260



Ver Perfil
Re: busco Un codigo muy sencillo
« Respuesta #11 en: 13 Octubre 2007, 10:13 »

el problemilla de meter los datos a la base de datos ya está solucionado, ahora voy a intentar evitar las inyecciones a través de tu funcion xD a ver si se colocarlo bien jejejje

EDITO:
Bueno, lo he aplicado en el archivo de preocesar.php, y mas o menos me va bien, ahora tengo una preuntilla, como puedo agregar yo mas carácteres y como puedo porejemplo aceptar uno porque esa funcion no tengo claro como funciona

A mi el archivo procesar.php se me ha quedado asi:
Código
<?php 
  include("conect.php");
  $link=Conectarse();
  $correo=$_GET['correo'];
     function limpiar_pass($pass) {
if(preg_match("/^[a-z0-9-_]{6,12}$/i",$pass)) {
return $pass;
}else{ die ("El mensaje de error que tu quieras"); }
}
  $pass=limpiar_pass($_GET['pass']);
  mysql_query("insert into prueba (correo,pass) values ('$correo','$pass')",$link);
 
  header("Location: ejemplo3.php");
?>
« Última modificación: 13 Octubre 2007, 10:24 por bels_mike » En línea

Roberto T.

Desconectado Desconectado

Mensajes: 1.114



Ver Perfil
Re: busco Un codigo muy sencillo
« Respuesta #12 en: 13 Octubre 2007, 11:31 »

Pues simplemente anades los caracteres que sean entre los [ ], y para la longitud los de { }. Por ejemplo, una pass que pueda tener letras, numeros, guiones y la arroba:
Código
function limpiar_pass($pass) {
if(preg_match("/^[a-z0-9-_@]{6,12}$/i",$pass)) {
return $pass;
}else{ die ("El mensaje de error que tu quieras"); }
}
Despues la $/i es para que pasen tanto minusculas como mayusculas...

Puedes encontrar mas info en esta pagina de php.net sobre preg_match en el apartado en el que hablan de las expresiones regulares.

Y por cierto puedes cambiar "El mensaje de error que tu quieras" por otro cualquiera, como por ejemplo "Pass no valida" o algo asi...

Y un ultimo consejo, tienes que limpiar toda la informacion que vayas a pasar a una base de datos... de nada vale limpiar solo la pass, por que por ejemplo ahora tu web seria vulnerable pasando un codigo en el campo de correo. Te dejo un ejemplo de como utilizar la funcion para un correo:
Código
function  limpiar_correo($correo) {
if (preg_match("/^[0-9a-zA-Z\.\-\_]+\@[0-9a-zA-Z\.\-]+$/", $correo)){
return $correo;
}else{ die ("Correo no valido"); }
}

Saludos.
En línea

bels_mike

Desconectado Desconectado

Mensajes: 260



Ver Perfil
Re: busco Un codigo muy sencillo
« Respuesta #13 en: 13 Octubre 2007, 11:41 »

vale, muchas gracias, lo de ponerlo en l ode correo l otenia pensdo la verdad.... y mas o menos sabia como (por lo de la @) de todos modos cuando lo pruebe te digo que tal me va ahroa me tengo que ir jejjeje

EDITO:
Bueno pues algo hago mal:
Código
<?php 
  include("conect.php");
  $link=Conectarse(); <br>
function  limpiar_correo($correo) {
if (preg_match("/^[0-9a-zA-Z\.\-\_]+\@[0-9a-zA-Z\.\-]+$/", $correo)){
return $correo; }
else{ die ("Correo no valido"); }
     function limpiar_pass($pass) {
if(preg_match("/^[a-z0-9-_]{3,25}$/i",$pass)) {
return $pass;
}else{ die ("Error de caractéres en la contraseña"); }
}<br>
  $correo=limpiar_correo($_GET['correo']);
  $pass=limpiar_pass($_GET['pass']);
  mysql_query("insert into prueba (correo,pass) values ('$correo','$pass')",$link);
 
  header("Location: ejemplo3.php");
?>
« Última modificación: 13 Octubre 2007, 14:58 por bels_mike » En línea

Roberto T.

Desconectado Desconectado

Mensajes: 1.114



Ver Perfil
Re: busco Un codigo muy sencillo
« Respuesta #14 en: 13 Octubre 2007, 15:06 »

Claro, aunque para el correo mas que anadirle la @ a la primera funcion que te puse, yo usaria la segunda funcion de mi post anterior, por que asi verifica tambien que el correo esta bien compuesto, de lo contrario el arroba podria estar escrito en cualquier parte...

Tambien decirte que lo de die("Mensaje"); es para el ejemplo, pero en la practica no es nada practico mandarle un mensaje de error al usuario y ya esta, sino que en ese ELSE podrias declarar una variable "o algo" para retornar al usuario al formulario explicando el error.

Espero tus resultados y comentarios, pues estoy por sacar una funcion mas completita donde se pueda definir de forma mas facil que caracteres se desea aceptar etc... haber si asi acabamos con los fallos mas comunes de algunas webs (ya se sabe que para hacerla segura al 100% no siempre funciona un script "generico").

Saludos.
En línea

Páginas: [1] 2 Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC
Free counter and web stats