Visualizzazione dei risultati da 1 a 4 su 4

Discussione: mantenere sessione

  1. #1
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837

    mantenere sessione

    ciao a tutti ho un problema da porvi, come faccio a conservare la sessione in altre pagine php(quindi un'altra pagian visibile solamente a chi è loggato).
    Praticamente ho creato la sessione:
    Codice PHP:
    <?php
    if(isset($_COOKIE['ordini']))
    {
        
    session_id($_COOKIE['ordini']);
        
    session_start();
        
    header("Cache-control: private");
    }
    else
    {
        
    session_start();
        
    $fine 60*60;
        
    setcookie('ordini',session_id(), time() + $fine'/');
        
    header("Cache-control: private");
    }
    if (isset(
    $_GET['action']))
    {    
        if(
    $_GET['action'] == 'logout')
        {
            unset(
    $_COOKIE['ordini']);
            
    $_SESSION = array();
            
    session_destroy();
        }
    }
    ?>
    poi una volta che una persona si autentica il ciò significa che mail e password sono presenti nel database può visualizzare una testo.Fin qui tutto ok:
    Codice PHP:
    <?php 
    if(isset($_POST['Submit']))
    {
      include(
    "db.class.php");
      
    $query"SELECT * FROM mario WHERE email='{$_POST['email']}' AND password='{$_POST['password']}'";  
      
    $db=new db;
      
    $db->select_db("ordini");
      
    $result=$db->query($query);
      
    $db->chiudi();
      if (
    mysql_num_rows($result)== 1)
      {
        
    $utente mysql_fetch_array($result);
            include(
    "ordini/config.inc.php");

    $db mysql_connect($db_host$db_user$db_password);
    if (
    $db == FALSE)
    die (
    "Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name$db)
    or die (
    "Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    $query "SELECT id FROM ordine ORDER BY id DESC LIMIT 0,50";

    $result mysql_query($query$db);

    while (
    $row mysql_fetch_array($result)) {
    echo 
    "<a href=\"view.php?id=$row[id]\">ordine n $row[id]</a>
    "
    ;}
    Ora una volta che si clicca sulla testo "ordine" come faccio ad attribuire a quella pagina php la stessa sessione?Grazie a tutti.

  2. #2
    per continuare la sessione devi mettere ad ogni inizio pagina protetta il session_start().

    Non ho letto lo script se non per grandi linee... quindi non mi riferisco a nulla se non a quanto ti ho appena detto sopra.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di mariox
    Registrato dal
    Nov 2006
    Messaggi
    837
    grazie x la tua rispota.
    ti volevo chiedere un'ulteriosre cosa: ho letto sulle guide di php.html.it che si possono gestire le autenticazioni tramite sessione e database:
    tabella sessioni
    Codice PHP:
    CREATE TABLE sessioni (
       
    uid CHAR(32NOT NULL,
       
    user_id INT UNSIGNED NOT NULL,
       
    creation_date INT UNSIGNED NOT NULL,
       
    INDEX(uid)
    ); 
    tabella utenti
    Codice PHP:
    CREATE TABLE utenti (
       
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
       
    name VARCHAR(30NOT NULL,
       
    surname VARCHAR(30NOT NULL,
       
    username VARCHAR(30NOT NULL,
       
    password CHAR(32NOT NULL,
       
    PRIMARY KEY(id),
       
    INDEX(usernamepassword)
    ); 
    ho scaricato lo script di gabriele farino e lo provato ad eseguire.
    Purtroppo mi da un notice relativo alla libreria auth.lib.php
    Notice: Undefined index: uid in linea 55
    Per caso sai di cosa si tratta?
    spero di essermi spiegato

  4. #4
    e' un notice dovuto alla programmazione di tempo addietro che non teneva conto se una variabile gia' esisteva oppure no.

    ora non saprei nello specifico (manca un tuo link al contesto) ma probabile che necessiti di un isset() oppure di un empty(). Tieni conto insomma della versione di php di quel tempo e che forse i NOTICE erano disabilitati nel php.ini mentre ora sono attivi e, giustamente, vanno corretti.

    Sempre che tu ci tenga ad avere uno script pulito. Molti massimalisti sostengono che i NOTICE sono inutili e che basta "togliere" la segnalazione per avere lo script pulito. Sappi che non e' affatto vero. Uno script con NOTICE e' uno script con bug. Magari nascosti, ma con bug, che se nascosti e' pure peggio.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.