Visualizzazione risultati 1 fino 20 di 20

Discussione: Nascondere div se l'utente non è loggato

  1. #1
    Guest

    Predefinito Nascondere div se l'utente non è loggato

    Salve a tutti!
    volevo chiedervi se è possibile nascondere un div se l'utente non esegue il login.
    Ho provato a scrivere il codice ma sembra non funzionare...infatti mi mostra la pagina completamente bianca
    Codice PHP:
    <?php
    if (session_id() == "")
    {
    session_start();
    }

    if (!isset(
    $_SESSION['username']))
    {
    ?>
    <script language="javascript">
    alert("ok");
    document.getElementByClass("login").style.display = "none";

    </script>
    <?php

    exit;
    }

    if (isset(
    $_SESSION['expires_by']))
    {
    $expires_by = intval($_SESSION['expires_by']);
    if (
    time() < $expires_by)
    {
    $_SESSION['expires_by'] = time() + intval($_SESSION['expires_timeout']);
    }
    else
    {
    unset(
    $_SESSION['username']);
    unset(
    $_SESSION['expires_by']);
    unset(
    $_SESSION['expires_timeout']);
    ?>
    <script language="javascript">
    alert("ok");
    document.getElementByClass("login").style.display = "none";

    </script>
    <?php

    exit;
    }
    }
    ?>
    Cosa ce di sbagliato?
    Ultima modifica di tuttitrucchiInvitaAmici : 04-06-2017 alle ore 16.28.48

  2. #2
    socialedge non è connesso Utente giovane
    Data registrazione
    24-07-2016
    Residenza
    Aversa
    Messaggi
    60

    Predefinito

    Codice PHP:
    session_start(); //Avvio la sessione
    require_once 'config.php'; //Richiedo il file per la connessione al database

    if( !isset($_SESSION['user']) ) { //Se l'utente non è loggato
    header("Location: $baseurl"); //lo rimando alla home
    exit; //e interrompo lo script
    }
    Prova questo

  3. #3
    Guest

    Predefinito

    Ma io non volevo reindirizzarlo sulla home...volevo visualizzare un div nascosto!

  4. #4
    socialedge non è connesso Utente giovane
    Data registrazione
    24-07-2016
    Residenza
    Aversa
    Messaggi
    60

    Predefinito

    struttura tutto in due pagine rende il caricamento più veloce.
    Almeno questo è il mio consiglio.

  5. #5
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Con un redirect il client deve ricaricare una nuova pagina, il che è tutt'altro che più veloce.

    La cosa più semplice è definire un predicato che indichi se l'utente è connesso o meno:
    Codice PHP:
    function is_logged() {
    if (!isset(
    $_SESSION['username'])) {
    return
    false;
    }
    ...
    }
    ed usarla per deciedere se mostrare o meno certi contenuti:
    Codice PHP:
    <?php if (is_logged()): ?>
    <div>utente collegato</div>
    <?php else: ?>
    <div>utente non collegato</div>
    <?php endif; ?>
    Oppure per assegnare classi diverse (in modo che sia poi il CSS a determinarne la visualizzazione):
    Codice PHP:
    <div class="<?php echo (is_logged() ? "visible" : "hidden"); ?>">
    ...
    </div>

  6. #6
    Guest

    Predefinito

    ok...il problema adesso è che il codice php che ho scritto all'inizio non è corretto per individuare se l'utente è loggato.
    Ultima modifica di tuttitrucchiInvitaAmici : 05-06-2017 alle ore 16.50.31

  7. #7
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Dipende da come hai gestito le sessioni.
    Ad occhio sembra che controllare che $_SESSION['username'] sia sufficiente a stabilire se un utente sia autenticato...

    Riguardo al resto del codice, se credi che ci siano errori dovresti provare ad inserire
    Codice PHP:
    error_reporing(E_ALL);
    all'inizio dello script, in modo da avere qualche informazione in più.

  8. #8
    Guest

    Predefinito

    ok ho risolto facendo piccole modifiche al codice :)
    volevo introdurre il tuo codice:
    Codice PHP:
    <div class="<?php echo (is_logged() ? "visible" : "hidden"); ?>">
    ...
    </div>
    qui:

    Codice PHP:
    <article id="post-46377" class="post-46377 post type-post status-publish format-standard has-post-thumbnail hentry category-cura category-divertimento category-download tag-download-2 tag-ita tag-pc tag-prey <?php echo (!is_logged() ? "visible" : "hidden"); ?>" itemscope="" itemtype="http://schema.org/Article">
    è giusto cosi?
    In modo tale che se non ha eseguito il login non visualizza l'articolo

  9. #9
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Togli la negazione prima di is_logged() altrimenti fa il contrario

    Dovrebbe diventare così:
    Codice PHP:
    <article id="post-46377" class="post-46377 post type-post status-publish format-standard has-post-thumbnail hentry category-cura category-divertimento category-download tag-download-2 tag-ita tag-pc tag-prey <?php echo (is_logged() ? "visible" : "hidden"); ?>" itemscope="" itemtype="http://schema.org/Article">
    Ricorda che questo si limita ad aggiungere una classe chiamata "visible" o "hidden", per avere l'effetto finale devi indicare nel CSS:
    Codice:
    .visible {
        display: block;
    }
    .hidden {
        display: none;
    }

  10. #10
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Hai un link ad una pagina col problema?

  11. #11
    Guest

  12. #12
    Guest

    Predefinito

    La funzione la richiama correttamente...il problema sono i css

  13. #13
    Guest

    Predefinito

    Non so come mai ma al posto di inserire hidden o visible sull if, metto style="display:none" riesce a leggerlo

  14. #14
    Guest

    Predefinito

    ho provato in questo modo:
    Codice PHP:
    <?php if (!is_logged()){?>style="display:none"<?php } ?>
    però analizzando la pagina non me lo rileva come stile css.
    Ecco come me lo interpreta:
    host image
    Ultima modifica di tuttitrucchiInvitaAmici : 05-06-2017 alle ore 18.50.30

  15. #15
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Se noti bene il tag style è finito dentro al tag class:
    Codice:
    class="post-46377 post ... style="display: none""
    mentre dovrebbe essere
    Codice:
    class="post-46377 post ..". style="display: none"

  16. #16
    Guest

    Predefinito

    Quindi...cosa devo modificare?

  17. #17
    Guest

    Predefinito

    Aggiungo un doppio apice prima di style?

  18. #18
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Sì, esatto.

  19. #19
    Guest

    Predefinito

    Funziona!!! Grazie mille :)
    Un ultima domanda...per rendere la funzione accessibile in tutta la pagina la inserisco nel body?

  20. #20
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    La funzione is_logged()? Potresti metterla in un file PHP a parte ed includerlo dove necessario, per esempio prima dell'HTML stesso.

Regole di scrittura

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