Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Guardar datos en BD local, usando no-ip

Estas en el tema de Guardar datos en BD local, usando no-ip en el foro de PHP en Foros del Web. Hola a todos!!!!!!!!! Estoy creando una página donde los usuarios entran y se registran, los datos van a una BD que tengo almacenada en mi ...
  #1 (permalink)  
Antiguo 01/12/2013, 16:15
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 2 meses
Puntos: 17
Pregunta Guardar datos en BD local, usando no-ip

Hola a todos!!!!!!!!!

Estoy creando una página donde los usuarios entran y se registran, los datos van a una BD que tengo almacenada en mi pc (localhost), pero para poder acceder a la página web tengo un dominio en no-ip apuntando a mi IP.

Bueno si pongo el nombre del dominio en el navegador funciona, pero cuando entro a la página de registro y relleno los datos, me dice que se no puede conectar con la BD para almacenar los datos.

Tengo 3 ficheros para esta conexión EN MODO LOCAL SI FUNCIONAN, sin embargo si pongo en el navegador:

midominio.html/formreg.html (página con el form a rellenar).

Relleno los campos y le doy al botón Guardar datos.

Y me salta el error. Que no encuentra la BD, que puede ser.
¿Porqué no funciona accediendo por el dominio?

Si hace falta código lo dejare.

Por ahora dejo el form.

Código HTML:
Ver original
  1. <form method="POST" action="registra.php">
  2.                        
  3.     <p>Nombre: <input type="text" name="nombre" size="20" maxlength="40"
  4.                          onkeypress="return soloLetras(event)"></p>
  5.                                  
  6.    <p>E-mail: <input type="text" name="email" size="20"></p>  
  7.      
  8.    <p><input type="submit" value="Guardar datos" name="guardar"></p>  
  9.                
  10. </form>

En el php llamado "registra.php" tengo esto:

Código PHP:
Ver original
  1. <?php
  2.  
  3.     $nombre = $_POST["nombre"];  
  4.     $email = $_POST["email"];  
  5.     $fecha = date("d-m-Y");  
  6.  
  7.     // Abrimos la conexion a la base de datos los valores de
  8.     // usuario, contraseña, base de datos y tabla. se almacenan
  9.     // en el fichero ""abre_conexion.php" como variables.
  10.     include("abre_conexion.php");  
  11.  
  12.     $_GRABAR_SQL = "INSERT INTO $tabla_db1 (nombre,email,fecha) VALUES ('$nombre','$email','$fecha')";  
  13.     mysql_query($_GRABAR_SQL);
  14.  
  15.     // Cerramos la conexion a la base de datos  
  16.     include("cierra_conexion.php");  
  17.  
  18.     // Confirmamos que el registro ha sido insertado con exito  
  19.  
  20.     echo "  
  21.    <p>Los datos han sido guardados con exito.</p>  
  22.  
  23.    <p><a href='javascript:history.go(-1)'>VOLVER ATRÁS</a></p>  
  24.    ";  
  25.    
  26. ?>

El fichero abre_conexion.php contiene esto:

(Puede ser el fallo el "localhost" indicado aquí???)

Código PHP:
Ver original
  1. <?php
  2.  
  3. //Parametros a configurar para la conexion de la BD.
  4.  
  5. $hotsdb = "localhost";  //valor de nuestra BD
  6. $basededatos = "proyecto";  //sera el valor de nuestra BD
  7.  
  8. $usuariodb = "registro";        //sera el valor del usuario de nuestra BD
  9. $clavedb = "registro";      //sera el valor de la clave del usuario de nuestra BD
  10.  
  11. $tabla_db1 = "registro";    //sera el valor de la tabla donde guardamos los usuarios.
  12. $tabla_db2 = "tabla_2";     //sera el valor de una tabla
  13.  
  14. //Fin de los parametros a config para la conexion de la BD
  15.  
  16. $conexion_db = mysql_connect("$hotsdb","$usuariodb","$clavedb")
  17.     or die ("Conexión fallida, el Servidor de BD     que solicita
  18.             NO EXISTE");
  19.     $db = mysql_select_db("$basededatos", $conexion_db)
  20.     or die ("La Base de Datos <b>$basededatos</b> NO EXISTE");
  21.  
  22.  
  23.  
  24. ?>

Y cerra conexión.php contiene esta línea:

Código PHP:
Ver original
  1. <?php
  2.  
  3. mysql_close($conexion_db);
  4.  
  5. ?>

Espero me puedan decir como poder guardar los datos introducidos en ese formulario en mi BD accediendo desde el navegador por medio de mi nombre de dominio.

Ya que en modo local si funciona, pero por mi dominio no. :(
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1
  #2 (permalink)  
Antiguo 01/12/2013, 16:45
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: Guardar datos en BD local, usando no-ip

Haber, aunque tengas un dominio no-ip, si el servidor http esta en el mismo equipo que el servidor mysql, accediendo con el server = localhost deberia de funcionar.

Otra cosa es que lo tengas en otro equipo, caso en el que tendrias que modificar el archivo hosts "Si usas windows" para redireccionar el trafico a la ip y puerto de mysql.
No obstante si a lo que te refieres es que no puedes acceder a tu web con la url de tu dominio y si con localhost es tambien ese archivo el que debes de modificar para que funcione correctamente.
Otra forma de comprobarlo es en el archivo de configuracion de mysql comenta la linea que dice bind-adress=127.0.0.1 que impide cualquier conexion que no provenga de localhost. Cuando lo hagas reinicia el demonio de mysql para que los cambios tengan efecto y luego vuelve a probar.

Si usas Windows es parecido, busca el archivo de configuracion y reinicia el servicio mysql de windows.

Agregale tambien el host a el archivo de configuracion de mysql.

Luego prueba con la variable $hotsdb = "tudominio.com:tuPuertoDeMySQL".


Prueba a poner en el die de la conexion a mysql que te retorne el codigo de error, asi sera mas facil encontrarle una solucion.

Última edición por Dalam; 01/12/2013 a las 16:50
  #3 (permalink)  
Antiguo 02/12/2013, 07:52
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 2 meses
Puntos: 17
Respuesta: Guardar datos en BD local, usando no-ip

Cita:
Iniciado por Dalam Ver Mensaje
Haber, aunque tengas un dominio no-ip, si el servidor http esta en el mismo equipo que el servidor mysql, accediendo con el server = localhost deberia de funcionar.

Otra cosa es que lo tengas en otro equipo, caso en el que tendrias que modificar el archivo hosts "Si usas windows" para redireccionar el trafico a la ip y puerto de mysql.
No obstante si a lo que te refieres es que no puedes acceder a tu web con la url de tu dominio y si con localhost es tambien ese archivo el que debes de modificar para que funcione correctamente.
Otra forma de comprobarlo es en el archivo de configuracion de mysql comenta la linea que dice bind-adress=127.0.0.1 que impide cualquier conexion que no provenga de localhost. Cuando lo hagas reinicia el demonio de mysql para que los cambios tengan efecto y luego vuelve a probar.

Si usas Windows es parecido, busca el archivo de configuracion y reinicia el servicio mysql de windows.

Agregale tambien el host a el archivo de configuracion de mysql.

Luego prueba con la variable $hotsdb = "tudominio.com:tuPuertoDeMySQL".


Prueba a poner en el die de la conexion a mysql que te retorne el codigo de error, asi sera mas facil encontrarle una solucion.
Gracias por tu respuesta, bueno estoy usando Ubuntu12.04.

Instale todos los servicios con AppServ (Apache2, PHP y MySQL).

He probado lo que dices de comentar la línea:

Cita:
bind-adress=127.0.0.1
Y reiniciar pero sigue el fallo, una cosa, cuando doy al botón guardar debe llamar la página llamada registra.php y mostrar lo que esta tiene escrito, pero no lo hace.

Luego si le doy al botón Ver datos llama al fichero "paginacion_4.php, este si me muestra la página pero sin datos, ya que no se guardan en la BD que se llama proyecto y tiene una tabla llamada registro..

Que otra solución puede haber, o que tengo mal en este código de PHP, porque en modo local si me funciona pero si accedo por mi dominio/formreg.html NO.

Saludos
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1
  #4 (permalink)  
Antiguo 02/12/2013, 08:00
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 2 meses
Puntos: 17
Respuesta: Guardar datos en BD local, usando no-ip

Una pregunta he visto, que mi base de datos llamada "proyecto" tenía TIPO InnoDB
y la tabla que tenía dentro llamada registros tiene tipo MyISAM ya que la tabla la creo con esto:

Código SQL:
Ver original
  1. CREATE TABLE  `tabla_1` (
  2.  `id` INT( 6 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  3.  `nombre` VARCHAR( 25 ) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL ,
  4.  `email` VARCHAR( 50 ) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL ,
  5.  `fecha` VARCHAR( 25 ) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL
  6. ) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_spanish_ci COMMENT = 'tabla de bd uterra';
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1
  #5 (permalink)  
Antiguo 02/12/2013, 08:00
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Guardar datos en BD local, usando no-ip

Voy a hacer una suposición. En local trabajas con Windows no? Al ser tu server Linux has revisado nombre de campos y tablas? acuérdate de que en Linux si es sensible a mayúsculas y minúsculas. Quien sabe, de pronto ese es tu error

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #6 (permalink)  
Antiguo 02/12/2013, 08:05
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 2 meses
Puntos: 17
Respuesta: Guardar datos en BD local, usando no-ip

Cita:
Iniciado por jonni09lo Ver Mensaje
Voy a hacer una suposición. En local trabajas con Windows no? Al ser tu server Linux has revisado nombre de campos y tablas? acuérdate de que en Linux si es sensible a mayúsculas y minúsculas. Quien sabe, de pronto ese es tu error

Saludos
No en Local trabajo con Ubuntu12.04

Todo lo hago en Ubuntu.

En localhost/proyecto/formulario.html relleno el form y envía los datos correctamente y hasta luego se muestran, pero si accedo por:

midominio./formulario.html relleno el form y no se envían los datos a mi BD "proyecto" a la tabla "registro".

Me pueden dar alguna sintaxis para crear correctamente la BD y la tabla registro, que tan solo almacene

id, nombre, email, fecha

(el campo id es autoincremental y no se rellena en el form)
(el campo nombre si se rellena y se envía el dato a la BD)
(el campo email si se rellena y se envía el dato a la BD)
(el campo fecha NO se rellena pero el dato aparece en la BD)

A lo mejor el fallo es eso. que mi BD es tip MyISAM y la tabla registro es tipo InnoDB?
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1
  #7 (permalink)  
Antiguo 02/12/2013, 08:12
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Guardar datos en BD local, usando no-ip

Considero de que no tiene nada que ver ya que una de las mayores diferencias entre MyISAM e INNODB es la referencia de datos (INNODB es muy estricta con las fk a diferencia de MyISAM) pero del resto son muy similares.

Dos preguntas:

¿Te has cerciorado de que realmente exista la base de datos? (me parece muy extraño de que haga la conexión pero no la selección de base de datos)
¿Has verificado que el usuario tenga privilegios sobre la base de datos que quieres acceder?

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #8 (permalink)  
Antiguo 02/12/2013, 08:18
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 2 meses
Puntos: 17
Respuesta: Guardar datos en BD local, usando no-ip

Ya lo he SOLUCIONADO.

He borrado de nuevo la BD "proyecto" y la tabla "registro".

Y las he creado con Tipo InnoDB ambas.

Luego volví a crear un usuario llamado "registro" esta vez CON TODOS LOS PRIVILEGIOS.

Reinicie apache2 y mysql y cargue de nuevo la página web, rellene el form y en concreto ya me muestra los datos y además los almacena en mi BD "proyecto".

Muchas gracias por las respuestas. Una cosa si dejo comentada la línea

Cita:
bind-adress=127.0.0.1
ocurre algo ??.
Gracias a todos por su ayuda. Luego crearé otra cuestión que me surge.

@jooni09lo --> Antes le había dado al usuario "registro" solo algunos permisos para la BD proyecto y la tabla "registro".
Creo que ese era el fallo, pero era raro porque en modo localhost si me funcionaba guardar los datos. En fin ya esta solucionado. Gracias
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1
  #9 (permalink)  
Antiguo 02/12/2013, 08:21
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Guardar datos en BD local, usando no-ip

Pues si tu host es localhost no comentes esa linea ya que con ella sin comentar te permitirá que no entren conexiones ajenas desde el localhost (una buena medida de seguridad)

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #10 (permalink)  
Antiguo 02/12/2013, 08:36
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 2 meses
Puntos: 17
Respuesta: Guardar datos en BD local, usando no-ip

Cita:
Iniciado por jonni09lo Ver Mensaje
Pues si tu host es localhost no comentes esa linea ya que con ella sin comentar te permitirá que no entren conexiones ajenas desde el localhost (una buena medida de seguridad)

Saludos
Ok por ahora la descomente de nuevo y me deja seguir accediendo por mi dominio./formreg.html Y rellenar el form y guardar los datos.

Gracias tema resuelto!
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1
  #11 (permalink)  
Antiguo 02/12/2013, 11:07
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: Guardar datos en BD local, usando no-ip

Esa linea que te dije lo que hace es limitar las conexiones que permite MySQL.
Si la tienes comentada te permite acceder a tu server MySQL mediante el nombre de dominio.
Yo te lo dije solo para fines de prueba, como te a dicho jonni09lo es un buen metodo de seguridad, y si tienes el servidor HTTP y el MySQL en el mismo equipo es tonteria que lo dejaras sin comentar.
Aparte las conexiones son mas rapidas si usas el sistema en localhost en vez de usar la salida por TCP o UDP, porque son sockets internos los que utiliza con el localhost.
Es tu eleccion hacer lo que quieras con esa linea.
Esto ultimo no se yo hasta que nivel te afecta al usar linux, pero por lo menos en windows es mucho mas rapido y seguro.
Busca informacion al respecto o crea un post en el foro de MySQL para ver si alguien que tenga mas conocimientos que yo en MySQL te responda.
Yo Todo esto lo se por fallos que me dieron equipos, pero realmente no se hasta que punto seria aconsejable que mires ayuda por otro lado, respecto a la seguridad que te diera eso.
Sobre todo si tu server va a ser de produccion.

Etiquetas: conexion-a-servidor, registrarse
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




La zona horaria es GMT -6. Ahora son las 13:32.