Visualizzazione risultati 1 fino 19 di 19

Discussione: sessioni

  1. #1
    Guest

    Predefinito sessioni

    salve , qualcuno può aiutarmi sulle sessioni ? io proprio non le capisco.. esempio , se ho un form di login con un form dove vanno inserite Nickname e password , poi nella pagina index.php cosa devo mettere? spero in un vostro aiuto grazie e buon pomeriggio
    sono arrivato a mettere il controllo , che nel caso il nick e la password non siano nel database non faccia entrare , nel caso esistesse ti fa entrare , però poi dopo un aggiornamento cade , perchè non c'è nulla di sessioni e nemmeno di cokie
    Ultima modifica di babilonia6 : 21-02-2009 alle ore 16.12.04

  2. #2
    Guest

    Predefinito

    Già provato con una buona guida al PHP e qualche ricerchina nel forum? :)

  3. #3
    Guest

    Predefinito

    fatta questa ricerca , qualcosina l'ho trovata :D ed ho fatto così
    Codice PHP:
    <?php
    session_start
    ();
    include(
    "database.php");
    $dbconnect = mysql_connect($dbhost,$dbuser,$dbpassword)or die("Impossibile stabilire una connessione con il database");
    mysql_select_db($dbname,$dbconnect) or die("Impossibile selezionare il database");
    $nickname= $_POST['nickname'];
    $password= $_POST['password'];
    $q=mysql_query("SELECT * FROM registrazioni WHERE nickname='".$nickname."' AND password='".$password."' LIMIT 1;",$dbconnect);
    if(
    mysql_num_rows($q)>0){
    $nickname=true;
    }else{
    $nickname=false;
    }
    if(
    $nickname){ $_SESSION['nickname']=$nickname; ?> continua codice della index.php}else{echo"Non sei loggato"; } ?>
    però continua a cadere ,, suppongo che manchino parecchie cose , esempio la durata della sessione ,, e altre cose che non so

  4. #4
    Guest

    Predefinito

    1° sono vietati gli up quindi ti conviene eliminare il messaggio prima che un mod ti metta un infrazione
    2° hai messo in tutte le pagine session_start();?
    3° le sessioni sono di default 20 minuti di durata non serve dire quanto devono durare
    4° metti un ?> troppo presto: controlla l'ultima riga del codice

    ciao ciao

  5. #5
    Guest

    Predefinito

    ho chiuso con ?> perchè faccio così io, esempio
    Codice PHP:
    <?php switch($page){
    case
    "esempio": ?>codice html e/o CSS <?php //esempio qua metto altro codice php // ?>
    qua ancora altro codice html e/o CSS <?php break; ?>
    così evito molti errori , comunque , non so cosa mettere e dove metterlo , qualcuno potrebbe farmi un esempio ? grazie e buona serata

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,981

    Predefinito

    session_start(); lo devi mettere in ogni pagina che usa l'array $_SESSION[]

  7. #7
    Guest

    Predefinito

    si ho capito molti fanno cosi compreso io ma nell'ultima riga del codice chiudi senza aprire
    ecco:
    Codice PHP:
    if($nickname){ $_SESSION['nickname']=$nickname; ?> continua codice della index.php}else{echo"Non sei loggato"; } ?>
    invece se fai una cosa corretta scrivi cosi:
    Codice PHP:
    if($nickname){ $_SESSION['nickname']=$nickname; ?> continua codice della index.php<? }else{echo"Non sei loggato"; } ?>
    capito?

  8. #8
    Guest

    Predefinito

    no e che non l'ho messo qua io :D sennò sulla pagina c'è tutto , comunque il codice che ho postato nel primo messaggio
    Codice PHP:
    <?php
    session_start
    ();
    include(
    "database.php");
    $dbconnect = mysql_connect($dbhost,$dbuser,$dbpassword)or die("Impossibile stabilire una connessione con il database");
    mysql_select_db($dbname,$dbconnect) or die("Impossibile selezionare il database");
    $nickname= $_POST['nickname'];
    $password= $_POST['password'];
    $q=mysql_query("SELECT * FROM registrazioni WHERE nickname='".$nickname."' AND password='".$password."' LIMIT 1;",$dbconnect);
    if(
    mysql_num_rows($q)>0){
    $nickname=true;
    }else{
    $nickname=false;
    }
    if(
    $nickname){ $_SESSION['nickname']=$nickname; ?> continua codice della index.php}else{echo"Non sei loggato"; } ?>
    è buono solo che devo mettere session_start(); sulle pagine dove è contenuto SESSION [] ? solo questo è il problema ? ora riprovo e vi faccio sapere Non funziona comunque
    Ultima modifica di babilonia6 : 21-02-2009 alle ore 21.17.30

  9. #9
    Guest

    Predefinito

    ragazzi leggendo una guida php ho notato ke bisogna creare una classe che gestisce il sistema delle sessioni e di creare un apposita tabella nel db...

    ma servono tutte e due le cose???

  10. #10
    Guest

    Predefinito

    no, quelle sono le sessioni sicure senza cookie,
    te devi sistemare il primo così:
    Codice PHP:
    <?php
    session_start
    ();
    include(
    "database.php");
    $dbconnect = mysql_connect($dbhost,$dbuser,$dbpassword)or die("Impossibile stabilire una connessione con il database");
    mysql_select_db($dbname,$dbconnect) or die("Impossibile selezionare il database");
    if(isset(
    $_POST['nickname']) && isset($_POST['password']) && !empty($_POST['nickname']) && !empty($_POST['password'])){
    $nickname= $_POST['nickname'];
    $password= $_POST['password'];
    $q=mysql_query("SELECT * FROM registrazioni WHERE nickname='".addslashes($nickname)."' AND password='".$password."' LIMIT 1;",$dbconnect);
    if(
    mysql_num_rows($q)>0){
    $_SESSION['user']=array();
    while(
    $riga=mysql_fetch_array($q)){
    $_SESSION['user']=$riga;
    }
    unset(
    $_SESSION['user']['password']); // per sicurezza rimuovo la variabile di sessione con la password
    }else{
    ?><div class="error">Errore! Nome utente e password non coincidono!</div><?
    }
    if(isset(
    $_SESSION['user'])){?> Messaggio di benvenuto<? }else{?>
    <div class="error">Errore! Non sei loggato!</div>
    <?
    }
    }else{
    ?>
    <div class="error">Errore! Non hai compilato i campi!</div>
    <?
    }
    ?>
    pagina2.php
    Codice PHP:
    <?
    session_start
    (); // prima di tutto

    if(isset($_SESSION['user'])){ ?>Bentornato <b><?= $_SESSION['user']['nickname'] ?>!<? }else{echo"Non sei loggato"; } ?>

  11. #11
    Guest

    Predefinito

    dato che non funziona ho provato a fare una cosa semplice , un form che manda con il post il nickname alla pagina2 , ed ho fatto
    Codice PHP:
    <?php session_start();
    $nickname= $_POST['nickname']; // POI //
    $_SESSION[]=$nickname;
    echo
    "Benvenuto ".$_SESSION['nickname'].""; ?>
    dove sbaglio ?

  12. #12
    Guest

    Predefinito

    semmai devi fare così:

    Codice PHP:
    <?php session_start();
    $nickname= $_POST['nickname']; // POI //
    $_SESSION['nickname']=$nickname;
    echo
    "Benvenuto ".$_SESSION['nickname'].""; ?>

  13. #13
    Guest

    Predefinito

    provato anche così però come aggiorni la pagina scompare il nome , questa cosa vale solo per una pagina
    Ultima modifica di babilonia6 : 22-02-2009 alle ore 15.51.16

  14. #14
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,981

    Predefinito

    Citazione Originalmente inviato da babilonia6 Visualizza messaggio
    provato anche così però come aggiorni la pagina scompare il nome
    Certo, perché non ha più il $_POST['nickname']. (di solito a me IE mi chiede se voglio riavere i dati di prima, ma se a te non lo chiede )

    Dovresti fare una pagina intermedia fatta di solo php (in questo modo, sul browser non la vedi nemmeno ).


    in definitiva:
    pagina "temporanea":
    Codice PHP:
    <?php session_start();
    $_SESSION['nickname']= $_POST['nickname'];
    header("Location: pagina1.php"); //mandi nella pagina di benvenuto
    ?>
    e poi pagina di benvenuto (pagina1.php) :
    Codice PHP:
    <?php session_start();
    echo
    "Benvenuto ".$_SESSION['nickname'].""; ?>

    CIAO!
    Ultima modifica di alemoppo : 22-02-2009 alle ore 20.12.05

  15. #15
    Guest

    Predefinito

    nemmeno questo funziona ho fatto come tu mi hai detto anche io avevo fatto una cosa simile , ma niente continua sempre a cadere

  16. #16
    Guest

    Predefinito

    A questo punto è impossibile, ci ho provato anche io e funziona perfettamente come dice alemoppo!
    Ti faccio un esempio:
    form.html
    Codice HTML:
    <form action="elabora.php" method="post">
    <input type="text" name="nick" />
    </form>
    elabora.php

    Codice PHP:
    <?php
    session_start
    ();
    $nick = $_POST['nick'];
    $_SESSION['user'] = $nick;
    Header("Location: protetta.php");
    ?>
    protetta.php

    Codice PHP:
    <?php
    session_start
    ();
    echo
    "Benvenuto " . $_SESSION['user'];
    ?>
    Così l'username dovrebbe essere visualizzato fino alla chiusura del browser...

  17. #17
    Guest

    Predefinito

    scusate ma serve proprio l'assegnamento alla variabile prima di passarla alla variabile di sessione?

  18. #18
    Guest

    Predefinito

    beh si solo questo funziona però io lo avevo messo in una pagina di chat , ovvero index.php e su invia.php ho messo un header , però ora faccioqualche modifica e vi faccio sapere sposto il controllo dei nick su invia.php sperando che funzioni , grazie // è proprio un bel casino , metto la sessione , mi annulla il controllo dei nick presenti nel database , metto il controllo mi annulla le sessioni n, tutto insieme non lo può fare no
    Ultima modifica di babilonia6 : 23-02-2009 alle ore 16.43.45

  19. #19
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,981

    Predefinito

    Citazione Originalmente inviato da Xsescott Visualizza messaggio
    scusate ma serve proprio l'assegnamento alla variabile prima di passarla alla variabile di sessione?
    No: non è necessaria. Infatti se guardi il mio post, non l'ho messa .

    Diciamo che mettendola si capisce meglio (in verità per me è uguale ), ma non mettendola è un ottimizzazione
    [ot]
    Anzi, non so se è un ottimizzazione: io ho "imparato"{che parolona!} a programmare con il C. In quel caso, il compilatore elimina la variabile "temporanea". Nel nostro caso, visto che è un linguaggio interpretato, sinceramente non so se il server la ottimizza (eliminandola). Comunque, con o senza, il server non la sente nemmeno una variabile in più e quindi si tratta soltanto di chiarezza del codice per il lettore
    [/ot]
    CIAO!
    Ultima modifica di alemoppo : 23-02-2009 alle ore 23.53.47

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •