Comunidad de diseño web y desarrollo en internet online

Problema con $_session en Sistema de Usuarios

Citar            
MensajeEscrito el 30 Jun 2015 06:27 pm
Hola a todos, soy nuevo en el foro y como estoy estudiando php me uni para poder pulir algunas dudas. Por lo que estuve viendo es muy completa esta comunidad.

Bien paso a mostrarles mi problema.

Cree un sistema de usuario. ahora el problema es que quiero que cuando el usuario se loguee se le muestre una pagina para que ingrese dicho valor y se le agregue en su misma ID en la base de datos. Paso imágenes mas descriptivas

Inicio sesión



Me muestra el campo de horas en home.php



Luego de apretar GO! me carga me pone la pagina en blanco pero en la tabla no se agrega nada.

Muestro mi tabla.



Aqui es donde quiero que se cargue ese valor.

Ahora muestro como tengo los archivos PHP.

home.php


Código PHP :

<?php
include_once 'dbconfig.php';
session_start();
if(!$user->is_loggedin())
{
   $user->redirect('index.php');
}
$user_id = $_SESSION['user_session'];
$stmt = $DB_con->prepare("SELECT * FROM users WHERE user_id=:user_id");
$stmt->execute(array(":user_id"=>$user_id));
$userRow=$stmt->fetch(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" type="text/css"  />
<link rel="stylesheet" href="style.css" type="text/css"  />
<title>welcome - <?php print($userRow['user_email']); ?></title>
</head>

<body>
<div class="header">
   <div class="left">
       <label><a href="http://cleartuts.blogspot.com/">cleartuts - programming blog</a></label>
    </div>
    <div class="right">
       <label><a href="logout.php?logout=true"><i class="glyphicon glyphicon-log-out"></i> logout</a></label>
    </div>
</div>
<div class="content">
welcome : <?php print($userRow['user_name']); ?>
<br /><br />

<form name="horas" method="post" action="horas.php">

  <p>HORAS:<br>
    <label>
      <input name="horas" type="text" id="horas">
    </label>
  </p>

  <p>
    <label></label>
    <label>
    <input type="submit" name="Submit" value="Go!">
    </label>
  </p>
<p>
This is Programming Blog Featuring Tutorials on PHP, MySQL, Ajax, jQuery, Web Design and More...<br /><br />
<a href="http://cleartuts.blogspot.com/2015/04/php-login-and-registration-script-with.html">tutorial link</a>
</p>
</div>
</body>
</html>


___________________________________

horas.php

Código PHP :

<?php
session_start();

   class USER
{
   
   function __construct($DB_con)
   {
      $this->db = $DB_con;
   }
   
   public function register($fname,$lname,$uname,$Horas,$upass)
   {
      try
      {
      
         $new_password = ($upass);



         
         $sql = mysql_query("INSERT INTO users (horas) 
                                                     VALUES('{$_SESSION['horas']}')");
                                      
         $stmt->bindparam(":horas", $horas);
                          
            
         $stmt->execute();   
         
         return $stmt;   
      }
      catch(PDOException $e)
      {
         echo $e->getMessage();
      }            
   }
   
   public function login($uname,$umail,$upass)
   {
      try
      {
         $stmt = $this->db->prepare("SELECT * FROM users WHERE user_name=:uname OR user_email=:umail LIMIT 1");
         $stmt->execute(array(':uname'=>$uname, ':umail'=>$umail));
         $userRow=$stmt->fetch(PDO::FETCH_ASSOC);
         if($stmt->rowCount() > 0)
         {
            
               $_SESSION['user_session'] = $userRow['user_id'];
               return true;
            
            
         
         }
      }
      catch(PDOException $e)
      {
         echo $e->getMessage();
      }
   }
   
   public function is_loggedin()
   {
      if(isset($_SESSION['user_session']))
      {
         return true;
      }
   }
   
   public function redirect($url)
   {
      header("Location: $url");
   }
   
   public function logout()
   {
      session_destroy();
      unset($_SESSION['user_session']);
      return true;
   }
}
?>




DESDE YA SUMAMENTE AGRADECIDO POR SU TIEMPO.

Por matuballester

1 de clabLevel



 

msie7
Citar            
MensajeEscrito el 01 Jul 2015 02:41 pm
Saludos
Primero que nada verifica que tu campo "horas" sea de tipo numérico, y prueba cambiando tu sentencia de $query por:
$sql = mysql_query("INSERT INTO users (horas) VALUES('$_SESSION[horas]')");

cualquier cosa comentalo para poder ayudarte

Atte.: Mario

Por mario22121985

88 de clabLevel



 

chrome
Citar            
MensajeEscrito el 01 Jul 2015 08:37 pm

mario22121985 escribió:

Saludos
Primero que nada verifica que tu campo "horas" sea de tipo numérico, y prueba cambiando tu sentencia de $query por:
$sql = mysql_query("INSERT INTO users (horas) VALUES('$_SESSION[horas]')");

cualquier cosa comentalo para poder ayudarte

Atte.: Mario


Hola gracias por responder. Hice lo que me has dicho pero no funcioa me pone el valor en 0. Creo que no esta tomando la session es es el problema.

EL home.php me quedo asi:

Código PHP :

<?php
include_once 'dbconfig.php';
session_start();
if(!$user->is_loggedin())
{
   $user->redirect('index.php');
}
$user_id = $_SESSION['user_session'];
$stmt = $DB_con->prepare("SELECT * FROM users WHERE user_id=:user_id");
$stmt->execute(array(":user_id"=>$user_id));
$userRow=$stmt->fetch(PDO::FETCH_ASSOC);
?>
<div class="content">
welcome : <?php print($userRow['user_name']); ?>
<br /><br />

<form name="horas" method="post" action="horas.php">

  <p>HORAS:<br>
    <label>
      <input name="horas" type="number" id="horas">
    </label>
  </p>

  <p>
    <label></label>
    <label>
    <input type="submit" name="Submit" value="Go!">
    </label>
  </p>
<p>


EL action horas.php quedo asi:

Código PHP :

<?php
session_start();

   class USER
{
   
   function __construct($DB_con)
   {
      $this->db = $DB_con;
   }
   
   public function register($fname,$lname,$uname,$Horas,$upass)
   {
      try
      {
      
         $new_password = ($upass);



         
         $sql = mysql_query("INSERT INTO users (horas) VALUES('$_SESSION[horas]')");
                                      
         $stmt->bindparam(":horas", $horas);

                          
            
         $stmt->execute();   
         
         return $stmt;   
      }
      catch(PDOException $e)
      {
         echo $e->getMessage();
      }            
   }
   
   public function login($uname,$umail,$upass)
   {
      try
      {
         $stmt = $this->db->prepare("SELECT * FROM users WHERE user_name=:uname OR user_email=:umail LIMIT 1");
         $stmt->execute(array(':uname'=>$uname, ':umail'=>$umail));
         $userRow=$stmt->fetch(PDO::FETCH_ASSOC);
         if($stmt->rowCount() > 0)
         {
            
               $_SESSION['user_session'] = $userRow['user_id'];
               return true;
            
            
         
         }
      }
      catch(PDOException $e)
      {
         echo $e->getMessage();
      }
   }
   
   public function is_loggedin()
   {
      if(isset($_SESSION['user_session']))
      {
         return true;
      }
   }
   
   public function redirect($url)
   {
      header("Location: $url");
   }
   
   public function logout()
   {
      session_destroy();
      unset($_SESSION['user_session']);
      return true;
   }
}
?>


la tabla modificada.



Gracias nuevamente por tu respuesta. Ayuda por favor creo que hay un problema con la session

Por matuballester

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 11 Jul 2015 02:35 am
trata colocando el session_start() en la primer linea en el home.php

<?php
session_start();
include_once 'dbconfig.php';

ya que la primer linea que tienes es la del include_once 'dbconfig.php'; y eso te estaria afectando

Atte.: Mario

Por mario22121985

88 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.