Visualizzazione risultati 1 fino 11 di 11

Discussione: Quale codice per sessioni?

  1. #1
    Guest

    Predefinito Quale codice per sessioni?

    Ho notato che se metto il codice così mi mantiene le sessioni in caso di errore

    Codice PHP:
    value="<?php echo $nome; ?>"
    Se invece metto così, non le mantiene

    Codice PHP:
    value="<?php if(isset($_SESSION['nome'])){ echo $_SESSION['nome'];}else{ echo "";} ?>"
    Non è meglio quest'ultimo?

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

    Predefinito

    Cosa significa che mantiene le sessioni in caso di errore? Il primo esempio non usa le sessioni.

    Ciao!

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Cosa significa che mantiene le sessioni in caso di errore? Il primo esempio non usa le sessioni.

    Ciao!
    Intendo dire che se nel form c'è errore, all'invio torna indietro. Perciò è meglio il secondo?

  4. #4
    Guest

    Predefinito

    Ho capito quello che intendi anche se non proprio al volo ;)
    Dipende da quello che vuoi ottenere, la sessione attiva nel 90% dei casi indica un utente loggato, oppure che hai registrato dei dati che ti servono, se non riesci a reperire il $_SESSION['nome'] e quella variabile sei sicuro che sia presente e tu vuoi che sia presente allora è corretto dare un errore, magari un
    Codice PHP:
    <?php if(isset($_SESSION['nome'])){ echo $_SESSION['nome'];}else{
    echo
    "<script> Ehi! non sono riuscito a estrapolare i dati perchè sembri non essere loggato! Slogga e rilogga e poi riesegui l'azione! </script>";
    }
    ?>
    Se invece non ti importa che l'input sia vuoto, e accerti che per la logica effettivamente potrebbe verificarsi il caso che la session sia vuota, allora si, è più corretta la 2° soluzione (o almeno per me lo e!).
    Ultima modifica di pxy : 01-09-2014 alle ore 10.19.05

  5. #5
    Guest

    Predefinito

    Non deve esserci nessun utente loggato, semplicemente, se lui mi manda un messaggio tramite form che non è compilato correttamente, il form torna indietro con il messaggio alert, ma i campi obbligatori e non, devono rimanere compilati.

    Puoi provare, entra a destra Contatti e clicca sulla busta-lettera, compila i campi e il catcha errato, ti torna il form vuoto.
    http://gruppoalveo.it/
    Ultima modifica di gruppoalveo : 01-09-2014 alle ore 13.53.30

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

    Predefinito

    Puoi scrivere la parte di creazione/assegnamento delle variabili di sessione con i dati del form?

    Ciao!

  7. #7
    Guest

    Predefinito

    Codice PHP:
    <?php
    if(isset($_POST['invia'])) {
    $data_locale = time();
    $nome = stripslashes(htmlspecialchars(ucfirst(trim($_POST['nome']))));
    $citta = stripslashes(htmlspecialchars(ucfirst(trim($_POST['citta']))));
    $suoemail = htmlspecialchars(strtolower($_POST['suoemail']));
    $suoemail = str_replace(" ","",$suoemail); // Toglie gli spazi interni nella email
    $messaggio = stripslashes(htmlspecialchars(ucfirst(trim($_POST['messaggio']))));
    $validator = htmlspecialchars(trim($_POST['validator']));

    $_SESSION['nome'] = $nome;
    $_SESSION['citta'] = $citta;
    $_SESSION['suoemail'] = $suoemail;
    $_SESSION['messaggio'] = $messaggio;

    //Nome (Campo obbligatorio)
    if(!empty($_POST['invia'])) {
    if (
    $nome == "") {
    echo
    "Inserire il Nome";
    }
    }
    ?>


    <...value="<?php if(isset($_SESSION['nome'])){ echo $_SESSION['nome'];}else{ echo "";} ?>"…>
    Ultima modifica di alemoppo : 01-09-2014 alle ore 14.39.47 Motivo: aggiunta <?php ... ?>

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

    Predefinito

    Questo codice non mi è nuovo, e tempo fa avevo chiesto se avevi messo la session_start(), e mi avevi risposto che c'era. Rifaccio la domanda: hai messo la session_start()?

    p.s: ora non ricordo (è da tanto che non scrivo in php) ma, visto che le sessioni sono scritte sì lato server ma hanno il sid lato client (cookie), mi sembra che prima che puoi utilizzare le sessioni, dovresti riaggiornar la pagina.

    Comunque in quel codice sopra non capisco perché utilizzare le sessioni.. Puoi benissimo riutilizzare $nome, $cognome, etc....

    p.s: comunque cambierei:
    Codice PHP:
    if(!empty($_POST['invia'])) {
    if (
    $nome == "") {
    echo
    "Inserire il Nome";
    }
    }
    In, semplicemente:
    Codice PHP:
    if(empty($nome))
    echo
    'Inserire il Nome';
    Ciao!
    Ultima modifica di alemoppo : 01-09-2014 alle ore 14.45.33

  9. #9
    Guest

    Predefinito

    Si, c'è session start.

    Ora ho tolto questo e da tutti i codici if(isset($_POST['invia'])) { e messo così value="<?php $nome ?>" ma da lo stesso risultato

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

    Predefinito

    Codice PHP:
    <?php $home ?>
    non fa nulla.

    Se vuoi stampare una stringa, o scrivi:
    Codice PHP:
    <?php echo $home ?>
    Oppure, nella forma compatta:
    Codice PHP:
    <?= $home ?>
    Occhio che comunque dovresti usare isset(), perché quando un utente arriva per la prima volta nella pagina (e quindi non ha inviato i dati precedentemente), quella variabile non esiste.

    Ciao!

  11. #11
    Guest

    Predefinito

    Non so più che fare, sia così <?php if(isset($_SESSION['nome'])){ echo $_SESSION['nome'];}else{ echo "";} ?> che così <?php echo $home ?> non funzionano

Regole di scrittura

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