PHP - problema con session_start()

 
Vista:
sin imagen de perfil

problema con session_start()

Publicado por Eduardo (17 intervenciones) el 10/05/2020 15:37:11
Saludos expertos,

Tengo esta pagina:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<?php
 
    session_start() ;
 
    if ( isset($_GET["get_clicod"]) ) {
 
      $clie_codigo = $_GET["get_clicod"] ;
      $clie_xml  = 'clientes/' . $clie_codigo . '.xml' ;
      $list_csv  = 'lista.csv' ;
      $clie_data = simplexml_load_file( $clie_xml );
      $clie_dirs = ARRAY() ;
 
      if ( !$clie_data==false ) {
 
         require_once('funcion.php') ;
 
         $clie_ruc    = $clie_data->ruc ;
         $clie_nombre = $clie_data->razonsocial ;
         $clie_cat    = $clie_data->cat ;
         $clie_plan   = $clie_data->plan ;
         $clie_vend   = $clie_data->vend ;
         $clie_pp     = $clie_data->pp ;
 
         foreach( $clie_data->Direcc as $dirx ) {
 
            $clie_dirs[] = array( $dirx->DireccId , $dirx->DireccDesc ) ;
 
         }
 
         $list_prec = csv_to_array( $list_csv ) ;
         $list_pedi = array() ;
      echo "$list_prec = ".count($list_prec) ;   //<- AQUI TODO BIEN, ME MUESTRA LA LONG. DEL ARRAY
         $_SESSION["mem_clicod"]   = $clie_codigo ;
         $_SESSION["mem_cliruc"]   = $clie_ruc    ;
         $_SESSION["mem_clinom"]   = $clie_nombre ;
         $_SESSION["mem_clicat"]   = $clie_cat    ;
         $_SESSION["mem_clipla"]   = $clie_plan   ;
         $_SESSION["mem_cliven"]   = $clie_vend   ;
         $_SESSION["mem_clipp"]    = $clie_pp     ;
         $_SESSION["mem_clidir"]   = $clie_dirs   ;
         $_SESSION["mem_lispre"]   = $list_prec   ;
         $_SESSION["mem_lisped"]   = $list_pedi   ;
      }
 
    }else{
 
      $clie_codigo = $_SESSION["mem_clicod"]  ;   // <-AQUI TENGO EL PROBLEMA
      $clie_ruc    = $_SESSION["mem_cliruc"]  ;      // NO RECUPERA LAS VARIABLES DE SESSION
      $clie_nombre = $_SESSION["mem_clinom"]  ; // TODAS LA VARIABLES QUEDAN VACIAS
      $clie_cat    = $_SESSION["mem_clicat"]  ;
      $clie_plan   = $_SESSION["mem_clipla"]  ;
      $clie_vend   = $_SESSION["mem_cliven"]  ;
      $clie_pp     = $_SESSION["mem_clipp"]   ;
      $clie_dirs   = $_SESSION["mem_clidir"]  ;
      $list_prec   = $_SESSION["mem_lispre"]  ;
      $list_pedi   = $_SESSION["mem_lisped"]  ;
      echo "$list_prec = ".count($list_prec) ;        // <- ME LANZA CERO
    }
 
    $bus_lineas = ARRAY() ;
 
    if ( isset($_GET["buscad"]) ) {
 
       $bus_string = strtoupper( $_GET["buscad"] ) ;
       $bus_tipo   = $_GET["bustip"] ;
       $list_item  = -1 ;
 
       foreach ( $list_prec as list($pro_cod,$pro_nom,$pro_dci,$pro_mar,$pro_gpo,$pro_vvf,$pro_igv,$pro_pvf,$pro_stk,$prc_num,$prc_pak,$prc_dia,$prc_gpo,$prc_tba,$prc_tbb,$prc_tbc,$prc_tbd,$prc_tbe,$prc_tbf,$uni_ped,$es_nuevo) ) {
 
          $list_item++ ;
          $bus_found = strpos( $pro_nom , $bus_string ) ;
 
          if( $bus_found !== FALSE ){
             $bus_lineas[] = $list_item ;
          }
 
       }
 
    }
 
?>
 
<html lang="es">
<head>
 
	<meta charset="utf-8">
   <link rel="stylesheet" href="css/lista.css" />
	<title>Lista de precios FARMACOM</title>
 
</head>
 
 
<body>
 
   <div class="contenido">
 
      <div class="cabecera">
         <div class="cabelogo">
            <img src="imagen/logo.png" />
         </div>
         <div class="cabeclie">
            <?php
               echo "<label>RUC: <input class='clidat' type='text' name='cliecod' value='".$clie_ruc."' readonly></label><br/><br/>" ;
               echo "<label>Cliente: <input class='clidat' type='text' name='clienom' size='40' value='".$clie_nombre."' readonly></label>" ;
            ?>
         </div>
      </div>
 
      <div class="navegador">
         <a class="active" href="lista.php">Lista</a>
         <a href="pedido.php">Pedido</a>
         <a href="ofertas.php">Ofertas</a>
         <a href="catalogo.php">Cat&aacute;logo</a>
      </div>
 
      <div class="buscador">
         <form action='lista.php' method='get'>
            <input type='hidden' name='bustip' value='xnombre'>
            <input class="clidat" type="search" name="buscad" maxlength="40" placeholder="Buscar nombre del producto">
            <input type="submit" value="Buscar">
         </form>
      </div>
 
      <div class="listadeprecios">
         <?php include 'lista_carga.php' ; ?>
      </div>
 
      <div class="piedepagina">
         <p><center>Derechos de copia reservados 2020</center></p>
      </div>
 
   </div>
 
</body>
 
</html>

La primera vez que la pagina carga, todo bien, se cargan todas las variables, luego supuestamente grabo todas las variables de la session y cuando cargo de nuevo la pagina usando el form que esta en el <div> "buscador" todas las variables han desaparecido es como si NO hubiera session_start().

Agradeceré me ayuden con este tema.

Cordiales saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

problema con session_start()

Publicado por javier (547 intervenciones) el 10/05/2020 17:40:19
Hola,

recupera las variables de sesion antes de todos los IF que hay,
justo despues de session_start();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo
Val: 70
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

problema con session_start()

Publicado por Eduardo (13 intervenciones) el 10/05/2020 19:04:27
Hola Javier,

Gracias por tu tiempo, lo modifque y quedó así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php
 
    session_start() ;
    $clie_codigo = $_SESSION["mem_clicod"]  ;
    $clie_ruc    = $_SESSION["mem_cliruc"]  ;
    $clie_nombre = $_SESSION["mem_clinom"]  ;
    $clie_cat    = $_SESSION["mem_clicat"]  ;
    $clie_plan   = $_SESSION["mem_clipla"]  ;
    $clie_vend   = $_SESSION["mem_cliven"]  ;
    $clie_pp     = $_SESSION["mem_clipp"]   ;
    $clie_dirs   = $_SESSION["mem_clidir"]  ;
    $list_prec   = $_SESSION["mem_lispre"]  ;
    $list_pedi   = $_SESSION["mem_lisped"]  ;
    echo "list_prec: " . count($list_prec) ;   // <- SIGUE IGUAL, AQUI ME DEVUELVE CERO
 
    if ( isset($_GET["get_clicod"]) ) {
 
      $clie_codigo = $_GET["get_clicod"] ;
      $clie_xml  = 'clientes/' . $clie_codigo . '.xml' ;
      $list_csv  = 'lista.csv' ;
      $clie_data = simplexml_load_file( $clie_xml );
      $clie_dirs = ARRAY() ;
 
      if ( !$clie_data==false ) {
 
         require_once('funcion.php') ;
 
         $clie_ruc    = $clie_data->ruc ;
         $clie_nombre = $clie_data->razonsocial ;
         $clie_cat    = $clie_data->cat ;
         $clie_plan   = $clie_data->plan ;
         $clie_vend   = $clie_data->vend ;
         $clie_pp     = $clie_data->pp ;
 
         foreach( $clie_data->Direcc as $dirx ) {
 
            $clie_dirs[] = array( $dirx->DireccId , $dirx->DireccDesc ) ;
 
         }
 
         $list_prec = csv_to_array( $list_csv ) ;
         $list_pedi = array() ;
 
         $_SESSION["mem_clicod"]   = $clie_codigo ;
         $_SESSION["mem_cliruc"]   = $clie_ruc    ;
         $_SESSION["mem_clinom"]   = $clie_nombre ;
         $_SESSION["mem_clicat"]   = $clie_cat    ;
         $_SESSION["mem_clipla"]   = $clie_plan   ;
         $_SESSION["mem_cliven"]   = $clie_vend   ;
         $_SESSION["mem_clipp"]    = $clie_pp     ;
         $_SESSION["mem_clidir"]   = $clie_dirs   ;
         $_SESSION["mem_lispre"]   = $list_prec   ;
         $_SESSION["mem_lisped"]   = $list_pedi   ;
 
      }
    }
 
    $bus_lineas = ARRAY() ;
 
    if ( isset($_GET["buscad"]) ) {
 
       $bus_string = strtoupper( $_GET["buscad"] ) ;
       $bus_tipo   = $_GET["bustip"] ;
       $list_item  = -1 ;
 
       foreach ( $list_prec as list($pro_cod,$pro_nom,$pro_dci,$pro_mar,$pro_gpo,$pro_vvf,$pro_igv,$pro_pvf,$pro_stk,$prc_num,$prc_pak,$prc_dia,$prc_gpo,$prc_tba,$prc_tbb,$prc_tbc,$prc_tbd,$prc_tbe,$prc_tbf,$uni_ped,$es_nuevo) ) {
 
          $list_item++ ;
          $bus_found = strpos( $pro_nom , $bus_string ) ;
 
          if( $bus_found !== FALSE ){
             $bus_lineas[] = $list_item ;
          }
 
       }
 
    }
 
?>

Realice la modificación que me sugeriste, pero igual, sigue sin recuperar las variables. ¿ Que puede ser lo que estoy haciendo mal ?

Cordiales saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

problema con session_start()

Publicado por javier (547 intervenciones) el 11/05/2020 11:28:03
No se, no veo, en principio, nada mal

prueba de esta menera,a versi entra el if (isset( $_SESSION["mem_lispre"] y comprobamos si estan seteadas las variables de sesion.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
session_start() ;
 
if (isset( $_SESSION["mem_lispre"] )){
 
    $clie_codigo = $_SESSION["mem_clicod"]  ;
    $clie_ruc    = $_SESSION["mem_cliruc"]  ;
    $clie_nombre = $_SESSION["mem_clinom"]  ;
    $clie_cat    = $_SESSION["mem_clicat"]  ;
    $clie_plan   = $_SESSION["mem_clipla"]  ;
    $clie_vend   = $_SESSION["mem_cliven"]  ;
    $clie_pp     = $_SESSION["mem_clipp"]   ;
    $clie_dirs   = $_SESSION["mem_clidir"]  ;
    $list_prec   = $_SESSION["mem_lispre"]  ;
    $list_pedi   = $_SESSION["mem_lisped"]  ;
    echo "list_prec: " . count($list_prec) ;   // <- SIGUE IGUAL, AQUI ME DEVUELVE CERO
}

en estas dos lineas

1
2
$list_prec = csv_to_array( $list_csv ) ;// $list_csv ¿no estará vacia?
         $list_pedi = array() ; // aqui estas diciendo que list_pedi es un array pero vacio.

y despues haces

1
$_SESSION["mem_lisped"]   = $list_pedi   ;

por lo que $_SESSION["mem_lisped"] es un array vacio, por que tu has dicho que $list_pedi = array() ; a un array vacio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo
Val: 70
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

problema con session_start()

Publicado por Eduardo (13 intervenciones) el 12/05/2020 02:50:02
Hola Javier,

Agradecerte nuevamente tu tiempo, ya realice el descarte, por alguna extraña razón PHP no graba las variables.

Buscando en la red encontré este código para resolver un problema parecido al que tengo:

1
2
3
ini_set('session.save_path',realpath(dirname($_SERVER['DOCUMENT_ROOT']) . '/session'));
ini_set('session.gc_probability', 1);
session_start();

Con este código se redirige la creación de los archivos temporales que se crean para grabar las sesiones, el código funciona y hace lo suyo, lo extraño es que; al revisar la carpeta me doy con la sorpresa que efectivamente se crea el archivo, pero este ESTA VACIO.

Te paso una captura de pantalla del host:

ftp-session

Lo curioso es que si hago un echo luego de grabar todas las variables durante la primera carga de la pagina, las variable $SESSION si esta correctamente cargada con todos los valores, el problema es que PHP no las graba en el archivo de session solo lo crea en blanco.

Estoy reestructurando el código para que funcione sin session_start, si por favor tienes una luz sobre este tema te agradeceré tu valiosa ayuda.

Mil gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

problema con session_start()

Publicado por javier (547 intervenciones) el 12/05/2020 08:28:31
La verdad, no se que pasa, (tienes activadas las coockies en el navegador??)

Yo tengo un hosting gratuito en 000webhostapp, de los mas malos que hay y solo con poner session_start();

al principio del codigo todo va perfecto.

https://www.php.net/manual/es/function.session-start.php

https://diego.com.es/sesiones-en-php

AQUI, se habla de este tema y se soluciona de una manera rara.

https://www.lawebdelprogramador.com/foros/PHP/1622606-No-me-funcionan-las-sesiones-PHP-en-el-servidor.html

lee un poco de info en los enlaces, no hay que hacer nada especial para comenzar una sesion en PHP.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar