Visualizzazione risultati 1 fino 9 di 9

Discussione: Problema con costrutto die()

  1. #1
    Guest

    Predefinito Problema con costrutto die()

    Salve ragazzi,
    ho un problema, sicuramente facile da risolvere per chi conosce bene il php.
    Praticamente ho una pagina php con un codice per controllare se è stato effettuato il Login dall 'utente
    If--->Echo--->Else---->DIE

    Come si sà, il Die blocca l'afflusso di dati, non fa eseguire le istruzioni successive.
    ED è PROPRIO QUESTO IL MIO PROBLEMA!

    eseguito il codice chiudo con ---> ?>

    e finisco il codice della mia pagina html inserendo il footer a fine pagine.
    Codice:
    <div id="imFooterBg">
    			<div id="imFooter">
    				
    			</div>
    		</div>
    		<span class="imHidden"><a href="#imGoToCont" title="Rileggi i contenuti della pagina">Torna ai contenuti</a> | <a href="#imGoToMenu" title="Naviga ancora nella pagina">Torna al menu</a></span>
    		
    	</body>
    </html>
    Ma non me lo visualizza perchè c'è il Die che mi da problemi! Non mi dite di sostituire il Die con l'Echo perchè altrimenti non servirebbe a nulla il controllo xD

  2. #2
    Guest

    Predefinito

    Beh visto che nessuno di noi credo che al momento sappia leggere nel pensiero, e visto che hai postato una parte inutile di codice, se vuoi aiuto credo che dovresti postare la parte incriminata...

  3. #3
    Guest

    Predefinito

    Codice PHP:
    // VERIFICA ACCESSO
    if ($_SESSION['user'])
    echo (
    "Benvenuto!");
    else
    die (
    "Devi accedere per vedere questo contenuto");
    // FINE CODICE
    ?>
    Da questo punto in poi tutto il restante codice Html e php che segue non viene eseguito, che fare?

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Citazione Originalmente inviato da jackp8cento Visualizza messaggio
    Come si sà, il Die blocca l'afflusso di dati, non fa eseguire le istruzioni successive.
    Si, chiamare die() arresta l'esecuzione dello script in quel punto, mostrando eventualmente un messaggio. Se non vuoi che lo script si fermi in quel punto, ma vada avanti e mostri il resto della pagina, non devi usare die().

    Devi proprio usare echo per il messaggio, e poi modificare tutto il resto in modo da non visualizzare il contenuto che richiede il login, ma mostrare sempre il footer.

    Codice PHP:
    <header> bla bla bla </header>
    <?php
    if (utente_loggato())
    {
    // mostra la pagina
    } else {
    // gestisci l'utente non loggato
    // ad esempio messaggio di errore o form per il login
    }
    ?>
    <footer> bla bla bla </footer>
    Anche se sarebbe meglio controllare se l'utente è loggato prima di mandare codice html in output, e mostrare la pagina solo quando hai ormai deciso tutto il suo contenuto.
    Ultima modifica di dreadnaut : 10-02-2013 alle ore 22.03.15 Motivo: preceduto, rimuovo pezzo

  5. #5
    Guest

    Predefinito

    e se riscrivessi il codice html del footer che non viene visualizzato, all'interno del DIE? come sarebbe il risultato? (Ho provato e funziona)
    tipo:

    Codice PHP:
    else {
    die
    (
    "Effettua il Login

    <div id=\"imBtMn\"><a href=\"index.php\">Home Page</a> | <a href=\"registrati.php\">Registrati</a> | <a href=\"classifica.php\">Classifica</a> | <a href=\"risorse-utili.php\">Risorse Utili</a> | <a href=\"info.html\">Info</a> | <a href=\"imsitemap.html\">Mappa generale del sito</a></div> <div class=\"imClear\"></div>
    </div>
    </div>
    <div id=\"imFooterBg\">
    <div id=\"imFooter\">
    </div>
    </div>
    <span class=\"imHidden\"><a href=\"#imGoToCont\" title=\"Rileggi i contenuti della pagina\">Torna ai contenuti</a> | <a href=\"#imGoToMenu\" title=\"Naviga ancora nella pagina\">Torna al menu</a></span>
    </body>
    </html>
    "
    );

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

    Predefinito

    Certo che funziona, ma vuoi mettere la semplicità di una cosa del tipo:

    Codice PHP:
    <?php
    if(isset($_SESSION['user']))
    $loggato = true;
    else
    $loggato = false;
    ?>
    <html>
    <!--- resto della pagina-->
    <?= ($loggato)?'Benvenuto!':'Effettua il login' ?>

    <div id="imBtMn"><a href="index.php">Home Page</a> <?= ($loggato)?'':' |<a href="registrati.php">Registrati</a>'; ?> | <a href="classifica.php">Classifica</a> | <a href="risorse-utili.php">Risorse Utili</a> | <a href="info.html">Info</a> | <a href="imsitemap.html">Mappa generale del sito</a></div> <div class="imClear"></div>
    </div>
    </div>
    <div id="imFooterBg">
    <div id="imFooter">
    </div>
    </div>
    <span class="imHidden"><a href="#imGoToCont" title="Rileggi i contenuti della pagina">Torna ai contenuti</a> | <a href="#imGoToMenu" title="Naviga ancora nella pagina">Torna al menu</a></span>
    </body>
    </html>
    Invece di:
    Codice PHP:
    if(isset($_SESSION['user']))
    die(
    "Benvenuto!

    <div id=\"imBtMn\"><a href=\"index.php\">Home Page</a> | <a href=\"classifica.php\">Classifica</a> | <a href=\"risorse-utili.php\">Risorse Utili</a> | <a href=\"info.html\">Info</a> | <a href=\"imsitemap.html\">Mappa generale del sito</a></div> <div class=\"imClear\"></div>
    </div>
    </div>
    <div id=\"imFooterBg\">
    <div id=\"imFooter\">
    </div>
    </div>
    <span class=\"imHidden\"><a href=\"#imGoToCont\" title=\"Rileggi i contenuti della pagina\">Torna ai contenuti</a> | <a href=\"#imGoToMenu\" title=\"Naviga ancora nella pagina\">Torna al menu</a></span>
    </body>
    </html>
    "
    ); else {
    die
    (
    "Effettua il Login

    <div id=\"imBtMn\"><a href=\"index.php\">Home Page</a> | <a href=\"registrati.php\">Registrati</a> | <a href=\"classifica.php\">Classifica</a> | <a href=\"risorse-utili.php\">Risorse Utili</a> | <a href=\"info.html\">Info</a> | <a href=\"imsitemap.html\">Mappa generale del sito</a></div> <div class=\"imClear\"></div>
    </div>
    </div>
    <div id=\"imFooterBg\">
    <div id=\"imFooter\">
    </div>
    </div>
    <span class=\"imHidden\"><a href=\"#imGoToCont\" title=\"Rileggi i contenuti della pagina\">Torna ai contenuti</a> | <a href=\"#imGoToMenu\" title=\"Naviga ancora nella pagina\">Torna al menu</a></span>
    </body>
    </html>
    "
    );
    }
    ??

    ---
    Notare che
    Codice PHP:
    <?=
    equivale a
    Codice PHP:
    <?php echo
    Ciao!
    Ultima modifica di alemoppo : 11-02-2013 alle ore 01.58.31

  7. #7
    Guest

    Predefinito

    mmmm ok, ed in questo caso il punto interrogativo che metti dopo la variabile ($loggato), vuol dire che non sai il suo valore? quindi quello che segue come ad esempio:
    ($loggato)?'Benvenuto!':'Effettua il login'
    E' visualizzabile per chi ha effettuato il login o quello che non l ha effettuato?
    Questo invece che significa?? ---> '':'

  8. #8
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Il costrutto " ... ? ... : ... ", anche noto come l'operatore ternario, è l'equivalente di un if ... then ... else ....

    Invece di eseguire diversi blocchi di codice a seconda della condizione, restituisce due diversi valori. Ogni tanto è un'utile scorciatoia, ma può rendere il codice più difficile da leggere.

    Codice PHP:
    $messaggio = ($x > 10) ? 'Maggiore di 10' : 'Minore o uguale a 10';

    // o equivalente
    if ($x > 10)
    $messaggio = 'Maggiore di 10';
    else
    $messaggio = 'Minore o uguale a 10';

    echo
    $messaggio;

  9. #9
    Guest

    Predefinito

    infatti per me che non li ho mai utilizzato non è di facile lettura :S vabbè oggi pome mi metto all'opera e me lo imparo
    Grazie a tutti!

Regole di scrittura

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