Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problemas en mi login con PDO

Estas en el tema de Problemas en mi login con PDO en el foro de PHP en Foros del Web. Bueno, acabo de empezar con PDO para darle más seguridad a mi web y me he encontrado con el siguiente error: Cita: Fatal error: Call ...
  #1 (permalink)  
Antiguo 20/06/2013, 09:37
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Problemas en mi login con PDO

Bueno, acabo de empezar con PDO para darle más seguridad a mi web y me he encontrado con el siguiente error:

Cita:
Fatal error: Call to a member function execute() on a non-object in C:\xampp\htdocs\Lemite\login2.php on line 16
La línea 16 es la siguiente:

Código PHP:
Ver original
  1. $sentencia->execute(array($usuario_post, $contrasena_post));

Este es el código de mi login:
Código PHP:
Ver original
  1. <?php
  2. $dsn = 'mysql:dbname=reg_users;host=localhost';
  3. $usuario = 'root';
  4. $contraseña = '';
  5.  
  6. try {
  7.    $gbd = new PDO($dsn, $usuario, $contraseña);
  8. } catch (PDOException $e) {
  9.      exit('Se ha producido un error imposible continuar x0215484.');
  10. }
  11.  
  12. //Una vez conectados, seguimos...
  13.  
  14.     include_once("analyticstracking.php"); // Una cosa de Google Analytics...
  15.     session_start();
  16.     if($_REQUEST['user'] == NULL){
  17.         header('Location: loginerror2.php');
  18.     }else if($_REQUEST['pw'] == NULL){
  19.         header('Location: loginerror2.php');
  20.     }else{
  21.     if(isset($_REQUEST['login'])){
  22.         $usuario_post = $_REQUEST['user']; //Cojo el usuario
  23.         $contrasena_post = md5($_REQUEST['pw']); //La contraseña
  24.        
  25.         $sentencia = "SELECT * FROM registros WHERE user= ? AND pw= ?";
  26.         $sentencia->execute(array($usuario_post, $contrasena_post)); //Aquí está el fallo
  27.         $rows = $sentencia->fetchAll();
  28.         $qtda = count($rows);
  29.        
  30.         if($qtda == 0){ //Si no hay ningún usuario con el mismo usuario y contraseña...
  31.             header('Location: loginerror1.php');
  32.         }else{
  33.             $_SESSION['usuario'] = $usuario_post;
  34.             $sentencia2 = "SELECT user FROM registros WHERE user= ?";
  35.             $sentencia2->execute(array($_SESSION['usuario']));
  36.             $dep = count($sentencia2);
  37.             if($_POST['record'] == true){ //Guardo en una Cookie las datos
  38.                 setcookie("username", $dep['user'], time() + (86400 *  365));
  39.             }else{}
  40.             header ("Location: index.php"); //Vuelvo al inicio
  41.         }
  42.     }
  43.     }
  44. ?>

Gracias por ayudarme, como ya dije antes, soy nuevo en esto y quizá tengo más fallos que ese en el código...
  #2 (permalink)  
Antiguo 20/06/2013, 10:10
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: Problemas en mi login con PDO

El problema es porque estas ejecutando el execute sobre un string y no sobre la variable que tiene la conexión a la bd

Prueba

Código PHP:
Ver original
  1. $sentencia = $gbd->prepare("SELECT * FROM registros WHERE user= ? AND pw= ?");
  2. $sentencia->execute(array($usuario_post, $contrasena_post));

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #3 (permalink)  
Antiguo 20/06/2013, 10:10
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Problemas en mi login con PDO

$sentencia lo declaraste como un string, no como un objeto statement de PDO, consulte la documentación

http://www.php.net/manual/es/pdo.prepare.php
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #4 (permalink)  
Antiguo 20/06/2013, 12:14
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Respuesta: Problemas en mi login con PDO

Muchas gracias a los dos, ya se me ha solucionado, pero otra cosa, si volvéis a leer mi código exactamente las lineas 27 y 28, me gustaría que me solucionaran un posible error que tengo ahí, ¿qué es lo que tengo mal?

Se me activa el if de la linea de abajo:

Código PHP:
Ver original
  1. if($qtda == 0){ //Si no hay ningún usuario con el mismo usuario y contraseña...
  2. header('Location: loginerror1.php');
  3. }else{....

Última edición por iEnrique; 20/06/2013 a las 13:01
  #5 (permalink)  
Antiguo 20/06/2013, 13:17
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas en mi login con PDO

haber pruebalo y dime si fallo algo

Código PHP:
Ver original
  1. <?php
  2. $dsn = 'mysql:dbname=reg_users;host=localhost';
  3. $usuario = 'root';
  4. $contraseña = '';
  5.  
  6. try {
  7.    $gbd = new PDO($dsn, $usuario, $contraseña);
  8. } catch (PDOException $e) {
  9.      exit('Se ha producido un error imposible continuar x0215484.');
  10. }
  11.  
  12. //Una vez conectados, seguimos...
  13.  
  14.  
  15. include_once("analyticstracking.php"); // Una cosa de Google Analytics...
  16.  
  17.  
  18. if(empty($_REQUEST['user']) || empty($_REQUEST['pw']))
  19. {
  20.     header('Location: loginerror2.php');
  21. }
  22. else
  23. {
  24.  
  25.     if(isset($_REQUEST['login']))
  26.     {
  27.  
  28.         $usuario_post = htmlentities($_REQUEST['user']); //Cojo el usuario
  29.         $contrasena_post = md5($_REQUEST['pw']); //La contraseña
  30.        
  31.         $sentencia = $gbd->prepare("SELECT * FROM registros WHERE user= ? AND pw= ?");
  32.  
  33.         $sentencia->bindParam(1, $usuario_post);
  34.         $sentencia->bindParam(2, $contrasena_post);
  35.         $sentencia->execute();
  36.  
  37.         if( ! $rows = $sentencia->fetch(PDO::FETCH_ASSOC))
  38.         { //Si no hay ningún usuario con el mismo usuario y contraseña...
  39.  
  40.             header('Location: loginerror1.php');
  41.         }
  42.         else
  43.         {
  44.             $_SESSION['usuario'] = $rows['user'];
  45.  
  46.             if($_POST['record'] == true)
  47.             { //Guardo en una Cookie las datos
  48.                 setcookie("username", $rows['user'], time() + (86400 *  365));
  49.             }
  50.             else
  51.             {}
  52.  
  53.             header ("Location: index.php"); //Vuelvo al inicio
  54.         }
  55.     }
  56. }
  57.  
  58. ?>

Última edición por webankenovi; 20/06/2013 a las 13:23
  #6 (permalink)  
Antiguo 20/06/2013, 13:33
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Respuesta: Problemas en mi login con PDO

¡Ya funciona! ¿Qué pasaba? ¿Qué cambios has hecho? :O
  #7 (permalink)  
Antiguo 20/06/2013, 13:46
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas en mi login con PDO

No se jajaja estaba tocandolo te dejo uno mas parecido al original tuyo funciona seguro lo he probado y va

Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4.     $dsn = 'mysql:dbname=reg_users;host=localhost';
  5.     $usuario = 'root';
  6.     $contraseña = '';
  7.      
  8.     try {
  9.        $gbd = new PDO($dsn, $usuario, $contraseña);
  10.     } catch (PDOException $e) {
  11.          exit('Se ha producido un error imposible continuar x0215484.');
  12.     }
  13.      
  14.      
  15.     //Una vez conectados, seguimos...
  16.  
  17. include_once("analyticstracking.php"); // Una cosa de Google Analytics...
  18.  
  19.         session_start();
  20.  
  21.         if($_REQUEST['user'] == NULL){
  22.  
  23.             header('Location: loginerror2.php');
  24.  
  25.         }else if($_REQUEST['pw'] == NULL){
  26.  
  27.             header('Location: loginerror2.php');
  28.  
  29.         }else{
  30.  
  31.         if(isset($_REQUEST['login'])){
  32.  
  33.             $usuario_post = $_REQUEST['user']; //Cojo el usuario
  34.             $contrasena_post = md5($_REQUEST['pw']); //La contraseña
  35.            
  36.             $sentencia = $gbd->prepare("SELECT * FROM registros WHERE user= ? AND pw= ?");
  37.  
  38.             $sentencia->bindParam(1, $usuario_post);
  39.             $sentencia->bindParam(2, $contrasena_post);
  40.  
  41.             $sentencia->execute();
  42.  
  43.             $rows = $sentencia->fetchAll();
  44.  
  45.             $qtda = count($rows);
  46.            
  47.             if($qtda==0){
  48.             //Si no hay ningún usuario con el mismo usuario y contraseña...
  49.                 header('Location: loginerror1.php');
  50.  
  51.             }else{
  52.  
  53.  
  54.                 $_SESSION['usuario'] = $usuario_post;
  55.                 $sentencia2 = $gbd->prepare("SELECT user FROM registros WHERE user= ?");
  56.                 $sentencia2->bindParam(1, $_SESSION['usuario']);
  57.                 $sentencia2->execute();
  58.  
  59.                 $dep = $sentencia2->fetchAll();
  60.  
  61.                 if($_POST['record'] == true){ //Guardo en una Cookie las datos
  62.                     setcookie("username", $dep[0]['user'], time() + (86400 *  365));
  63.                 }else{}
  64.                 header ("Location: index.php"); //Vuelvo al inicio
  65.             }
  66.         }
  67.         }
  68.     ?>


de todas maneras la 2 consulta te sobra para que quieres seleccionar el user donde sea igual al user es decir ya sabes el user por que seleccionarlo?
  #8 (permalink)  
Antiguo 20/06/2013, 13:49
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Respuesta: Problemas en mi login con PDO

Cita:
Iniciado por webankenovi Ver Mensaje
No se jajaja estaba tocandolo te dejo uno mas parecido al original tuyo funciona seguro lo he probado y va

Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4.     $dsn = 'mysql:dbname=reg_users;host=localhost';
  5.     $usuario = 'root';
  6.     $contraseña = '';
  7.      
  8.     try {
  9.        $gbd = new PDO($dsn, $usuario, $contraseña);
  10.     } catch (PDOException $e) {
  11.          exit('Se ha producido un error imposible continuar x0215484.');
  12.     }
  13.      
  14.      
  15.     //Una vez conectados, seguimos...
  16.  
  17. include_once("analyticstracking.php"); // Una cosa de Google Analytics...
  18.  
  19.         session_start();
  20.  
  21.         if($_REQUEST['user'] == NULL){
  22.  
  23.             header('Location: loginerror2.php');
  24.  
  25.         }else if($_REQUEST['pw'] == NULL){
  26.  
  27.             header('Location: loginerror2.php');
  28.  
  29.         }else{
  30.  
  31.         if(isset($_REQUEST['login'])){
  32.  
  33.             $usuario_post = $_REQUEST['user']; //Cojo el usuario
  34.             $contrasena_post = md5($_REQUEST['pw']); //La contraseña
  35.            
  36.             $sentencia = $gbd->prepare("SELECT * FROM registros WHERE user= ? AND pw= ?");
  37.  
  38.             $sentencia->bindParam(1, $usuario_post);
  39.             $sentencia->bindParam(2, $contrasena_post);
  40.  
  41.             $sentencia->execute();
  42.  
  43.             $rows = $sentencia->fetchAll();
  44.  
  45.             $qtda = count($rows);
  46.            
  47.             if($qtda==0){
  48.             //Si no hay ningún usuario con el mismo usuario y contraseña...
  49.                 header('Location: loginerror1.php');
  50.  
  51.             }else{
  52.  
  53.  
  54.                 $_SESSION['usuario'] = $usuario_post;
  55.                 $sentencia2 = $gbd->prepare("SELECT user FROM registros WHERE user= ?");
  56.                 $sentencia2->bindParam(1, $_SESSION['usuario']);
  57.                 $sentencia2->execute();
  58.  
  59.                 $dep = $sentencia2->fetchAll();
  60.  
  61.                 if($_POST['record'] == true){ //Guardo en una Cookie las datos
  62.                     setcookie("username", $dep[0]['user'], time() + (86400 *  365));
  63.                 }else{}
  64.                 header ("Location: index.php"); //Vuelvo al inicio
  65.             }
  66.         }
  67.         }
  68.     ?>


de todas maneras la 2 consulta te sobra para que quieres seleccionar el user donde sea igual al user es decir ya sabes el user por que seleccionarlo?
Voy pasar otra página a PDO y te cuento si me funciona es que he aprendido jajaja sino...
  #9 (permalink)  
Antiguo 20/06/2013, 13:52
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas en mi login con PDO

ok me alegro que vayas aprendiendo cosas nuevas.

- ya de paso cambia md5 a crypt() y ya te sales jajaja

- en vez de usar $var == NULL usa empty()
  #10 (permalink)  
Antiguo 20/06/2013, 14:27
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Respuesta: Problemas en mi login con PDO

Cita:
Iniciado por webankenovi Ver Mensaje
ok me alegro que vayas aprendiendo cosas nuevas.

- ya de paso cambia md5 a crypt() y ya te sales jajaja

- en vez de usar $var == NULL usa empty()
Sí, me encanta lo que estoy aprendiendo, mira tengo dos fallos, uno pequeñito y el otro algo más grande.

Empiezo por el más pequeño: La contraseña crypt no sé como funciona pero seguramente genere una contraseña al azar con base en la tuya, y yo, al subirlo a la base de datos, sale un numero junto con letras y signos muy raro como es normal pero cuando quiero volver a entrar pero esta vez logearme (no registrarme), no me funciona, me he asegurado de tener crypt() al subir la contraseña al registrarme y al verificar en el login...

Vale, y el otro error es el siguiente: Bueno esta vez es el enviador de mensajes el que he pasado a PDO y al darle no me sube nada a la bd ni me pone ningún fallo por lo que únicamente dejo el código para que le eches un vistazo porque no encuentro ningún fallo así a la vista:

Código PHP:
Ver original
  1. <?php
  2.     include('global.php');
  3.     include_once("analyticstracking.php");
  4.     include('pdo.php');
  5.     session_start();
  6.     if($_SESSION['usuario'] == NULL){
  7.         $desde = $_SERVER['HTTP_REFERER'];
  8.         header ("Location: ".$desde);
  9.     }else{}
  10.     $usuario = htmlentities($_SESSION['usuario']);
  11.     $post = strip_tags($_REQUEST['post'], "<br><b><i><u>");
  12.     if($post == "" || $post == " "){
  13.         $desde = $_SERVER['HTTP_REFERER'];
  14.         header ("Location: ".$desde);
  15.     }else{
  16.     date_default_timezone_set('Europe/Madrid');
  17.     $dia = date('N');
  18.     $diames = date('j');
  19.     $mes = date('n');
  20.     $anio = date('Y');
  21.     $hora = date("H:i");
  22.     $sql = $gbd->prepare("SELECT * FROM registros WHERE user= ?");
  23.     $sql -> bindParam(1, $usuario);
  24.     $sql -> execute();
  25.     $res=$sql->fetch(PDO::FETCH_ASSOC);
  26.     $nombre = $res['nombre'];
  27.     if($_FILES['imagen']['tmp_name'] == NULL){
  28.         $insertar = $gbd->prepare("INSERT INTO posts(usuario, post, nombre, dia, diames, mes, anio, hora, userid) VALUES(:usuario, :post, :nombre, :dia, :diames, :mes, :anio, :hora, :id)");
  29.         $insertar->bindParam(':usuario', $usuario);
  30.         $insertar->bindParam(':post', $post);
  31.         $insertar->bindParam(':nombre', $nombre);
  32.         $insertar->bindParam(':dia', $dia);
  33.         $insertar->bindParam(':diames', $diames);
  34.         $insertar->bindParam(':mes', $mes);
  35.         $insertar->bindParam(':anio', $anio);
  36.         $insertar->bindParam(':hora', $hora);
  37.         $insertar->bindParam(':id', $res['id']);
  38.         header('Location: index.php');
  39.     }else{
  40.     include('conexion.php');
  41.     $ruta = "imagen";
  42.     $archivotemporal = $_FILES['imagen']['tmp_name'];
  43.     $archivo = $_FILES['imagen']['name'];
  44.     echo $_FILES['imagen']['type'];
  45.         if($_FILES['imagen']['type'] == "image/png" || $_FILES['imagen']['type'] == "image/jpg" || $_FILES['imagen']['type'] == "image/gif" || $_FILES['imagen']['type'] == "image/bmp" || $_FILES['imagen']['type'] == "image/jpeg"){
  46.     move_uploaded_file($archivotemporal, $ruta."/".$archivo);
  47.     $ruta = $ruta."/".$archivo;
  48.         $insertar = $gbd->prepare("INSERT INTO posts(usuario, post, nombre, dia, diames, mes, anio, hora, userid, imagen) VALUES(:usuario, :post, :nombre, :dia, :diames, :mes, :anio, :hora, :id, :imagen)");
  49.         $insertar->bindParam(':usuario', $usuario);
  50.         $insertar->bindParam(':post', $post);
  51.         $insertar->bindParam(':nombre', $nombre);
  52.         $insertar->bindParam(':dia', $dia);
  53.         $insertar->bindParam(':diames', $diames);
  54.         $insertar->bindParam(':mes', $mes);
  55.         $insertar->bindParam(':anio', $anio);
  56.         $insertar->bindParam(':hora', $hora);
  57.         $insertar->bindParam(':id', $res['id']);
  58.         $insertar->bindParam(':imagen', $ruta);
  59.     header('Location: index.php');
  60.         }else{
  61.         $insertar = $gbd->prepare("INSERT INTO posts(usuario, post, nombre, dia, diames, mes, anio, hora, userid) VALUES(:usuario, :post, :nombre, :dia, :diames, :mes, :anio, :hora, :id)");
  62.         $insertar->bindParam(':usuario', $usuario);
  63.         $insertar->bindParam(':post', $post);
  64.         $insertar->bindParam(':nombre', $nombre);
  65.         $insertar->bindParam(':dia', $dia);
  66.         $insertar->bindParam(':diames', $diames);
  67.         $insertar->bindParam(':mes', $mes);
  68.         $insertar->bindParam(':anio', $anio);
  69.         $insertar->bindParam(':hora', $hora);
  70.         $insertar->bindParam(':id', $res['id']);
  71.        
  72.         }
  73.     }
  74.     }//Cierro para que el post haya algo
  75. ?>

Si no entiendes así me lo dices y te lo doy con comentarios para que te enteres pero más o menos se ve la intención... La fecha y hora del mensaje, si hay o no imagen, usuario, nombre, id del usuario...
  #11 (permalink)  
Antiguo 20/06/2013, 15:23
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas en mi login con PDO

empiezo por crypt, bueno habria que ver como lo implementaste , posible fallo la longitud de caracteres en el campo de la bd asegurate que este correcto

el 2 el gordo es solo que no estas ejecutando la consulta en ninguna

$sentencia->execute();

a por cierto al finalizar una consulta acuerdate de cerrar la conexion

1 conexion
2 consultas
3 cerrar conexion

cerrar conexion $gbd = null; // cerramos la conexion
  #12 (permalink)  
Antiguo 20/06/2013, 15:47
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Respuesta: Problemas en mi login con PDO

Cita:
Iniciado por webankenovi Ver Mensaje
empiezo por crypt, bueno habria que ver como lo implementaste , posible fallo la longitud de caracteres en el campo de la bd asegurate que este correcto

el 2 el gordo es solo que no estas ejecutando la consulta en ninguna

$sentencia->execute();

a por cierto al finalizar una consulta acuerdate de cerrar la conexion

1 conexion
2 consultas
3 cerrar conexion

cerrar conexion $gbd = null; // cerramos la conexion
Respecto a lo de las contraseñas modificaré los caracteres porque creo que los mofiqué a 999 caracteres en el localhost pero se me olvidó pasarlo en el servidor de la web.

Respecto al fallo; muchas gracias ya te contaré si funciona.

En cuanto a la advertencia; Osea que si quiero hacer una consulta tengo que abrir y cerrar conexión pero si quiero hacer dos consultas tengo que abrir, cerrar, abrir, cerrar... ¿no se podría hacer así?:

1. Conexión
2. Consulta
3. Consulta
4. Cierro conexión

Otra pregunta, al cerrar conexión "$gbd = NULL", ¿puedo abrir otra conexión con la misma variable: $gbd?
  #13 (permalink)  
Antiguo 21/06/2013, 00:43
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Respuesta: Problemas en mi login con PDO

Siento el doble post, sigue sin funcionarme... Ahora el código está así y sigue sin aparecerme ningún error en la pantalla:

Código PHP:
Ver original
  1. <?php
  2.     include('global.php');
  3.     include_once("analyticstracking.php");
  4.     include('pdo.php');
  5.     session_start();
  6.     if($_SESSION['usuario'] == NULL){
  7.         $desde = $_SERVER['HTTP_REFERER'];
  8.         header ("Location: ".$desde);
  9.     }else{}
  10.     $usuario = htmlentities($_SESSION['usuario']);
  11.     $post = strip_tags($_REQUEST['post'], "<br><b><i><u>");
  12.     if($post == "" || $post == " "){
  13.         $desde = $_SERVER['HTTP_REFERER'];
  14.         header ("Location: ".$desde);
  15.     }else{
  16.     date_default_timezone_set('Europe/Madrid');
  17.     $dia = date('N');
  18.     $diames = date('j');
  19.     $mes = date('n');
  20.     $anio = date('Y');
  21.     $hora = date("H:i");
  22.     $sql = $gbd->prepare("SELECT * FROM registros WHERE user= ?");
  23.     $sql -> bindParam(1, $usuario);
  24.     $sql -> execute();
  25.     $res=$sql->fetch(PDO::FETCH_ASSOC);
  26.     $nombre = $res['nombre'];
  27.     if($_FILES['imagen']['tmp_name'] == NULL){
  28.         $insertar = $gbd->prepare("INSERT INTO posts(usuario, post, nombre, dia, diames, mes, anio, hora, userid) VALUES(:usuario, :post, :nombre, :dia, :diames, :mes, :anio, :hora, :id)");
  29.         $insertar->bindParam(':usuario', $usuario);
  30.         $insertar->bindParam(':post', $post);
  31.         $insertar->bindParam(':nombre', $nombre);
  32.         $insertar->bindParam(':dia', $dia);
  33.         $insertar->bindParam(':diames', $diames);
  34.         $insertar->bindParam(':mes', $mes);
  35.         $insertar->bindParam(':anio', $anio);
  36.         $insertar->bindParam(':hora', $hora);
  37.         $insertar->bindParam(':id', $res['id']);
  38.         $insertar->execute();
  39.         $gbd = NULL;
  40.     }else{
  41.     include('pdo.php');
  42.     $ruta = "imagen";
  43.     $archivotemporal = $_FILES['imagen']['tmp_name'];
  44.     $archivo = $_FILES['imagen']['name'];
  45.     echo $_FILES['imagen']['type'];
  46.         if($_FILES['imagen']['type'] == "image/png" || $_FILES['imagen']['type'] == "image/jpg" || $_FILES['imagen']['type'] == "image/gif" || $_FILES['imagen']['type'] == "image/bmp" || $_FILES['imagen']['type'] == "image/jpeg"){
  47.     move_uploaded_file($archivotemporal, $ruta."/".$archivo);
  48.     $ruta = $ruta."/".$archivo;
  49.         $insertar2 = $gbd->prepare("INSERT INTO posts(usuario, post, nombre, dia, diames, mes, anio, hora, userid, imagen) VALUES(:usuario, :post, :nombre, :dia, :diames, :mes, :anio, :hora, :id, :imagen)");
  50.         $insertar2->bindParam(':usuario', $usuario);
  51.         $insertar2->bindParam(':post', $post);
  52.         $insertar2->bindParam(':nombre', $nombre);
  53.         $insertar2->bindParam(':dia', $dia);
  54.         $insertar2->bindParam(':diames', $diames);
  55.         $insertar2->bindParam(':mes', $mes);
  56.         $insertar2->bindParam(':anio', $anio);
  57.         $insertar2->bindParam(':hora', $hora);
  58.         $insertar2->bindParam(':id', $res['id']);
  59.         $insertar2->bindParam(':imagen', $ruta);
  60.         $insertar2->execute();
  61.         $gbd = NULL;
  62.         }else{
  63.         include('pdo.php');
  64.         $insertar3 = $gbd->prepare("INSERT INTO posts(usuario, post, nombre, dia, diames, mes, anio, hora, userid) VALUES(:usuario, :post, :nombre, :dia, :diames, :mes, :anio, :hora, :id)");
  65.         $insertar3->bindParam(':usuario', $usuario);
  66.         $insertar3->bindParam(':post', $post);
  67.         $insertar3->bindParam(':nombre', $nombre);
  68.         $insertar3->bindParam(':dia', $dia);
  69.         $insertar3->bindParam(':diames', $diames);
  70.         $insertar3->bindParam(':mes', $mes);
  71.         $insertar3->bindParam(':anio', $anio);
  72.         $insertar3->bindParam(':hora', $hora);
  73.         $insertar3->bindParam(':id', $res['id']);
  74.         $insertar->execute();
  75.         $gbd = NULL;
  76.         }
  77.     }
  78.     }//Cierro para que el post haya algo
  79. ?>

¿Alguien sabe?

Última edición por iEnrique; 21/06/2013 a las 09:28
  #14 (permalink)  
Antiguo 21/06/2013, 12:14
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas en mi login con PDO

No tiene por que ser conexion , consulta,cerrar yo te dije conexion consultas con s y cerrar , pero si lo quieres hacer conexion consulta cerrar y asi nuevamente deberas volver a crear la instacia de la conexion si no no habra conexion

solo con esto no es suficiente

$insertar = $gbd->prepare("INSERT INTO posts(usuario, post, nombre, dia, diames, mes, anio, hora, userid) VALUES(:usuario, :post, :nombre, :dia, :diames, :mes, :anio, :hora, :id)");

con eso solo preparas la consulta pero en ese caso no hay conexion sin mas deberias volver a incluir el archivo de conexion consuta y cierras

- aunque mejor yo lo haria , conexion consultas y ya cierras , te dejo los 2 ejemplos y ademas esta linea estaria mal

$insertar3->bindParam(':id', $res['id']);
$insertar->execute();

deberia de ser $insertar3->execute();

Código PHP:
Ver original
  1. <?php
  2.         include('global.php');
  3.         include_once("analyticstracking.php");
  4.         session_start();
  5.         if($_SESSION['usuario'] == NULL){
  6.             $desde = $_SERVER['HTTP_REFERER'];
  7.             header ("Location: ".$desde);
  8.         }else{}
  9.         $usuario = htmlentities($_SESSION['usuario']);
  10.         $post = strip_tags($_REQUEST['post'], "<br><b><i><u>");
  11.         if($post == "" || $post == " "){
  12.             $desde = $_SERVER['HTTP_REFERER'];
  13.             header ("Location: ".$desde);
  14.         }else{
  15.         date_default_timezone_set('Europe/Madrid');
  16.         $dia = date('N');
  17.         $diames = date('j');
  18.         $mes = date('n');
  19.         $anio = date('Y');
  20.         $hora = date("H:i");
  21.  
  22.         include('pdo.php');
  23.         $sql = $gbd->prepare("SELECT * FROM registros WHERE user= ?");
  24.         $sql -> bindParam(1, $usuario);
  25.         $sql -> execute();
  26.         $res=$sql->fetch(PDO::FETCH_ASSOC);
  27.         $gbd = NULL
  28.  
  29.         $nombre = $res['nombre'];
  30.         if($_FILES['imagen']['tmp_name'] == NULL){
  31.  
  32.             include('pdo.php');
  33.             $insertar = $gbd->prepare("INSERT INTO posts(usuario, post, nombre, dia, diames, mes, anio, hora, userid) VALUES(:usuario, :post, :nombre, :dia, :diames, :mes, :anio, :hora, :id)");
  34.             $insertar->bindParam(':usuario', $usuario);
  35.             $insertar->bindParam(':post', $post);
  36.             $insertar->bindParam(':nombre', $nombre);
  37.             $insertar->bindParam(':dia', $dia);
  38.             $insertar->bindParam(':diames', $diames);
  39.             $insertar->bindParam(':mes', $mes);
  40.             $insertar->bindParam(':anio', $anio);
  41.             $insertar->bindParam(':hora', $hora);
  42.             $insertar->bindParam(':id', $res['id']);
  43.             $insertar->execute();
  44.             $gbd = NULL;
  45.  
  46.         }else{
  47.  
  48.  
  49.         $ruta = "imagen";
  50.         $archivotemporal = $_FILES['imagen']['tmp_name'];
  51.         $archivo = $_FILES['imagen']['name'];
  52.         echo $_FILES['imagen']['type'];
  53.             if($_FILES['imagen']['type'] == "image/png" || $_FILES['imagen']['type'] == "image/jpg" || $_FILES['imagen']['type'] == "image/gif" || $_FILES['imagen']['type'] == "image/bmp" || $_FILES['imagen']['type'] == "image/jpeg"){
  54.         move_uploaded_file($archivotemporal, $ruta."/".$archivo);
  55.         $ruta = $ruta."/".$archivo;
  56.  
  57.             include('pdo.php');
  58.             $insertar2 = $gbd->prepare("INSERT INTO posts(usuario, post, nombre, dia, diames, mes, anio, hora, userid, imagen) VALUES(:usuario, :post, :nombre, :dia, :diames, :mes, :anio, :hora, :id, :imagen)");
  59.             $insertar2->bindParam(':usuario', $usuario);
  60.             $insertar2->bindParam(':post', $post);
  61.             $insertar2->bindParam(':nombre', $nombre);
  62.             $insertar2->bindParam(':dia', $dia);
  63.             $insertar2->bindParam(':diames', $diames);
  64.             $insertar2->bindParam(':mes', $mes);
  65.             $insertar2->bindParam(':anio', $anio);
  66.             $insertar2->bindParam(':hora', $hora);
  67.             $insertar2->bindParam(':id', $res['id']);
  68.             $insertar2->bindParam(':imagen', $ruta);
  69.             $insertar2->execute();
  70.             $gbd = NULL;
  71.  
  72.             }else{
  73.  
  74.             include('pdo.php');
  75.             $insertar3 = $gbd->prepare("INSERT INTO posts(usuario, post, nombre, dia, diames, mes, anio, hora, userid) VALUES(:usuario, :post, :nombre, :dia, :diames, :mes, :anio, :hora, :id)");
  76.             $insertar3->bindParam(':usuario', $usuario);
  77.             $insertar3->bindParam(':post', $post);
  78.             $insertar3->bindParam(':nombre', $nombre);
  79.             $insertar3->bindParam(':dia', $dia);
  80.             $insertar3->bindParam(':diames', $diames);
  81.             $insertar3->bindParam(':mes', $mes);
  82.             $insertar3->bindParam(':anio', $anio);
  83.             $insertar3->bindParam(':hora', $hora);
  84.             $insertar3->bindParam(':id', $res['id']);
  85.             $insertar3->execute();
  86.             $gbd = NULL;
  87.  
  88.             }
  89.         }
  90.         }//Cierro para que el post haya algo
  91.     ?>

Código PHP:
Ver original
  1. <?php
  2.         include('global.php');
  3.         include_once("analyticstracking.php");
  4.         include('pdo.php');
  5.         session_start();
  6.         if($_SESSION['usuario'] == NULL){
  7.             $desde = $_SERVER['HTTP_REFERER'];
  8.             header ("Location: ".$desde);
  9.         }else{}
  10.         $usuario = htmlentities($_SESSION['usuario']);
  11.         $post = strip_tags($_REQUEST['post'], "<br><b><i><u>");
  12.         if($post == "" || $post == " "){
  13.             $desde = $_SERVER['HTTP_REFERER'];
  14.             header ("Location: ".$desde);
  15.         }else{
  16.         date_default_timezone_set('Europe/Madrid');
  17.         $dia = date('N');
  18.         $diames = date('j');
  19.         $mes = date('n');
  20.         $anio = date('Y');
  21.         $hora = date("H:i");
  22.  
  23.  
  24.  
  25.         $sql = $gbd->prepare("SELECT * FROM registros WHERE user= ?");
  26.         $sql -> bindParam(1, $usuario);
  27.         $sql -> execute();
  28.         $res=$sql->fetch(PDO::FETCH_ASSOC);
  29.  
  30.         $nombre = $res['nombre'];
  31.         if($_FILES['imagen']['tmp_name'] == NULL){
  32.  
  33.             $insertar = $gbd->prepare("INSERT INTO posts(usuario, post, nombre, dia, diames, mes, anio, hora, userid) VALUES(:usuario, :post, :nombre, :dia, :diames, :mes, :anio, :hora, :id)");
  34.             $insertar->bindParam(':usuario', $usuario);
  35.             $insertar->bindParam(':post', $post);
  36.             $insertar->bindParam(':nombre', $nombre);
  37.             $insertar->bindParam(':dia', $dia);
  38.             $insertar->bindParam(':diames', $diames);
  39.             $insertar->bindParam(':mes', $mes);
  40.             $insertar->bindParam(':anio', $anio);
  41.             $insertar->bindParam(':hora', $hora);
  42.             $insertar->bindParam(':id', $res['id']);
  43.             $insertar->execute();
  44.  
  45.         }else{
  46.  
  47.  
  48.         $ruta = "imagen";
  49.         $archivotemporal = $_FILES['imagen']['tmp_name'];
  50.         $archivo = $_FILES['imagen']['name'];
  51.         echo $_FILES['imagen']['type'];
  52.             if($_FILES['imagen']['type'] == "image/png" || $_FILES['imagen']['type'] == "image/jpg" || $_FILES['imagen']['type'] == "image/gif" || $_FILES['imagen']['type'] == "image/bmp" || $_FILES['imagen']['type'] == "image/jpeg"){
  53.         move_uploaded_file($archivotemporal, $ruta."/".$archivo);
  54.         $ruta = $ruta."/".$archivo;
  55.  
  56.             $insertar2 = $gbd->prepare("INSERT INTO posts(usuario, post, nombre, dia, diames, mes, anio, hora, userid, imagen) VALUES(:usuario, :post, :nombre, :dia, :diames, :mes, :anio, :hora, :id, :imagen)");
  57.             $insertar2->bindParam(':usuario', $usuario);
  58.             $insertar2->bindParam(':post', $post);
  59.             $insertar2->bindParam(':nombre', $nombre);
  60.             $insertar2->bindParam(':dia', $dia);
  61.             $insertar2->bindParam(':diames', $diames);
  62.             $insertar2->bindParam(':mes', $mes);
  63.             $insertar2->bindParam(':anio', $anio);
  64.             $insertar2->bindParam(':hora', $hora);
  65.             $insertar2->bindParam(':id', $res['id']);
  66.             $insertar2->bindParam(':imagen', $ruta);
  67.             $insertar2->execute();
  68.  
  69.             }else{
  70.  
  71.             $insertar3 = $gbd->prepare("INSERT INTO posts(usuario, post, nombre, dia, diames, mes, anio, hora, userid) VALUES(:usuario, :post, :nombre, :dia, :diames, :mes, :anio, :hora, :id)");
  72.             $insertar3->bindParam(':usuario', $usuario);
  73.             $insertar3->bindParam(':post', $post);
  74.             $insertar3->bindParam(':nombre', $nombre);
  75.             $insertar3->bindParam(':dia', $dia);
  76.             $insertar3->bindParam(':diames', $diames);
  77.             $insertar3->bindParam(':mes', $mes);
  78.             $insertar3->bindParam(':anio', $anio);
  79.             $insertar3->bindParam(':hora', $hora);
  80.             $insertar3->bindParam(':id', $res['id']);
  81.             $insertar3->execute();
  82.  
  83.             $gbd = NULL;
  84.  
  85.             }
  86.         }
  87.         }//Cierro para que el post haya algo
  88.     ?>
  #15 (permalink)  
Antiguo 22/06/2013, 09:31
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Respuesta: Problemas en mi login con PDO

Muchas gracias, ya me funciona jajaja Creo que me falta algo de base en esto del PDO por lo que miraré y leeré algunos tutoriales que me guíen un poco. Espero no tener que recurrir a vosotros de nuevo. Voy aprendiendo cosas nuevas, me encanta aprender jejeje Y gracias a vosotros puedo ir quitándome las piedras del camino espero no tener que volver a depender de vosotros y buscarme por manuales si tengo algún pequeño problemilla muchas gracias.

Colorín colorado este tema se ha solucionado.

Última edición por iEnrique; 22/06/2013 a las 13:10

Etiquetas: login, mysql, pdo, registro, select
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 14:52.