Foros del Web » Programando para Internet » PHP »

problemas con usuarios

Estas en el tema de problemas con usuarios en el foro de PHP en Foros del Web. hola tengo el siguiente muro tipo facebook, que guarda cada publicacion en una bd llamada trabajos con los campos id_trabajo, txt_trabajo, fecha_trabajo, id_usuario, tiene un ...
  #1 (permalink)  
Antiguo 05/06/2012, 22:32
 
Fecha de Ingreso: mayo-2012
Mensajes: 15
Antigüedad: 11 años, 11 meses
Puntos: 0
problemas con usuarios

hola tengo el siguiente muro tipo facebook, que guarda cada publicacion en una bd llamada trabajos con los campos id_trabajo, txt_trabajo, fecha_trabajo, id_usuario, tiene un campo en comun con la tabla usuarios el cual es id_usuario, el problema es el siguiente cuando inicio sesion como hago para que al hacer una publicacion en el muro esa publicacion guarde el id_usuario del usuario que esta con sesion activa en ese momento en la bd. dejo el codigo a ver si logro que me ayuden.


este es el inicio de sesion:

Código:
<?
session_start();
  	require( 'conex.php');
  ?>
<!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" />
<title>Inicia Sesion</title>

<link rel="stylesheet" href="css/main.css" type="text/css" />

<style>
body{
	height:400px;
	margin:0;
	width:500px;
	background-color:#DDDDDD;
	padding: 140px 100px 100px 350px}
	</style>
</head>

<body>
<div class="cuadro2">
<h1>Inicia Sesion</h1>
</div>
<form id="form1" name="form1" method="post" action="acceso.php">
      <label for="usuario"></label>
<table width="317" height="108" border="1">
  <tr>
    <td id="td1" width="156"><strong>Usuario</strong></td>
    <td id="td2" width="137">
      <input type="text" name="usuario" id="usuario" />
    </td>
  </tr>
  <tr>
    <td id="td1"><strong>Contraseña</strong></td>
    <td id="td2"><input type="text" name="contrasena" id="contrasena" /></td>
  </tr>
  <tr>
    <td id="td1"><input type="submit" name="Iniciar Sesion" id="Iniciar Sesion" value="Iniciar Sesion" /></td>
    <td id="td2">&nbsp;</td>
  </tr>
</table>
</form>
</body>
</html>
este es el codigo que me guarda a la base de el mensaje del muro:

Código:
<?php
//Defino mi variable mensaje
$msg = $_POST['msg'];
$fecha = localtime(time(),1);
$anyo = $fecha['tm_year'] + 1900;
$mes = $fecha['tm_mon'] + 1;
$dia = $fecha['tm_mday'];
$fecha = $anyo."-".$mes."-".$dia;

//Si no esta vacia
if(!empty($msg)){
   //Conecto con la base de datos
   $cx = mysql_connect("localhost", "root", "") or die("Error connect: ".mysql_error());
   //Selecciono la base de datos
   mysql_select_db("bdsdc") or die("Error select db: ".mysql_error());
   //Inserto el mensaje al tabla
   mysql_query("INSERT INTO trabajos (txt_trabajo, fecha_trabajo, id_usuario) VALUES ('".$msg."', '".$fecha."', '".$_SESSION['id']."')", $cx);
}
?>
si me pudiesen ayudar lo agradeceria mucho, igual muchas gracias de antemano y disculpen si no he publicado como es debidamente soy nuevo en el foro
  #2 (permalink)  
Antiguo 06/06/2012, 05:32
 
Fecha de Ingreso: junio-2012
Ubicación: Argentina - Buenos Aires
Mensajes: 135
Antigüedad: 11 años, 10 meses
Puntos: 32
Respuesta: problemas con usuarios

En el archivo que procesas el loggin, supongo que haces una consulta a la base de datos mas precisamente a la tabla de usuario buscando la coincidencia de usuario y contraseña. Pues ahi tenes que traer tambien el id de ese usuario y en alguna parte haces lo siguiente:
Código PHP:
Ver original
  1.   /* por aca verificas con los datos que trajo el formulario login si el usuario existe, no olvides
  2.       agregar a la consulta que te traiga el id o id_usuario de la tabla usuario */
  3.  $_SESSION['id'] = $USUARIO['id_usuario'];
  4.  
  5.   ....

Espero sirva, saludos!
  #3 (permalink)  
Antiguo 06/06/2012, 09:02
 
Fecha de Ingreso: mayo-2012
Mensajes: 15
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: problemas con usuarios

muchas gracias por tu respuesta he revisado lo que me dijiste y he hecho lo siguiente en la pagina que procesa el login:

Cita:
<?
include 'conex.php';
$id = $_POST['idusu'];
$usuario = $_POST['usuario'];
$clave = $_POST['contrasena'];
$_SESSION['id'] = $id;
$sql = "select id_usuario, txt_nomusuario, txt_contrasena from usuarios where txt_nomusuario = '$usuario' and txt_contrasena = '$clave'";

//verifica si se puede hacer consulta
if ( ! ($consulta = mysql_query($sql)) )
{
echo '<script type="text/javascript"> alert ("Error, falla de conexion") </script>';
echo '<script type="text/javascript">window.location="index.php"</script>';
exit();
}
else
{
// si hay uno al menos consiguio registro
if (mysql_num_rows($consulta)==0)
{
echo '<script type="text/javascript"> alert ("Error, usuario no registrado") </script>';
echo '<script type="text/javascript">window.location="index.php"</script>';
exit();
}
else
{
// verifica clave
$b = mysql_fetch_row($consulta);
if ( !($clave == trim($b[2])) )
{
echo '<script type="text/javascript"> alert ("Error, clave erronea") </script>';
echo '<script type="text/javascript">window.location="index.php"</script>';
exit();
}
else
{
// si paso la clave entonces muestra la pantalla de administrador

$_SESSION["valido"] = 1;
header( "location: menu.php");
exit();
}
}
}
?>
y cuando hago un echo al $_SESSION['id'] sigue apareciendo que es 1 y yo necesito que sea igual al id del usuario
  #4 (permalink)  
Antiguo 07/06/2012, 12:38
 
Fecha de Ingreso: junio-2012
Ubicación: Argentina - Buenos Aires
Mensajes: 135
Antigüedad: 11 años, 10 meses
Puntos: 32
Respuesta: problemas con usuarios

Cuando procesas el login, aun no sabes que usuario es. Asi que es imposible tener el id de usuario si aun no chequeaste la base de datos.

Te puse un par de comentarios y te complete el codigo, imagino que en alguna parte recuperas la session no? porque para declarar una variable de session en el array $_SESSION es necesario iniciar la session con session_start().
Código PHP:
Ver original
  1. <?php
  2.     include 'conex.php';
  3.     /*
  4.      * $id      = $_POST['idusu'];
  5.      * Esto conceptualmente esta mal, porque aun no sabes el id de usuario.
  6.      * Primero debes ir a la base de datos para ver si el usuario existe.
  7.      *
  8.      */
  9.    
  10.     $usuario = $_POST['usuario'];
  11.     $clave   = $_POST['contrasena'];   
  12.    
  13.     // Esto esta mal por el mismo motivo anterior.
  14.     //$_SESSION['id'] = $id;
  15.    
  16.     $sql = "SELECT id_usuario,
  17.                    txt_nomusuario,
  18.                    txt_contrasena
  19.             FROM usuarios
  20.             WHERE txt_nomusuario = '".$usuario."'
  21.                 AND txt_contrasena = '".$clave."'";
  22.  
  23.     //verifica si se puede hacer consulta
  24.     if ( ! ($consulta = mysql_query($sql)) )   
  25.     {
  26.         echo '<script type="text/javascript"> alert ("Error, falla de conexion") </script>';
  27.         echo '<script type="text/javascript">window.location="index.php"</script>';
  28.         exit();
  29.     }
  30.     else
  31.     {
  32.         // si hay uno al menos consiguio registro
  33.         if (mysql_num_rows($consulta)==0)
  34.         {
  35.             echo '<script type="text/javascript"> alert ("Error, usuario no registrado") </script>';
  36.             echo '<script type="text/javascript">window.location="index.php"</script>';
  37.             exit();
  38.         }
  39.         else
  40.         {
  41.             /*
  42.              * Verificar la clave aca no tiene sentido, ya lo verificaste en la base de datos.
  43.              * Si trajo 1 coincidencia de txt_nomusuario = $usuario y txt_contrasena = $clave
  44.              * esta validado!
  45.              */
  46.            
  47.             $user = mysql_fetch_row($consulta);
  48.             /*
  49.              * Aca es donde tiene un arrar $user con los datos de tu usuario
  50.              * y es aca donde tenes que setear el id de usuario en la variable de session
  51.              */
  52.             $_SESSION["id"] = $user['id_usuario'];
  53.             $_SESSION["valido"] = 1;
  54.             header( "location: menu.php");
  55.             exit();
  56.         }
  57.     }
  58. ?>


Espero te sirva. Saludos.

Etiquetas: html, mysql, tabla, usuarios, variables
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 16:21.