Problemas con la función session en php

Iniciado por ramon123099, 27 Agosto 2017, 18:09 PM

0 Miembros y 1 Visitante están viendo este tema.

ramon123099

Hola tengo unos problemas con la funcion session lo que quiero hacer es que al iniciar sesión se cree una sesión con el nombre de usuario para poder usarla en toda la pagina tengo este codigo que es el que se encarga de validar que exista un usuario con esa contraseña que previamente se introdujo en el login:

Código (php) [Seleccionar]
<script>
window.onload=function()
{
document.forms["seguro"].submit();
}
</script>
<?php
include 
"../Conexion/conexion.php";
$user=$_POST['user'];
$pass=$_POST['pass'];

$sql "SELECT * FROM usuarios WHERE `user`='$user' AND `pass`='$pass'";
    
$resultado=mysqli_query($mysqli$sql);

    
$filas=mysqli_num_rows($resultado);

    if(
$filas>0){
        
session_start();
        
$_session['user'] = $user;
        echo(
$_session['user']);
        
header('location: pruebas.php');
    }
    else{
        echo(
"no entro");
    }

?>


una vez que se valido el usuario y la contraseña se crea la sesion y me manda a la pagina pruebas esto solo para realizar una simple prueba, en la pagina pruebas esta el siguiente codigo:

Código (php) [Seleccionar]

<?php 
session_start
();
if(isset(
$_session['user'])){
    echo(
"entro");
}
else{
    echo(
"no entro");
}
?>




el problema es que al llegar a la pagina pruebas me salta el mensaje de no entro lo que significa que la sesion no esta siendo creada o que no se esta compartiendo en toda la pagina porfavor ayuda llevo rato intentando hacer que funcione y nada y ya me quede sin ideas.

engel lex

Session start y los headers deben hcerve antes de imprimir cualquier contenido, si no, fallarán,


Por otro lado, es inapropiado guardar las contraseñas en claro y tu forma de solicitud a la db es una forma de ser hackeado incluso por herramientas automáticas

Para las contraseñas usa password_hash y password_verify
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ramon123099

disculpa tu te refieres a que el codigo este asi

Código (php) [Seleccionar]

<script>
window.onload=function()
{
document.forms["seguro"].submit();
}
</script>
<?php
    session_start
();
include "../Conexion/conexion.php";
$user=$_POST['user'];
$pass=$_POST['pass'];

$sql "SELECT * FROM usuarios WHERE `user`='$user' AND `pass`='$pass'";
    
$resultado=mysqli_query($mysqli$sql);

    
$filas=mysqli_num_rows($resultado);

    if(
$filas>0){
        
$_session['user'] = $user;
        echo(
$_session['user']);
    }
    else{
        echo(
"no entro");
    }

?>


engel lex

si.... session start, si no detecta cookie debe enviarla, esto lo hace como un header, y los header deben ser enviados antes que cualquier que cualquier salida de texto...

especialmente en tu codigo no hay ninguna razón para que ese script esté antes del php...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ramon123099

e corregido eso que me has dicho y me a quedado el codigo asi:

Código (php) [Seleccionar]


<?php
    session_start
();
include "../Conexion/conexion.php";
$user=$_POST['user'];
$pass=$_POST['pass'];

$sql "SELECT * FROM usuarios WHERE `user`='$user' AND `pass`='$pass'";
    
$resultado=mysqli_query($mysqli$sql);

    
$filas=mysqli_num_rows($resultado);

    if(
$filas>0){
        
$_session['user'] = $user;
        
header('location: pruebas.php');
    }
    else{
        echo(
"no entro");
    }
?>



y en el pruebas le e puesto que mejor me imprima la variable:

Código (php) [Seleccionar]

<?php 
session_start
();
$hola$_session['user'];
echo(
$hola);
?>



y lo que me sale al realizar la peticion es lo siguiente

Warning: main(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Chicago' for '-5.0/DST' instead in C:\WebServer\Apache2.2\htdocs\SDNIR\Aplicacion\pruebas.php on line 3 Notice: Undefined variable: _session in C:\WebServer\Apache2.2\htdocs\SDNIR\Aplicacion\pruebas.php on line 3

no tengo idea del porque pasa esto en otra pagina que abia estado haciendo utilizava de esta misma manera la funcion session y no me causaba ningun problema

engel lex

si no entiendes el error usa traductor....
Warning: main(): It is not safe to rely on the system's timezone settings.
Advertencia: main(): No es seguro confiar en la configuración timezone del sistema

no tienes declarado un timezone o lo escribiste mal... y session_start lo solicita

el otro error que tienes ahí pegado

Notice: Undefined variable: _session in C:\WebServer\Apache2.2\htdocs\SDNIR\Aplicacion\pruebas.php on line 3

no es  $_session, es $_SESSION
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ramon123099

 :D :D :D :o :o :o ya funciono muchas gracias por tu ayuda