Foros del Web » Programando para Internet » PHP »

Ayuda con PHP y MySQL =(

Estas en el tema de Ayuda con PHP y MySQL =( en el foro de PHP en Foros del Web. Hola Buenos Dias me Presento Soy RicRey, Bueno tengo una pagina web y tengo un sistema de login, pero me gustaria saber como puedo hacer ...
  #1 (permalink)  
Antiguo 16/07/2009, 15:57
Avatar de RicRey  
Fecha de Ingreso: julio-2009
Mensajes: 7
Antigüedad: 14 años, 9 meses
Puntos: 0
Ayuda con PHP y MySQL =(

Hola Buenos Dias me Presento Soy RicRey, Bueno tengo una pagina web y tengo un sistema de login, pero me gustaria saber como puedo hacer que se guarde la direccion ip de los usuarios que se registran y estas ip vayan acumulandose si el usuario a cambiado de lugar, pero que estas ip's se guarden en la base de datos... que debo insertar por favor ayudenme, se los agradecere mucho.

Última edición por RicRey; 17/07/2009 a las 12:49 Razón: por una mala broma :(
  #2 (permalink)  
Antiguo 16/07/2009, 16:00
Avatar de dopon  
Fecha de Ingreso: julio-2005
Ubicación: Cucuta / Colombia
Mensajes: 493
Antigüedad: 18 años, 9 meses
Puntos: 1
Respuesta: Para Genios del PHP y MySQL Solamente :D

Creo quee s muy dificil ponerse ahacer algo personalizado, pues ni idea si manejas tu pagina con algun CMS que permita instalarle algun addon o plugin que lo haga, Lee sobre la variable $_SERVER alli tendras la respuesta
  #3 (permalink)  
Antiguo 16/07/2009, 16:05
 
Fecha de Ingreso: enero-2008
Mensajes: 381
Antigüedad: 16 años, 3 meses
Puntos: 19
Respuesta: Para Genios del PHP y MySQL Solamente :D

Tu duda es sobre el codigo necesario en php para hacer eso o sobre el diseño en la base de datos? o de los dos?
  #4 (permalink)  
Antiguo 16/07/2009, 16:07
Avatar de cesarpi80  
Fecha de Ingreso: mayo-2009
Mensajes: 159
Antigüedad: 14 años, 10 meses
Puntos: 10
Respuesta: Para Genios del PHP y MySQL Solamente :D

Pues hombre, create una tabla donde guardes la variable $_SERVER asociada al login. :)

PD: No soy genio.
__________________
Tratando de aprender lo mas que se pueda !!!
  #5 (permalink)  
Antiguo 16/07/2009, 17:18
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Para Genios del PHP y MySQL Solamente :D

¿Cual es tu duda EN ESPECIFICO?
Porque, para genios, no le veo nada.

Cuando el usuario se loguea obtienes el IP y buscas en la base de datos si ya ha sido guardado con anterioridad. Si no esta guardado, lo guardas.
  #6 (permalink)  
Antiguo 16/07/2009, 17:22
Avatar de wpersei  
Fecha de Ingreso: septiembre-2006
Ubicación: Bogota
Mensajes: 189
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: Para Genios del PHP y MySQL Solamente :D

creo que no se necesita ser un genio para implementar eso que estas mencionando, ahora como todos han dicho exactamente que tienes y que quieres porque funciones para capturar la ip de donde se conectan hay, y almacenarla seria lo mismo que registrar en la bd cualquier registro en el momento en que se el usuario inicia sesión correctamente

saludos
__________________
www.ogallardo.com - Mi blog
  #7 (permalink)  
Antiguo 17/07/2009, 12:13
Avatar de RicRey  
Fecha de Ingreso: julio-2009
Mensajes: 7
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Para Genios del PHP y MySQL Solamente :D

jejeje... lo de Genio es broma.

Miren en si soy novato en PHP y MySql, pero eh desarrollado my web, ahora desarrolle el sistema de login, carrito de compra con el login etc, etc.. pero me gustaria agregarle a la tabla de "users" ip y que se vea... asi como cuando ingreso me bota cuando ingresaron con el DATE, ummm espero me haya echo entender, se que no ha de ser muy complicado solo que soy novato en esto :(
  #8 (permalink)  
Antiguo 17/07/2009, 12:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Para Genios del PHP y MySQL Solamente :D

pues yo tampoco soy un genio, y la verdad se me hacen muy molestos ese tipos de títulos...



mmm....

en realidad es todo muy sencillo, la IP tiene (xxx.xxx.xxx.xxx) 15 caracteres + 1 carácter de separador adicional que vamos a emplear mas adelante... 16 caracteres en total, ahora cuantas veces cabe esto en un VARCHAR ¿?

bien, supongo que es claro.... ahora, solo guardamos las IP en forma "separada" y las recuperamos usando explode(), caben al rededor de 10 IPs o mas...

luego comparamos con in_array() si la IP ya existe en la lista, si no existe hacemos un array_unshift() agregando el nuevo IP al comienzo de la lista...

para almacenar esto, simplemente hacemos uso de join() con el separador elegido y bingo!!


después de esto, volvemos a empezar, etc, etc...


NOTA que no me gusto para nada tu "broma", espero que al menos saques una idea de esto.... genio
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 17/07/2009 a las 13:22 Razón: yo tambien soy muuy bromista!!
  #9 (permalink)  
Antiguo 17/07/2009, 12:51
Avatar de RicRey  
Fecha de Ingreso: julio-2009
Mensajes: 7
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Ayuda con PHP y MySQL =(

disculpa, ya edite el comentario, ummm tratare de aplicarlo, pero no entendi bien, me podrias aclarar un poco mejor disculpa q te moleste...
  #10 (permalink)  
Antiguo 17/07/2009, 13:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda con PHP y MySQL =(

si, mira...

en realidad, no se necesita ser un "genio" para hacer esto

Código PHP:
$row mysql_fetch_assoc($result);
$ips $row['ultimos_ip']; //  VARCHAR(160)

// tenemos separados por un espacio los ultimos IPs
// en alguna columna de nuestra tabla de usuarios
$set explode(' '$ips);

$ip $_SERVER['REMOTE_ADDR']; // el IP
if ( ! in_array($ip$set))
{
  
// si el IP no esta en la lista
  // lo agregamos a la cola
  
array_unshift($set$ip);

  
// pegamos de nuevo la lista
  
$ips trim(join(' '$set));

  
$sql "UPDATE tb_usuarios SET ultimos_ip = '$ips'";


como puedes ver, la idea es muy sencilla...

creo que lo demás es fácil de intuir, suerte!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 17/07/2009, 14:15
Avatar de RicRey  
Fecha de Ingreso: julio-2009
Mensajes: 7
Antigüedad: 14 años, 9 meses
Puntos: 0
creo que ya estoy entendiendo! lo voy a intentar aplicar! gracias por todo

Disculpen el Doble Post... mira, me sale este error
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/sistegra/public_html/myaccount.php on line 7

Última edición por GatorV; 18/07/2009 a las 15:46
  #12 (permalink)  
Antiguo 18/07/2009, 08:21
 
Fecha de Ingreso: enero-2008
Mensajes: 381
Antigüedad: 16 años, 3 meses
Puntos: 19
Respuesta: Ayuda con PHP y MySQL =(

Antes deberias haber creado en la base de datos la tabla y en php conectarte a la base de datos y hacer un query SELECT a la tabla para obtener la columna ultimos_ip

Si no sabes hacer todo esto dimelo y te lo explico.
  #13 (permalink)  
Antiguo 18/07/2009, 11:29
Avatar de RicRey  
Fecha de Ingreso: julio-2009
Mensajes: 7
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Ayuda con PHP y MySQL =(

si, seria bueno que me ayudes, gracias de antemano
  #14 (permalink)  
Antiguo 18/07/2009, 15:24
 
Fecha de Ingreso: enero-2008
Mensajes: 381
Antigüedad: 16 años, 3 meses
Puntos: 19
Respuesta: Ayuda con PHP y MySQL =(

La verdad es que no tengo mucha información de como tienes montado el sitio y el sistema de login. Supongo que si tienes una base de datos con modelo relacional sabras modificar esto para que este relacionado con mas tablas.

O si tienes una tabla con cada usuario tambien puedes añadirlo hay.

En la base de datos añades un campo llamado IPs si tienes una tabla ya con los usuarios. Si no pues creas una tabla con el nombre de usuario y las ips.

El campo creo que seria mejor VARCHAR(240) (240/16=15 ips por usuarios como maximo), si no quieres tener limite seria mejor idea crear otra tabla donde cada en cada registro se almacene una unica ip, y creando un nuevo registro por cada IP.

El codigo en php (creado a partir del codigo de pateketrueke)

Código PHP:
$link mysql_connect('direccion base datos''nombre usurio''contraseña usuario');
if (!
$link) {
    die(
'Error al conectar: ' mysql_error());
}

$check mysql_select_db('nombre de la base de datos');

if (!
$check) die('Error al elegir la base de datos');

$query "SELECT IPs FROM <nombredelatabla> WHERE user='$usuario';"
// 1. El nombre de la tabla va sin comillar al ser una consulta SQL.
// 2. La variable $usuario la debes haber inicializado antes con el nombre de usuario o id...
$res mysql_query($query);

if (!
$res) die('La consulta ha fallado: ' mysql_error());

$row mysql_fetch_assoc($res);
$ips $row['IPs']; 

$ip $_SERVER['REMOTE_ADDR']; // el IP

if (!$ips) {
  
$query "INSERT INTO <tu tabla>(IPs) VALUES ('$ip')";
  
$res mysql_query($query);
  if (!
$res) die('Error al inserta la IP por primera vez: ' mysql_error());
}

else {
  
// tenemos separados por un espacio los ultimos IPs
  // en alguna columna de nuestra tabla de usuarios
  
$set explode(' '$ips);
  
  if (
count($set) >= 15) {
    
// Esto comprueba si se ha excedido el limite.
    // Coloca aqui el codigo que se ejecute cuando pase esto
    // si quieres ignorarlo (simplemente no añadira la IP), quita este bloque y cambie el else por este mismo if en negativo: <<if ([B][I][U][SIZE="5"]![/SIZE][/U][/I][/B]count($set) >= 15) >>, o simplemente dejarlo como esta, declarando una variable inservible para evitar un posible error
    
var $sinuso '';
  }
  else {
    if ( ! 
in_array($ip$set))
    {
      
// si el IP no esta en la lista
      // lo agregamos a la cola
      
array_unshift($set$ip);

      
// pegamos de nuevo la lista
      
$ips trim(join(' '$set));
  
      
$query "UPDATE tb_usuarios SET ultimos_ip = '$ips'";
      
$res mysql_query($query);
      if (!
$res) die('Error al añadir la direccion IP al registro: ' mysql_error());
    }  
  }
}
mysql_free_result($res);
mysql_close($link); 
No lo he probado, es posible que tenga fallos, ademas estoy aprediendo PHP, no soy experto ni genio

Estoy es muy general, si lo necesitas mas "especifico" dime los detalles de tu sistema de login y la organizacion de usuarios en la base de datos y lo puedo "adaptar"

Saludos!
  #15 (permalink)  
Antiguo 18/07/2009, 15:43
Avatar de blekia  
Fecha de Ingreso: julio-2009
Mensajes: 204
Antigüedad: 14 años, 9 meses
Puntos: 6
Respuesta: Ayuda con PHP y MySQL =(

Hola RicRey,

Obtener la IP del usuario es fácil:

Código PHP:
$ip_usuario = (getenv('HTTP_X_FORWARDED_FOR') && validIP(getenv('HTTP_X_FORWARD_FOR'))) ? getenv('HTTP_X_FORWARD_FOR') : getenv('REMOTE_ADDR'); 
Por otro lado necesitarás dos tablas, una con los usuarios y otra con las IPs.

Para crear la tabla de direcciones IP necesitarás los siguientes campos:

id (un identificador único)
ip (varchar 15)
id_usuario (mismo valor que el ID de cada usuario)
fecha (la fecha de acceso)

una vez tengas la tabla creada simplemente tienes que añadir una entrada cada vez que un usuario acceda al sistema.

De esta manera no necesitas tener un campo de IPs dentro de la tabla de usuarios, sino que simplemente tendrás una tabla aparte con los accesos de cada usuario... algo así como un LOG.

luego no tienes mas que hacer un query para ver los accesos de cada usuario:

mysql_query("SELECT * FROM <tablaAccesos> WHERE id_usuario='<id_usuario>'");

Tambien lo puedes ordenar por fecha de acceso si agregas "ORDER BY fecha DESC", lo que te mostrará primero el último acceso del usuario.

Salu2!




Cita:
Iniciado por RicRey Ver Mensaje
Hola Buenos Dias me Presento Soy RicRey, Bueno tengo una pagina web y tengo un sistema de login, pero me gustaria saber como puedo hacer que se guarde la direccion ip de los usuarios que se registran y estas ip vayan acumulandose si el usuario a cambiado de lugar, pero que estas ip's se guarden en la base de datos... que debo insertar por favor ayudenme, se los agradecere mucho.
  #16 (permalink)  
Antiguo 18/07/2009, 22:58
Avatar de RicRey  
Fecha de Ingreso: julio-2009
Mensajes: 7
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Ayuda con PHP y MySQL =(

la tabla de usuarios para crear el login que use lo baje de una pagina web de videostutoriales... bueno el codigo de la tabla es este...

Código PHP:
CREATE TABLE `users` (
`
idint(20NOT NULL auto_increment,
`
full_namevarchar(200collate latin1_general_ci NOT NULL default '',
`
user_namevarchar(200collate latin1_general_ci NOT NULL default '',
`
user_pwdvarchar(200collate latin1_general_ci NOT NULL default '',
`
user_emailvarchar(200collate latin1_general_ci NOT NULL default '',
`
activation_codeint(10NOT NULL default '0',
`
joineddate NOT NULL default '0000-00-00',
`
countryvarchar(100collate latin1_general_ci NOT NULL default '',
`
user_activatedint(1NOT NULL default '0',
PRIMARY KEY (`id`)

Si me puedes ayudar para adaptar lo de las ip's a la tabla de users te lo agradeceria de todo corazon men...
  #17 (permalink)  
Antiguo 19/07/2009, 02:54
Avatar de blekia  
Fecha de Ingreso: julio-2009
Mensajes: 204
Antigüedad: 14 años, 9 meses
Puntos: 6
Respuesta: Ayuda con PHP y MySQL =(

Ahora que ya tienes la tabla de usuarios solo te queda la de IPs:

Código PHP:
CREATE TABLE `direccionesip` (
`
ipvarchar(15NOT NULL,
`
id_usuarioint(20NOT NULL,
`
fechavarchar(10NOT NULL
* no te hace falta ningun PRIMARY KEY, de hecho si vas a tener muchos accesos mejor que no lo pongas

La fecha la pongo como varchar 10 para que la introduzcas con time(), es decir:

Código:
mysql_query("INSERT INTO direccionesip VALUES ('$ip_usuario','$id_usuario','".time()."')");
De esta manera puede luego hacer un SELECT por id_usuario y ordenar por fecha.

Salu2

Cita:
Iniciado por RicRey Ver Mensaje
la tabla de usuarios para crear el login que use lo baje de una pagina web de videostutoriales... bueno el codigo de la tabla es este...

Código PHP:
CREATE TABLE `users` (
`
idint(20NOT NULL auto_increment,
`
full_namevarchar(200collate latin1_general_ci NOT NULL default '',
`
user_namevarchar(200collate latin1_general_ci NOT NULL default '',
`
user_pwdvarchar(200collate latin1_general_ci NOT NULL default '',
`
user_emailvarchar(200collate latin1_general_ci NOT NULL default '',
`
activation_codeint(10NOT NULL default '0',
`
joineddate NOT NULL default '0000-00-00',
`
countryvarchar(100collate latin1_general_ci NOT NULL default '',
`
user_activatedint(1NOT NULL default '0',
PRIMARY KEY (`id`)

Si me puedes ayudar para adaptar lo de las ip's a la tabla de users te lo agradeceria de todo corazon men...
  #18 (permalink)  
Antiguo 19/07/2009, 03:11
 
Fecha de Ingreso: enero-2008
Mensajes: 381
Antigüedad: 16 años, 3 meses
Puntos: 19
Respuesta: Ayuda con PHP y MySQL =(

Si, tienes razon. Es mejor en otra tabla, asi se mantiene la integridad estructural y no hay problemas de espacio

Saludos!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 05:31.