Foros del Web » Programando para Internet » PHP »

Duda con el tema de las sesiones

Estas en el tema de Duda con el tema de las sesiones en el foro de PHP en Foros del Web. Hola amigos Tengo el siguiente codigo que se encarga de crear sesión: Código PHP: <?php   $usuario = $_POST [ 'usuario' ];  $contra = $_POST [ ...
  #1 (permalink)  
Antiguo 28/10/2007, 03:45
 
Fecha de Ingreso: junio-2007
Mensajes: 80
Antigüedad: 16 años, 10 meses
Puntos: 1
Duda con el tema de las sesiones

Hola amigos

Tengo el siguiente codigo que se encarga de crear sesión:
Código PHP:
<?php  
$usuario
=$_POST['usuario']; 
$contra=$_POST['contra']; 
include 
"configsql.php";
$xusuario=strtoupper($usuario);
$consulta="select PASSWORD,DESCRIP,NIVEL,CODIGO from t4 where password='".$contra."' and descrip='".$usuario."'";
$query=mysql_query($consulta$connect);
$nfilas=mysql_num_rows($query);
if (
$nfilas !=0){  
//usuario y contraseña válidos  
//defino una sesion y guardo datos  
session_start();  
$_SESSION["usuario"]=$usuario
$_SESSION["contra"]=$contra
session_register("SESSION");
mas abajo, mediante metodo post, abro en un subdirectorio otra pagina que debe recibir las variables usuario y contraseña, para lo cual inicio la página con session_start(), creo que con ésto ya recibe los valores de las dos varibales, no?.

Bien, pues si ésto lo cuelgo en mi ftp, y llamo a la página, funciona perfectamente.
Pero si ésto lo hago en localhost, no me pasa el valor de las variables.
Hay que configurar algo de sesiones en easyphp que es lo que tengo?
Como lo estoy haciendo es correcto?, la verdad es que no teng mucha idea, soy principiante.

Saludos
  #2 (permalink)  
Antiguo 28/10/2007, 09:11
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 10 meses
Puntos: 2
Re: Duda con el tema de las sesiones

Primero que nada no se entiendo del todo tu problematica, podrías ser un poco mas claro?

Mas allá de todo tengo algunas cosas para remarcarte. El session_start() debería y tendría que ser lo primero en ejecutarse (lo primero significa, eso, ser lo primero) la razón de esto es que en tu caso si alguna de las funciones de mysql que estas ejecutando antes tira algún Warning o algo a la salida estándar el session_start() fallaría y se ejecutaría todo el script sin sesión (a menos que el script muera antes).
Cuando verificas si el usuario y contraseña son correcto no compares si devuelve algo distinto a cero, no me gusta esa comparación, podría traer 2 o 3 registros y esta mal!!!!! comparalo a uno al menos.
Nunca, pero nunca de los jamases metas el contenido de una variable que proviene desde el browser ($_GET, $_POST) directamente en la consulta SQL sin escapar correctamente el contenido (léase, escapar = htmlspecialchars, addslashes, etc).

Saludos.
  #3 (permalink)  
Antiguo 28/10/2007, 12:06
 
Fecha de Ingreso: junio-2007
Mensajes: 80
Antigüedad: 16 años, 10 meses
Puntos: 1
Re: Duda con el tema de las sesiones

Hola

Lo que quiero es simplemente que dos variables (usuario, y contra), que son usuario y contraseña, me sirvan para todas las páginas(algo parecido a la sentencia "Public" en otros lenguajes de programacion) desde el momento en que el usuario las introduzca, que es aquí:
Código HTML:
<form name="form1" action="inicio.php" onsubmit="return validar(this)" method="POST">
<table align="center" width="225" cellspacing="2" cellpadding="2" border="0">
<tr>
    <td colspan="2" align="center"><font face="Arial"><b>Introduzca sus datos para acceder al sistema</b></font></td>
</tr>
<tr>
    <td align="right"><b>USUARIO:</b></td>
    <td><input type="Text" name="usuario" size="10" maxlength="50"></td>
</tr>
<tr>
    <td align="right"><b>CONTRASEÑA:</b></td>
    <td><input type="password" name="contra" size="10" maxlength="8"></td>
</tr>
<tr>
    <td colspan="2" align="center"><input type="Submit" value="ENTRAR"></td>
</tr>
</table>

</form> 
Una vez que los ha introducido, llamo a inicio.php que hace la comprobacion:
Código PHP:
<?php  
$usuario
=$_POST['usuario']; 
$contra=$_POST['contra']; 
include 
"configsql.php";
$xusuario=strtoupper($usuario);
$consulta="select PASSWORD,DESCRIP,NIVEL,CODIGO from t4 where password='".$contra."' and descrip='".$usuario."'";
$query=mysql_query($consulta$connect);
$nfilas=mysql_num_rows($query);
if (
$nfilas !=0){  
//Si el usuario y contraseña son válidos  
//defino una sesion y guardo datos  
session_start();  
$_SESSION["usuario"]=$usuario
$_SESSION["contra"]=$contra
session_register("SESSION");
echo 
"<center><font color='Red' face='Arial'>COMPROBACION USUARIO:.....  CORRECTO</font></center>";
echo 
"<center><font color='Red' face='Arial'>COMPROBACION CONTRASEÑA:.....  CORRECTO</font></center>";
echo 
"<META HTTP-EQUIV=REFRESH CONTENT='2; URL=reparte.php'>";
}else {  
//si no existe le mando otra vez a la portada  
echo "<center><font color='Red' face='Arial'>ERROR. ENTRADA NO AUTORIZADA</font></center>";
echo 
"<center><font color='Red' face='Arial'>COMPRUEBE DATOS DE USUARIO Y CONTRASEÑA</font></center>";
echo 
"<META HTTP-EQUIV=REFRESH CONTENT='2; URL=index.php'>";
}  
//mysql_free_result($rs);  
//mysql_close($conn);  
?>
Para lo que verás que he recuperado las variables con $_POST ["usuario"]
Y entiendo que para que se conviertan en públicas desde éste momento, debo hacer lo que he puesto después de "//defino una sesión y guardo datos.
Bien, pues como ves, de aquí se va a reparte.php, que comienza con session_start(), y aunque comienze así, me dice que no existen las variables usuario y contra.
Que otra manera hay de hacer pública una variable que no sea ésta?
Al decir publica me refiero que sea compartida por todos las partes y formularios que sean llamados desde la que se declaren.

Saludos

Última edición por sotadeoros; 28/10/2007 a las 12:14 Razón: añadido
  #4 (permalink)  
Antiguo 28/10/2007, 14:30
Avatar de Albertuxmty  
Fecha de Ingreso: octubre-2007
Mensajes: 34
Antigüedad: 16 años, 5 meses
Puntos: 1
Re: Duda con el tema de las sesiones

pues con las sessiones se obtiene variables que se pueden pasar de un archivo a otro siempre que se usan las sessiones todos los archivos que comparten esa session deben de tener al princio el del archivo

Código PHP:
<?php
session_start
();
$myvar=$_SESSION['variable_global']; //ejemplo de una variable compartida
..
?>
te recomiendo que te leas bien el http://www.php.net/session

Saludos
  #5 (permalink)  
Antiguo 29/10/2007, 01:54
 
Fecha de Ingreso: junio-2007
Mensajes: 80
Antigüedad: 16 años, 10 meses
Puntos: 1
Re: Duda con el tema de las sesiones

Hola

He leido lo que me recomiendas, y creo que es lo que estoy haciendo, pero como ya he dicho al comienzo del post, no me pasa las variables.

Como podrás ver, comienzo todos los archivos php con session_start(), pero inmediatamente después, le pido que me muestre las variables, y me dice que no existen.

Alguna solucion ?

Saludos
  #6 (permalink)  
Antiguo 29/10/2007, 03:42
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Re: Duda con el tema de las sesiones

Pues probablemente sea un problema de configuracion. Puede ser un problema con las cookies, que es la forma de pasar el id de sesion mas utilizado. Quizas tienes que especificar en local el SID.
  #7 (permalink)  
Antiguo 29/10/2007, 06:16
 
Fecha de Ingreso: junio-2007
Mensajes: 80
Antigüedad: 16 años, 10 meses
Puntos: 1
Re: Duda con el tema de las sesiones

Muchas gracias

Podrías indicarme la forma de configurar lo que me dices, o bien decirme algún link a algún manual sobre éste tema?

Saludos
  #8 (permalink)  
Antiguo 29/10/2007, 07:06
 
Fecha de Ingreso: junio-2007
Mensajes: 80
Antigüedad: 16 años, 10 meses
Puntos: 1
Re: Duda con el tema de las sesiones

Bueno, pues ya me reconoce las variables

Efectivamente era problema de configuración, he leido que a partir de una versión de php las sesiones no tratan la variables como globales, lo he cambiado en la configuración de php y andando.

Gracias y saludos
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 18:12.