Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    194

    Sessioni, header su apache 2

    Un saluto a tutti.
    Ho bisogno di un grosso aiuto poichè sto migrando su un nuovo server un sistema di login per un sito web solo che ho dei problemi spaventosi poichè non funziona più.
    Sul nuovo server è installato PHP Version 4.3.9 con Apache/2.0.52 (CentOS), mentre prima ero su PHP Version 4.2.2 e Apache/1.3.22.
    Immagino (immagino solamente) che alcune caratteristiche debbano essere variate nei seguenti script per far si che tutto funzioni nuovamente, ma ho rovistato come un forsennato il forum ma nulla da fare. Prove su prove e sono bloccato.
    Vi elenco brevemente i punti fondamentali dello script che uso:

    1) Form di login con username e password inviati con POST alla pagina autentica.php e penso che fino a qua non ci sia alcun dubbio.

    2) La pagina autentica.php mi verifica a db (mysql) se lo username e passowrd sono corretti e quindi mi da un responso. Vorrei precisare che ad inizio pagina inserisco
    Codice PHP:
    <? session_start(); ?>
    Codice PHP:
    <?
    require ("require/connessione.php");

    $username $_POST ['username']; //Otteniamo l'username 
    $password $_POST ['password']; //Otteniamo la password 
    $active $_POST ['active'];    //Ottengo se l'utente è attivo

    $query "SELECT * FROM utenti WHERE username = '$username'"//Impostiamo la query... 
    $risultato mysql_query($query); 
    $riga mysql_fetch_array($risultato); 

    if(
    mysql_num_rows($risultato) == || $riga['password'] != $password || $riga['active'] != 1//Se l'username o la password sono sbagliati o utente inattivo... 

    echo 
    "<div align=center><font size=1 face=verdana>Username/Password errati o Utente non attivo

    [url='login.php']Torna al Login[/url]</font></div>"
    //..mandiamo l'errore e terminiamo lo script 
    //header("Location: login.php");

    else 
    //Altrimenti salvo le sessioni e le uso per accedere alla pagina garticoli.php
    {
    $HTTP_SESSION_VARS['username'] = $username;
    $HTTP_SESSION_VARS['password'] = $password

    echo 
    "Benvenuto $username [url='garticoli.php']clicca qui per accedere[/url]"//Diamo poi un messaggio di conferma all'utente
    }  
    mysql_close();

    ?>
    fino qui effettivamente riesco a loggarmi e tutto va bene, ma nel momento in cui clicco sul link che porta alla pagina garticoli.php mi riporta al login.php poichè sulla pagina garticoli.php in alto ho inserito:

    Codice PHP:
    <? 
    session_start
    (); 
    //se la variabile di sessione non e' settata faccio un redirect alla pagina di login 
    if (!$_SESSION[username]) header ("Location: login.php");
    ?>
    Quindi mi chiedo perchè la variabile di sessione non è settata e mi riporta al login.php mentre invece io l'ho settata nella pagina autentica.php...

    Qualcuno ha avuto il mio stesso problema o conosce la soluzione?

    Grazie mille...
    Andrea

  2. #2

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    194
    Cavolaccio... che post lungo quello della pillola...
    Sto leggendo....
    Grazie per la dritta!
    Ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    194
    Ebbene ci ho provato...

    Leggendo la pillola si arriva alla conclusione che utilizzando questa parte di codice su tutte le pagine si dovrebbe risolvere il problema della compatibilità:

    Codice PHP:
    if(!isset($_SERVER) OR !$_SERVER OR !is_array($_SERVER) OR count(array_diff($_SERVER$HTTP_SERVER_VARS))){ 
    $_GET = &$HTTP_GET_VARS
    $_POST = &$HTTP_POST_VARS
    $_SERVER = &$HTTP_SERVER_VARS
    $_ENV = &$HTTP_ENV_VARS
    $_COOKIE = &$HTTP_COOKIE_VARS
    $_FILES = &$HTTP_POST_FILES
    $_SESSION = &$HTTP_SESSION_VARS

    eppure a me continua a dare sempre lo stesso problema.
    Qualcuno sa darmi più indicazioni?

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    194
    Da quello che ho compreso nella mia pagina autentica.php l'unica parte da modificare è questa o sbaglio?

    Codice PHP:
    $HTTP_SESSION_VARS['username'] = $username
    $HTTP_SESSION_VARS['password'] = $password
    che ho modificato con:

    Codice PHP:
    $_SESSION['username'] = $username
    $_SESSION['password'] = $password
    Cavolo... non funziona ancora...
    C'è chi mi può indirizzare sulla strada giusta?

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    194
    proprio nessuno?

  7. #7
    potrebbe essere che non recuperi la sessione. Le indicazioni sono troppo vaghe.

    Mentre ci sei metti il tag php esteso <?php , nelle versioni piu' recenti di php viene richiesto come default.

    Stai anche attento ad inserire le apici agli indici associativi. Come minimo riceveresti un NOTICE ed al peggio non ti funzionerebbe lo script...

    if (!$_SESSION[username]) header ("Location: login.php");

    sarebbe anche meglio usare empty().
    codice:
    if (empty($_SESSION['username']))  { 
          header ("Location: login.php");   }
    e' poi abbastanza discutibile la procedura di identificazione. Ma se piace a te, a me ancor di piu'.

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

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    194
    Ti ringrazio per la risposta,
    ora faccio sue prove su quello che mi dici tu. Ed infatti sembra proprio che non recuperi la sessione. Se vuoi indicarmi come sarebbe meglio effettuare l'autenticazione, ne sarei felice...
    Migliorarsi è sempre bello!
    Mi dai due indicazioni in più?
    ti ringrazio
    Andrea

  9. #9
    Non c'e' un modo "migliore", c'e' un modo corretto.

    Per esempio nel tuo script, prima recuperi i dati da POST "poi" controlli se i dati esistono addirittura "dopo" aver fatto la query. Cambia l'ordine:

    prima controlla se POST e' valorizzato, poi farai la query. Come contenuto: chi e' che decide se l'utente e' attivo? L'utente stesso? Se e' un dato nel db che ci fa in POST?

    Sarebbe poi opportuno che la password nel db fosse "hashata", cioe' non in chiaro per evidente ragioni di privacy e sicurezza.

    In caso di autenticazione riuscita invialo direttamente alla pagina senza farlo cliccare sul link.... e assicurati che almeno in fase di debug, di avere abilitato sia i NOTICE e sopratutto la stampa degli errori, altrimenti devi andare al buio a cercare i tuoi problemi. Per esempio potrebbe anche non essere corretto il path o assente la cartella dove scrivere il file di sessione....


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

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    194
    Ti ringrazio molto del tuo prezioso aiuto. Queste sessioni non vogliono comunque funzionare...
    ho difatti abilitato gli errori e sto cercando di venirne a capo.
    Ho notato però che nel php.ini è disabilitato (su OFF) il seguente valore: session.use_trans_sid

    La mia domanda è:
    se trans_sid è disabilitato e se ho anche i cookie disabilitati, le sessioni non possono funzionare vero?

    Ti ringrazio per la risposta.

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.