Foros del Web » Programando para Internet » PHP »

crear usuarios

Estas en el tema de crear usuarios en el foro de PHP en Foros del Web. Buen día a todos, estoy en la tarea de crear usuarios para mi web, ya tengo la parte en que se registran funcionando, ahora lo ...
  #1 (permalink)  
Antiguo 25/08/2012, 13:01
 
Fecha de Ingreso: julio-2012
Ubicación: Guatemala
Mensajes: 99
Antigüedad: 11 años, 9 meses
Puntos: 2
Pregunta crear usuarios

Buen día a todos, estoy en la tarea de crear usuarios para mi web, ya tengo la parte en que se registran funcionando, ahora lo que necesito hacer es la parte donde se autentican y entran con su usuario, podrían ustedes referirme algún manual legible y detallado de como hacer esto??
  #2 (permalink)  
Antiguo 25/08/2012, 13:57
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 4 meses
Puntos: 14
Pues haces un login y en un script recibes esos datos. En ese script buscas en la base de datos un usuario y contraseña igual a los recibidos del login, si hay un registro con los mismos datos, le creas una sesion o lo que quieras y si no lo hay dices que los datos son incorrectos.

Para saber si hay un registro igual a los del login usa mysql_num_rows
  #3 (permalink)  
Antiguo 25/08/2012, 14:07
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: crear usuarios

Te referis a un tipico "login", hay información en abundancia en este foro y en www.google.com, lo mejor es que uses variables de session para el login http://php.net/manual/es/book.session.php

busca en este foro o en google sobre sessiones para login hay mucho
  #4 (permalink)  
Antiguo 25/08/2012, 23:39
 
Fecha de Ingreso: julio-2012
Ubicación: Guatemala
Mensajes: 99
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: crear usuarios

estuve leyendo sobre el tema, encontré algunos ejemplos y ahi voy entendiendo pero tengo algunas dudas digamos superficiales aún... por ejemplo en la variable $_session[], estaba viendo este pedazo de codigo:

if (($_POST['nombre']=="usuario")&&($_POST['clave']=="123456") )
{
session_start();
$_SESSION['usuario']="usuario";
$_SESSION['tiempo']=time();
header("location:index.php");
} etc. etc.


porqué incluyen 'usuario' en $_SESSION, no debería ir la variable de $_post['nombre'] ahi? de esta manera:

$var=$_post['nombre'];
$_SESSION['var']="var";

sé que como está al principio esta bien porque el codigo funciona pero yo tengo esa duda, y me surge cuando quiero traer los datos de mi base de datos asi:

if (isset($_POST['nombre']) && isset($_POST['clave']))
{

$registro=mysql_query("select ".$NOM.", ".$CLA." from ".$US." where ".$NOM."='$_POST[nombre]'");
$reg=mysql_fetch_array($registro);

if (($_POST['nombre']==".$reg["$NOM"].")&&($_POST['clave']==".$reg["$CLA"].") )
{
session_start();
$_SESSION['usuario']="usuario"; //QUE DEBERÍA COLOCAR AQUÍ EN VEZ DE 'USUARIO'? sería ".$reg["$NOM"]."?

$_SESSION['tiempo']=time(); //A QUE SE REFIEREN ESTA DECLARACION?
header("location:index.php");
}
else
header("location:index.php");

etc. etc.etc. etc.


porfavor puede alguien instruirme en este tema? gracias!
  #5 (permalink)  
Antiguo 26/08/2012, 01:02
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: crear usuarios

Cosas a decirte:

session_start(); siempre en la 1era linea de tu archivo php,

Código PHP:
Ver original
  1. <?php
  2. blabla..
  3. ...
  4.  
  5. ?>

porque si no puede dar problemas.
$_SESSION es un array asociativo, que lo utilizas para guardar datos e ir pasandolos entre varios archivos siempre y cuando en cada 1 de ellos contenga al comienzo session_start.

$var=$_post['nombre'];
$_SESSION['var']="var";


con respescto a esto, creo que lo que queres hacer es esto

$var=$_post['nombre'];
$_SESSION['var']=$var;

creas la variable $var que es igual al valor de la variable nombre que te llega por POST ( va en mayusculas ), y luego creas una posición llamada var en el array asociativo al cual le asignas el valor de $var, o sea el nombre.
Recorda que $_SESSION es un array asociativo eso quiere decir que no se accede a sus elementos por un indice numérico ( $_SESSION[0]..etc ) sino que por un string, su indice es un string, en este caso 'var'.

$registro=mysql_query("select ".$NOM.", ".$CLA." from ".$US." where ".$NOM."='$_POST[nombre]'");

una pregunta, $NOM, $CLA son campos en tu tabla? se supone que deberian serlo, sino esa consulta no te deberia funcionar, y $US es una tabla que existe en tu base de datos?


session_start();
$_SESSION['usuario']="usuario"; //QUE DEBERÍA COLOCAR AQUÍ EN VEZ DE 'USUARIO'? sería ".$reg["$NOM"]."?

acordate de lo que te dije, session_start va al comienzo siempre del archivo, ahi no va.
$_SESSION['usuario'] tendria que ser $_SESSION['usuario'] = $reg['NOM']; para asignarle el nombre del usuario.

http://www.php.net/manual/es/function.time.php
la funcion time devuelve la fecha actual

$_SESSION['tiempo']=time();
ahi almacenas la fecha en la posicion tiempo del array SESSION
  #6 (permalink)  
Antiguo 26/08/2012, 20:52
 
Fecha de Ingreso: julio-2012
Ubicación: Guatemala
Mensajes: 99
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: crear usuarios

Muchas gracias Rrodrigo, el funcionamiento de $_SESSION puede ser comparado con el de $_POST? si es así cuál sería el equivalente a <form method="post">... para pasar la informacion?

Las variables por las que me preguntabas antes si son parte de mi base de datos, unas son campos y la otra es el nombre de la tabla...

estuve experimentado con los codigos que encontre:

<?php
session_start();
if (isset($_POST['nombre']) && isset($_POST['clave']))
{
$registro=mysql_query("select ".$NOM.", ".$CLA." from ".$US." where ".$NOM."='$_POST[nombre]'");
$reg=mysql_fetch_array($registro);

if (($_POST['nombre']=='".$reg["$NOM"]."')&&($_POST['clave']=='".$reg["$CLA"]."') )
{
$_SESSION['usuario']=$reg["$NOM"];
$_SESSION['tiempo']=time();
header("location:index.php");
}
else
header("location:index.php");
}
else
{
?>

pero solo logro que me redirija nuevamente al inicio en donde esta el formulario de ingreso, por alguna razon no se inicia la sesion, creo que tiene que ver con la variable $_SESSION['usuario'] y la relacion con la variable $reg["$NOM"] que yo puse

Última edición por ANDRESDD; 26/08/2012 a las 20:59
  #7 (permalink)  
Antiguo 26/08/2012, 21:30
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: crear usuarios

Cita:
Iniciado por ANDRESDD Ver Mensaje
Muchas gracias Rrodrigo, el funcionamiento de $_SESSION puede ser comparado con el de $_POST? si es así cuál sería el equivalente a <form method="post">... para pasar la informacion?
o sea para pasar las variables de session entre diferentes archivos tenes que tener en la 1er linea, esto session_start() eso significa que inicializa las variables de session, sin eso no podes usarlas, suponete que tenes esto
archivio1.php
Código PHP:
Ver original
  1. <?php
  2. blablabla
  3. $_SESSION['usuario']="Rodrigo";
  4. ...
  5. ?>

archivo2.php
Código PHP:
Ver original
  1. <?php
  2. blablabla
  3. echo $_SESSION['usuario'];//esto mostrará Rodrigo en pantalla, porque se inicializo la session con session_start() y por eso reconoce que anteriormente se ha creado una variable de session
  4. ...
  5. ?>

Código PHP:
Ver original
  1. <?php
  2.  
  3. blablabla
  4. $_SESSION['usuario']="Rodrigo";//esto da error, porque no se reconoce que se hallan creado sessiones si no se inicializan antes.
  5. ...
  6. ?>

y con respecto a que se te redirecciona al mismo lugar, y es obvio si en las 2 condiciones pones q vallan al mismo lado, location: index.php.
Para saber si se crean las sessiones hace un echo de la session como dije antes
  #8 (permalink)  
Antiguo 26/08/2012, 21:45
 
Fecha de Ingreso: julio-2012
Ubicación: Guatemala
Mensajes: 99
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: crear usuarios

Bueno ahora ya entiendo mejor la variable session... con respecto a location:index.php te puedo decir que forma parte de un codigo que encontré y empecé a modificar para entenderlo mejor, el codigo pues si funciona, solo que cuando hago ciertas modificaciones no logro hacer cumplir la condicion para que se inicie la sesion... este es el link donde esta el codigo, prácticamente solo tenés que copiar y pegar en tu bloc de notas y listo..

http://hacerpaginaswebconphp.com/control-de-sesiones-en-php/

te lo dejo por si queres hecharle un vistazo y probarlo
  #9 (permalink)  
Antiguo 26/08/2012, 21:48
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: crear usuarios

si esta bien el ejemplo, solo que te falta comprobar vos si te la crea o no la variable, hace un echo y listo
  #10 (permalink)  
Antiguo 26/08/2012, 22:27
 
Fecha de Ingreso: julio-2012
Ubicación: Guatemala
Mensajes: 99
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: crear usuarios

estuve probando con dos archivos aparte, prueba.php y prueba1.php pero me sale este mensaje de error:

Notice: Undefined variable: _session a que se debe este error?

<?php
session_start();
$_session['us']="david";
?>

y

<?php
session_start();
echo $_session['us'];
?>
  #11 (permalink)  
Antiguo 27/08/2012, 08:07
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: crear usuarios

va en mayúscula $_SESSION, php hace diferencias entre mayusculas y minusculas, cuidado con eso.
  #12 (permalink)  
Antiguo 27/08/2012, 11:31
 
Fecha de Ingreso: julio-2012
Ubicación: Guatemala
Mensajes: 99
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: crear usuarios

Ya logre autentificarme como usuario en mi pagina, muchas gracias. Estuve experimentando y en una seccion coloqué el siguiente codigo para que solo usuarios puedan ver esta seccion

<?php
session_start();
include ("seg.php");
?>

y me salio el siguiente mensaje:

Notice: A session had already been started - ignoring session_start()

luego removí el session_start() y ya no me dio ese error... a primera vista parece que hice lo correcto al quitarlo, sin embargo no sé si al haberlo removido aún se reconoce que el usuario está dentro de su sesion?? o es suficiente con la comprobacion que hago en seg.php en donde compruebo que exista $_session['us'] ?
  #13 (permalink)  
Antiguo 27/08/2012, 13:33
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: crear usuarios

ese error te dice que pusiste en algun lado de tu archivo 2 veces session_start, asi que con 1 basta.
Para comprobar si existe $_SESSION['us'] podes hacer echo $_SESSION['us']; y veras su valor ( SI ES QUE LO TIENE, sino no veras nada, pero no saldrá error )si te da algun error de que no esta creada entonces solo creala y listo, o sino podes usar la función isset, que evalua si existe o no una variable.

Código PHP:
Ver original
  1. if(isset($_SESSION['us'])){
  2. echo "si existe";
  3. }else{
  4. echo "no existe";
  5. }
  #14 (permalink)  
Antiguo 27/08/2012, 23:22
 
Fecha de Ingreso: julio-2012
Ubicación: Guatemala
Mensajes: 99
Antigüedad: 11 años, 9 meses
Puntos: 2
Respuesta: crear usuarios

bien ya casi está todo funcionando.. según entiendo la variable session_start() pasa las variables por medio de cookies, si fuera por medio de URL como se haría?
  #15 (permalink)  
Antiguo 28/08/2012, 17:43
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: crear usuarios

http://www.php.net/manual/es/intro.session.php

cita "Un visitante que accede a su sitio web se el asigna un id único, también llamado id de sesión. Éste es almacenado en una cookie en la parte del cliente o se propaga en el URL."

ahi explica bien

Etiquetas: mysql, usuarios
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 00:45.