Visualizzazione risultati 1 fino 20 di 20

Discussione: Nascondere div se l'utente non loggato

  1. #1
    Data registrazione
    16-07-2015
    Messaggi
    144

    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 17.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
    Data registrazione
    16-07-2015
    Messaggi
    144

    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,689

    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
    Data registrazione
    16-07-2015
    Messaggi
    144

    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 17.50.31

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

    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
    Data registrazione
    16-07-2015
    Messaggi
    144

    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,689

    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,689

    Predefinito

    Hai un link ad una pagina col problema?

  11. #11
    Data registrazione
    16-07-2015
    Messaggi
    144

  12. #12
    Data registrazione
    16-07-2015
    Messaggi
    144

    Predefinito

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

  13. #13
    Data registrazione
    16-07-2015
    Messaggi
    144

    Predefinito

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

  14. #14
    Data registrazione
    16-07-2015
    Messaggi
    144

    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 19.50.30

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

    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
    Data registrazione
    16-07-2015
    Messaggi
    144

    Predefinito

    Quindi...cosa devo modificare?

  17. #17
    Data registrazione
    16-07-2015
    Messaggi
    144

    Predefinito

    Aggiungo un doppio apice prima di style?

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

    Predefinito

    S, esatto.

  19. #19
    Data registrazione
    16-07-2015
    Messaggi
    144

    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,689

    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
  •