Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    86

    Sessioni che necessitano di cookie abilitati??

    Ciao a tutti

    vi anticipo che sono un novellino della programmazione php e che quindi la mia domanda potrà sembrarvi sciocca..

    Sto creando una semplice area ad accesso riservato con le sessioni, il problema è che se nel browser disabilito i cookie l'applicazione non mi consente più di entrare..

    io sapevo che lavorando con le sessioni non c'è questa ncessità..

    vi posto il codice certo del fatto che capiate il mio errore..

    login.php - riceve le credenziali di accesso e le manda a redirect.php
    --------------------
    Codice PHP:
     <?php
    <table width="500" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC">
         <
    tr>
             <
    td>
              <
    form method="post" action="redirect.php">
             
                <
    div align="center"><span class="Stile1">

                
    USERID: </span><input name="userid" type="text" size="20">
                
                <
    span class="Stile1"
                
    PASSWORD:</span><input type="password" name="password" size="20">

                 <
    input type="submit" value="Login" name="submit" />
                </
    div>
              </
    form></td>
    </
    tr> </table>
    require (
    'bottom.inc');
    ?>

    redirect.php - controlla che le credenziali di accesso siano corrette e rimanda alla pagina protetta
    -------------------------------------
    Codice PHP:
     <?php

    // Abilito le sessioni
    session_start();


    // Creo la funzione per fare il check dello USERID e della PASSWORD
    function check_user($usr,$pws) {
    $textfile fopen("utenti.txt""r");

    while ( 
    $rigafile fgets($textfile,1024) ) {
    $campiriga explode("|"$rigafile);
    $file_username $campiriga[4];
    $file_password $campiriga[5];
    if ((
    $file_username == $usr) && ($file_password == $pws)) {
    return 
    0;
    }
    }
    return 
    1;
    fclose($textfile);
    }


    // Controllo che UserID e Password siano corretti; 
    // se lo sono vai alla Pagina Protetta, se UserID o Password non sono corretti visualizza "non sei autorizzato ad entrare in quest'area"

    $password $_POST["password"];
    $username $_POST["userid"];

    if (
    check_user($username,$password)) {
    require (
    'top.inc');
    echo 
    "<div align='center'>Non sei autorizzato ad entrare in quest'area</div>

          <div align='center'>Torna alla pagina di <a href=login.php>login</a></div>"
    ;
    require (
    'bottom.inc');
    }


    else {

    $_SESSION['autorizzazione']=1;

    header("Location: [url]http://miosito.altervista.org/Php/Guild/sessioni/Guild.php[/url]");
    };
    ?>
    Guild.php è l'area protetta
    ----------------------------
    Codice PHP:
     <?php

    // Abilito le sessioni
    session_start();

    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Pragma: no-cache");



    if (isset(
    $_SESSION['autorizzazione']) || $_SESSION['autorizzazione'] == 1){
    require (
    'top.inc');
    CORPO DELLA PAGINA PROTETTA
    require ('bottom.inc');
    }

    else {

    require (
    'top.inc');
    echo 
    "<div align='center'>Non sei autorizzato ad entrare in quest'area</div>

          <div align='center'>Torna alla pagina di <a href=login.php>login</a></div>"
    ;
    require (
    'bottom.inc');

    }
    ?>
    il tutto funziona bene ma solo se i cookie sono abilitati

    se li disabilito e faccio il login, ricevo il messaggio di errore "Non sei autorizzato ad entrare in quest'area" previsto nel caso la sessione fosse inesistente o sbagliata..

    Avete qualche idea? immagino sia una mia cavolata ma non capisco dove sbaglio..

  2. #2
    Per utilizzare le sessioni senza i cookie dei abilitare il supporto per i trans-sid oppure riscrivere URL e form per propagare il SID.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    86
    Innanzi tutto ti ringrazio per la risposta, non è la prima volta che mi dai una mano.

    Potresti darmi qualche indicazione su come fare praticamente? non ho idea di come si abiliti il supporto per i trans-sid oppure come si f a riscrivere URL e form per propagare il SID...

    Altra curiosità: ma se anche con le sessioni si usano i cookie quale è il loro vantaggio rispetto ai semplici cookie?

    grazie mille per il tuo aiuto, sto cercando di imparare il php con un videocorso ma è dura senza potersi confrontare con altri utenti...

  4. #4
    la sessione viene memorizzata sul server, il cookie sul client, quindi all'interno del browser...una volta che la sessione viene settata il server genera un cookie da inviare al client, all'interno del quale c'è il Session ID, che serve ad identificare la sessione (possono esserci piu sessioni avviate), pensa per ex a più utenti che effettuano il login simultaneamente.

    ciauz
    V.I.S.T.A. --> Virus Inside, Switch To Apple

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    86
    Gazie per la risposta, ora è un pò più chiaro il funzionamento.

    qualche idea su come si abilita il supporto per i trans-sid oppure su come si f a riscrivere URL e form per propagare il SID?

    scusami ma sono un pò inesperto su questi argomenti..

    per i vari link che collegano le pagine dell'area protetta basta modificare:

    Codice PHP:
     [url="altroscript.php"]Altro script[/url
    con

    Codice PHP:
     [url="altroscript.php?<?= SID ?>"]Altro script[/url]
    nel form invece cosa dovrei modificare??

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    86
    ho provato ad inserire nei link ?<?= SID ?> ma nn va..

    qualcuno ha qualche idea? come dovrei modificare il form di login?


    grazie mille

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    86
    RISOLTO!!

    In realtà funziona come mi avevate suggerito.. nn so perchè inizialmente pareva nn andasse..

    Grazie mille a tutti per l'aiuto che cme sempre mi avete dato!

  8. #8
    salve a tutti ho lo stesso problema di robysdc

    e' necessario fare un controllo per verificare se i cookies sono abilitati ?
    il discorso della Session ID e' chiaro da un punto di vista teorico ma non da quello pratico
    qualcuno mi puo passare un esempio pratico ?
    credo che la session id nasca nella pagina che che controlla l'esistenza dell'utente in db giusto ?

  9. #9
    Personalmente farei come fanno quasi tutti. Sotto il form del login metti un avviso che da quel punto in poi i cookie devono essere abilitati altrimenti niente ciccia per i gatti.

    Insomma un utente che non abilita jscript e cookie puo' serenamente andar a cantar in altra corte. In altre parole vorrebbe poter avere una connessione chiamiamola "privilegiata" per accedere a contenuti chiamiamoli "riservati" senza farsi riconoscere... ma quando mai....

    Per rispondere allo specifico di brutusin Non devi preoccuparti di come si rigira i cookie l'utente sono suoi e ne fa quello che gli pare. Semplicemente tu fai la tua strada. Se il cookie non viene memorizzato perche' l'utente non accetta i cookie tu lo rimandi ogno volta al login. Cosi' si puo' fare il famoso giochino di chi si stufa prima.

    Per default funziona pressapoco cosi': al sessione_start() il server genera un nuovo file di sessione ed invia l'id di sessione corrispondente al client tramite un cookie (di sessione) che rimane in memoria (del client). Elaborata la pagina il server serializza il contenuto di $_SESSION (altri modi tipo session_register li usava mia nonna) nel file di sessione teste' creato.

    Quando l'utente fa un cambio pagina o refresh inviera' al server questo cookie di sessione. Il server verifica se esiste il file di sessione che porta il nome dell'id di sessione (di solito con un prefisso sess_ ) ... ma attenzione: lo verifica quando lo script esegue session_start(), Se non esiste apre una sessione nuova e invia un nuovo cookie di sessione al client, se invece esiste recupera deserializzando i dati del file di sessione ricreando l'array $_SESSION e mette a disposizione dello script i dati recuperati. Ovviamente rispettando i tempi di validita' della sessione nel tempo e per fare cio' viene valutato data/ora corrente rispetto alla data/ora dell'ultimo accesso al file.

    Non ci sono solo i file per memorizzare questi dati di sessione, ma anche il db tipo sqlite, in pratica l'handler (il maneggiatore) puo' anche essere definito dall'utente. Se lo sa fare. Siccome mancano le info su come fare si puo' presumere non si sia incoraggiati a questa pratica. Facile da capire: se e' personale poi devi gestire tutto tu e non addebitare problemi vari al php.

    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.