Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Akito
    Registrato dal
    Nov 2005
    Messaggi
    101

    Differenza tra $PHPSESSID e session_id()

    Ciao a tutti,
    come avrete già capito dal titolo di questo post, ho riscontrato una piccola ma essenziale differenza tra la variabile $PHPSESSID e la funzione session_id() di PHP.
    Vi spiego in breve cosa mi è successo.
    Stò sviluppando del codice PHP per tenere traccia degli accessi fatti dagli utenti nelle pagine di un sito, la prima riga di ogni pagina del sito è session_start().

    Ora, se apro un browser e carico la mia pagina, le due variabili dovrebbero settarsi in automatico con il valore (ID della nuova sessione creata) generato dalla funzione session_start() ma, ciò accade solo per session_id() mentre $PHPSESSID resta una stringa vuota.

    Qualcuno si era già accorto di questa strana cosa/errore ???
    $PHPSESSID è forse una variabile obsoleta o deprecata e quindi la stanno trascurando ???

    Non ho trovato alcun articolo a riguardo e l'help ufficiale di PHP non dice nulla (o non ho ancora trovato la pagina che ne parla).

    Io lo considero un baco di PHP visto che se faccio partire una sessione e $PHPSESSID non viene impostata correttamente NON VA AFFATTO BENE !!

    Datemi la vostra opinione.

    Ciao
    Akito
    W l'open source!!

  2. #2
    Utente di HTML.it L'avatar di Akito
    Registrato dal
    Nov 2005
    Messaggi
    101
    Nessuno sa dirmi niente in proposito ??
    Strano, le sessioni le usano tutti....

    Ciao
    Akito
    W l'open source!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    116
    Giustamente come dici tu session_start() lo inserisco all'inizio di ogni pagina...

    Come hai posto e scitto la domanda su $PHPSESSID sembra che tu voglia recuperare la sessione e metterla in una variabile.
    $PHPSESSID scritta così è una semplice variabile che assume valore null se non inizializzata.
    Io credo che tu voglia riferirti a questo tipo di variabile $_SESSION['nome_variabile'] e non a $PHPSESSID

  4. #4
    Utente di HTML.it L'avatar di Akito
    Registrato dal
    Nov 2005
    Messaggi
    101
    no,no mi riferisco proprio alla variabile $PHPSESSID.
    Prova questo codice e dimmi che ne deduci:

    Codice PHP:
    <?php
    if(session_id()=="") {
      
    session_start();
    }
    include 
    "includes/contaccessi.php";

    function 
    ConnectDB() {
      
    $dbhost "localhost:3306";
      
    $dbname "visitesitodb";
      
    $dbuser "root";
      
    $dbpass "root";
      
    $conn mysql_connect($dbhost,$dbuser,$dbpass);
      if(
    $conn) {
        
    // CONNESSIONA RIUSCITA
        
    if(mysql_select_db($dbname,$conn)) {
          
    // DATABASE SELEZIONATO
          
    return $conn;
        } else {
          return 
    false;
        }
      } else {
        return 
    false;
      }
    }

    function 
    contaccessi() {
      
    $str "

    PAGINA GIA' VISITATA</p>"
    ;

      
    $conn ConnectDB();
      if(
    $conn) {

        
    $sql2 "SELECT COUNT(*) FROM visitesito WHERE ipaddress='".addslashes($_SERVER['REMOTE_ADDR'])."' AND requesturi='".addslashes($_SERVER['REQUEST_URI'])."' AND sessionid='".addslashes(session_id())."'";
        
    $res2 mysql_query($sql2$conn);
        if(
    $res2) {
          if(
    mysql_num_rows($res2)==1) {
            
    $riga mysql_fetch_row($res2);
            if(
    $riga[0]==0) {


              
    $sql "INSERT INTO visitesito (oraaccesso, ipaddress, requesturi, useragent, sessionid) VALUES (NOW(), '".addslashes($_SERVER['REMOTE_ADDR'])."', '".addslashes($_SERVER['REQUEST_URI'])."', '".addslashes($_SERVER['HTTP_USER_AGENT'])."', '".addslashes(session_id())."')";
              
    $res mysql_query($sql$conn);
              if(
    $res) {
                if(
    mysql_affected_rows($conn)==1) {
                  
    $str "

    PRIMA VISITA A QUESTA PAGINA</p>"
    ;
                }
              }

          
            }
          }
        }
      
      }
      return 
    $str;

    }

    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Untitled Document</title>
    </head>
    <body>
    <h1>Ecco i dati del pc da cui sei connesso</h1>


    <?php echo $str?><?php echo $pippo?></p>
    <h2>PC Utente</h2>


    <?php
    echo "REMOTE ADDR: ".$_SERVER['REMOTE_ADDR'];
    echo 
    "
    REMOTE PORT: "
    .$_SERVER['REMOTE_PORT'];
    echo 
    "
    REQUEST URI: "
    .$_SERVER['REQUEST_URI'];
    echo 
    "
    REQUEST METHOD: "
    .$_SERVER['REQUEST_METHOD'];
    echo 
    "
    HTTP USER AGENT: "
    .$_SERVER['HTTP_USER_AGENT'];
    echo 
    "
    PHP SESSION ID: "
    .$PHPSESSID;
    echo 
    "
    --- SESSION ID: "
    .session_id();
    echo 
    "
    PHP SELF: "
    .$_SERVER['PHP_SELF'];

    ?>
    </p>
    <h2>Server</h2>


    <?
    echo "SERVER ADMIN: ".$_SERVER['SERVER_ADMIN'];
    echo 
    "
    "
    .$_SERVER['SERVER_NAME'];
    echo 
    "
    "
    .$_SERVER['SERVER_PORT'];
    echo 
    "
    "
    .$_SERVER['SERVER_PROTOCOL'];
    echo 
    "
    "
    .$_SERVER['SERVER_SIGNATURE'];
    echo 
    "
    "
    .$_SERVER['SERVER_SOFTWARE'];

    echo 
    "
    DOCUMENT ROOT: "
    .$_SERVER['DOCUMENT_ROOT'];
    echo 
    "
    HTTP HOST: "
    .$_SERVER['HTTP_HOST'];

    echo 
    "
    HTTP CONNECTION: "
    .$_SERVER['HTTP_CONNECTION'];

    echo 
    "
    HTTP REFERER: "
    .$_SERVER['HTTP_REFERER'];
    echo 
    "
    QUERY STRING: "
    .$_SERVER['QUERY_STRING'];
    ?>
    </p>
    </body>
    </html>
    Avvia il browser e assicurati di avere i cookies attivi altrimenti session_start non funziona correttamente, quando carichi questo file la prima volta, la variabile $PHPSESSID non ha alcun valore, se ricarichi semplicemente la pagina, $PHPSESSID prende lo stesso valore di session_id().

    Dopo diverse prove sono giunto alla conclusione che $PHPSESSID non ha un valore al primo avvio perchè legato ad un cookies generato da PHP.

    Akito
    W l'open source!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.