Foros del Web » Programando para Internet » PHP »

sesion problema

Estas en el tema de sesion problema en el foro de PHP en Foros del Web. ok lo que pasa es que tengo este codigo para iniciar sesion Cita: <? // Configura los datos de tu cuenta $dbhost='127.0.0.1'; $dbusername='root'; $dbuserpass='arcr'; $dbname='g'; ...
  #1 (permalink)  
Antiguo 21/11/2008, 16:39
 
Fecha de Ingreso: noviembre-2008
Mensajes: 279
Antigüedad: 15 años, 4 meses
Puntos: 0
sesion problema

ok lo que pasa es que tengo este codigo para iniciar sesion

Cita:
<?
// Configura los datos de tu cuenta
$dbhost='127.0.0.1';
$dbusername='root';
$dbuserpass='arcr';
$dbname='g';

session_start();
// ya puedes acceder a la seccion de ".'<a href="members.php">Miembros</a>'."
// Conectar a la base de datos
mysql_connect ($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die('No se puede seleccionar la base de datos');

if ($_POST['username']) {
//Comprobacion del envio del nombre de usuario y password
$username=$_POST['username'];
$password=$_POST['password'];
if ($password==NULL) {
echo "La password no fue enviada";
}else{
$query = mysql_query("SELECT username,password,GM FROM user WHERE username = '$username'") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['password'] != $password) {
echo "Login incorrecto";
}else{
if($data['1'] != $GM) {
echo "No eres un maestro de juego, nesesitas consultar mas la pagina web";
}else{
$query = mysql_query("SELECT username,password,GM FROM user WHERE username = '$username'") or die(mysql_error());
$row = mysql_fetch_array($query);
$_SESSION["s_username"] = $row['username'];
session_start();
echo $_SESSION["s_username"];
echo (" bienvenido no hay partida en estos momentos pero ");
print "<a href='juego.html'> entra a la sesion y registrate en el Chat del juego </a>";
}
}
}
}
?>
ala hora de comprovar si es maestro de juego me manda que no soy y ya coloque en la tabla que si es

explico lo que pasa es que la sesion es espesifica para maestros de juego como si fueran moderadores como comprubo el dato que esta en la tabla si es = 1 si puede hacer logging?????

Última edición por arcanisgk; 21/11/2008 a las 19:00
  #2 (permalink)  
Antiguo 21/11/2008, 16:44
 
Fecha de Ingreso: noviembre-2008
Mensajes: 279
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: sesion problema

el numero esta en una tabla solo es nesesario la comprobacion y no se que ponerle o que codigo meterle XD
  #3 (permalink)  
Antiguo 21/11/2008, 17:36
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: sesion problema

Hola

donde esta definida la variable $GM que usas en esta linea del code

if($data['1'] != $GM) {

Un saludo
  #4 (permalink)  
Antiguo 21/11/2008, 17:41
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 2 meses
Puntos: 7
Respuesta: sesion problema

¿De dónde sale $GM de la línea de comparación Nro. 26?
  #5 (permalink)  
Antiguo 21/11/2008, 18:14
 
Fecha de Ingreso: noviembre-2008
Mensajes: 279
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: sesion problema

dentro de la base de datos hay una tabla que tiene por nombre GM en esa tabla se encuentra los datos 1 ò 0 el numero 1 es para moderadores el numero 0 es para usuarios normales.

quiero saver somo comprobar y solo dejar entrar a los que son moderadores no kiero dejar entrar a los que son usuarios

si GM es diferentes a 1
echo "No eres un maestro de juego, nesesitas consultar mas la pagina web";
pero no se si el codigo este vien solo hay que somprovar que el dato que tiene Gm en la tabla es 1.

el problema es que solo se comprar datos metidos por el mismo usuario y el numero ese no lo mete el usuario ese numero ya esta en la tabla
  #6 (permalink)  
Antiguo 21/11/2008, 18:40
 
Fecha de Ingreso: noviembre-2008
Mensajes: 279
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: sesion problema

alguien me ayuda plzz
  #7 (permalink)  
Antiguo 21/11/2008, 18:42
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 1 mes
Puntos: 9
Respuesta: sesion problema

Mmmm.. al hacer la consulta.. no significa que se crearan automaticamente variables como crees.. por ej..

la variable $GM no existe y no se ha creado.. (if($data['1'] != $GM))

tampoco la variable $password se ha creado (if($data['password'] != $password))

entonces especificamente en esas lineas ya tienes errores para empezar..

En cuanto a la consulta.. no comprendo porque no utilizas al password.. sino que lo comparas cuando ya tienes una respuesta del query.. la forma mas idonea seria incluyendo el usuario y el password dentro de la consulta.. si hay respuesta entonces procedes a crear las variables de sesion.. de lo contrario.. mandas al error..

yo la dejaria asi:

Código:
SELECT username,password,GM FROM user WHERE username = '".$username."' AND password = '".$password."'
  #8 (permalink)  
Antiguo 21/11/2008, 18:46
 
Fecha de Ingreso: noviembre-2008
Mensajes: 279
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: sesion problema

digame si deveria declarar asi ???
$username=$_POST['username'];
$password=$_POST['password'];
$GM=1;
  #9 (permalink)  
Antiguo 21/11/2008, 18:49
 
Fecha de Ingreso: noviembre-2008
Mensajes: 279
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: sesion problema

ok mira el password , el username, la ID o llave principal y el Gm estan todos en una tabla en mi base de datos
solo kiero comprobar si tiene los privilegios de GM que seria tener el numero 1 en la baswe de datos
  #10 (permalink)  
Antiguo 21/11/2008, 18:51
 
Fecha de Ingreso: noviembre-2008
Mensajes: 279
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: sesion problema

en tal caso les dejo la direccion

http://190.35.104.74/gonline.html

cuando te vas a donde dice :

SECCIÓN DE
DIRECTORES DE JUEGO

no hace logging

y creo que el password y el nickanem estan inicialisados en el html
XD o no se soy nuevo en esto
  #11 (permalink)  
Antiguo 21/11/2008, 18:52
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 1 mes
Puntos: 9
Respuesta: sesion problema

ok.. entonces por ahi vi que obtienes los resultados
Código PHP:
// esto esta bien..
$data mysql_fetch_array($query);

// ahora la comparacion deberia de ser
if($data['1'] != $data['GM']) 
en lugar de como tu la tienes
  #12 (permalink)  
Antiguo 21/11/2008, 18:56
 
Fecha de Ingreso: noviembre-2008
Mensajes: 279
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: sesion problema

sigue el problema no hace logging
  #13 (permalink)  
Antiguo 21/11/2008, 18:59
 
Fecha de Ingreso: noviembre-2008
Mensajes: 279
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: sesion problema

este es el codigo modificado con lo que me dices

Cita:
<?
// Configura los datos de tu cuenta
$dbhost='127.0.0.1';
$dbusername='root';
$dbuserpass='ar';
$dbname='g';

session_start();
// ya puedes acceder a la seccion de ".'<a href="members.php">Miembros</a>'."
// Conectar a la base de datos
mysql_connect ($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die('No se puede seleccionar la base de datos');
if ($_POST['username']) {
//Comprobacion del envio del nombre de usuario y password
$username=$_POST['username'];
$password=$_POST['password'];
if ($password==NULL) {
echo "La password no fue enviada";
}else{
$query = mysql_query("SELECT username,password,GM FROM user WHERE username = '$username'") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['password'] != $password) {
echo "Login incorrecto";
}else{
// ahora la comparacion deberia de ser
if($data['1'] != $data['GM']){
echo "No eres un maestro de juego, nesesitas consultar mas la pagina web";
}else{
$query = mysql_query("SELECT username,password,GM FROM user WHERE username = '$username'") or die(mysql_error());
$row = mysql_fetch_array($query);
$_SESSION["s_username"] = $row['username'];
session_start();
echo $_SESSION["s_username"];
echo (" bienvenido no hay partida en estos momentos pero ");
print "<a href='juego.html'> entra a la sesion y registrate en el Chat del juego </a>";
}
}
}
}
?>
  #14 (permalink)  
Antiguo 21/11/2008, 23:28
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 1 mes
Puntos: 9
Respuesta: sesion problema

Perdon.. he tenido un error.. que por responder rapido no lo note.. pero segun leo el hilo que se ha escrito para este post.. veo que lo que necesitas es que compare GM cuando es diferente de 1.. vaya.. ahora escribo todo el codigo como deberia de estar funcionando:

Código PHP:
<?
// Configura los datos de tu cuenta
$dbhost='127.0.0.1';
$dbusername='root';
$dbuserpass='ar';
$dbname='g';

session_start();
// ya puedes acceder a la seccion de ".'<a href="members.php">Miembros</a>'."
// Conectar a la base de datos
mysql_connect ($dbhost$dbusername$dbuserpass);
mysql_select_db($dbname) or die('No se puede seleccionar la base de datos');
if (isset(
$_POST['username'])) {  // la comprobacion correcta de si la variable existe se hace con isset()
    //Comprobacion del envio del nombre de usuario y password
    
$username=$_POST['username'];
    
$password=$_POST['password'];
    if (!empty(
$password)) { // esto es otra forma de hacer comparacion de un password vacio
        
$query mysql_query("SELECT username,password,GM FROM user WHERE username = '".$username."'") or die(mysql_error());
        
$data mysql_fetch_array($queryMYSQL_ASSOC);
        if(
$data['password'] != $password) {
            echo 
"Login incorrecto";
        }else{
            if(
$data['GM'] != 1){
                echo 
"No eres un maestro de juego, nesesitas consultar mas la pagina web";
            }else{
                
$_SESSION['s_username'] = $data['username'];
                echo 
$_SESSION['s_username'];
                echo (
" bienvenido no hay partida en estos momentos pero ");
                print 
"<a href='juego.html'> entra a la sesion y registrate en el Chat del juego </a>";
            }
        }
    }
}
?>
Elimine una linea que tenias que decia session_start() que estaba casi al final, eso ya no tiene caso porque la sesion ya se ha iniciado desde arriba.. y no hace falta hacer otra consulta para obtener solamente el nombre de usuario o username.. porque en la primera consulta esta parametro ya lo traia el resultado.

Es muy importante que utilices las funciones isset(), empty() para validar los valores de las variables.. por ahi encontraras MYSQL_ASSOC que lo que hace es que te da la posibilidad de que puedas referirte al valor de una matriz ya sea por indice o por nombre.
  #15 (permalink)  
Antiguo 22/11/2008, 00:28
 
Fecha de Ingreso: noviembre-2008
Mensajes: 279
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: sesion problema

gracias poro la ayuda
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:57.