Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 19 su 19
  1. #11
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Grazie per l'aiuto!
    Ho fatto così:
    Codice PHP:
    <?php
    require "inc/verificalogin.php";
    require 
    "inc/soloadmin.php";
    ?>
    <html>
    <head> 
    ...
    posizionato in quel punto sicuramente non manda in output nulla nel caso un utente non è loggato oppure non è admin, questo intendevi?
    Sonia

  2. #12
    Ah, attenzione anche al fatto che gli header in teoria sono case sensitive e che Location usato con url relative dà sempre piccoli problemi, quindi:

    header("Location: http://www.unesempio.com/index.php");

    E' l'unica sintassi che funziona SEMPRE.
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  3. #13
    Quote Originariamente inviata da Sonikag Visualizza il messaggio
    Grazie per l'aiuto!
    Ho fatto così:
    Codice PHP:
    <?php
    require "inc/verificalogin.php";
    require 
    "inc/soloadmin.php";
    ?>
    <html>
    <head> 
    ...
    posizionato in quel punto sicuramente non manda in output nulla nel caso un utente non è loggato oppure non è admin, questo intendevi?
    Sonia
    Esatto!

    Potresti addirittura fare:

    ?><html>
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  4. #14
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Quote Originariamente inviata da Sonikag Visualizza il messaggio
    Codice PHP:
    <?php
     
    if (isset($_SESSION['ruolo']) && $_SESSION['ruolo']!=='admin') {
    ?>
    Questo test è SBAGLIATO. Se per qualche motivo la variabile 'ruolo' non esiste, non fai il redirect.

  5. #15
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Nel mio precedente include verifico che l'utente sia loggato e che esista la variabile ruolo se queste condizioni non sono soddisfatte non arriva nemmeno a quella if.

  6. #16
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Ok, allora la prima condizione è solo superflua, ma la toglierei comunque

  7. #17
    Quote Originariamente inviata da _Marco_87 Visualizza il messaggio
    ...
    codice HTML:
    <?php session_start();  ?>
    <!DOCTYPE html>
    <html>
        <body>
        <?php
        echo $_SESSION['ruolo'];//qui mi ritrovo Notice: Undefined index: ruolo in C:... on line 6 quindi la variabile ruolo non esiste(non l'ho mai definita)
        if(isset($_SESSION['ruolo']) && $_SESSION['ruolo']==='admin'){
            echo 'Sono admin e vedo il contenuto';
        }else{
            die('Non sei admin e non puoi vedere il contenuto');
        }
        echo 'La pagina non si è bloccata';//a me non lo stampa, quindi la pagina è bloccata
        ?>
    </body>
    </html>
    ...
    Perdonami, ma non mi piace affatto questo codice: le verifiche di autenticazione vanno fatte tutte PRIMA di fare qualsiasi output, non solo perché è necessario non aver ancora fatto alcun output per poter usare header:Location e riportare l'utente ad una pagina non protetta o al login, ma anche perché, come appunto mostra il tuo codice, in caso avvenga un altro tipo di errore prima della verifica di autenticazione, l'utente lo vede anche se non è autenticato; persino gli utenti autenticati non dovrebbero mai vedere gli errori, figuriamoci quelli non autenticati!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  8. #18
    _Marco_87, non ho idea di quale domanda tu mi avessi fatto, visto a che a segnalarti l'errore (o imprecisione che fosse) era stato luca200 e non io.

    In ogni caso, perdonami la franchezza, ma tu non hai nessun diritto nè di aggredirmi nè di parlarmi come se fossi un imbecille, quando probabilmente già scrivevo codice quando tu ancora non eri nato.

    Resta il fatto che il codice che hai proposto è poco preciso e poco affidabile, quindi non è certo un codice che consiglierei di usare.

    Tra l'altro, se anche il fare die() garantisce che il resto del codice php che segue la die() non venga mai eseguito, in ogni caso hai già inviato in output svariati tag HTML di apertura, che però in quel modo non chiudi mai, inviando così al browser dell'utente una schifezza come questa:

    <!DOCTYPE html>
    <html>
    <body>
    Non sei admin e non puoi vedere il contenuto

    Che non è nemmeno una pagina html ben formata.

    Detto questo, credo che sonikag abbia già ricevuto indicazioni chiare per risolvere il suo quesito,
    se così non fosse la invito a fare altri post.
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  9. #19
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Rispondo solo ora perché non avevo più seguito il thread.
    Quote Originariamente inviata da _Marco_87 Visualizza il messaggio
    Quel testo è sbagliato solo perchè ho fatto copia e incolla del suo codice e ho mEsso !== da admin perchè aveva usato != e invece dovevo mettere === .
    No. Con il redirect sotto l'if (e non sotto l'else) era corretto il test per diverso. E' sbagliato invece che ci sia anche isset(), per il motivo che ho già scritto.
    Quote Originariamente inviata da _Marco_87 Visualizza il messaggio
    Quello che hai detto sulla variabile ruolo non è vero:
    codice HTML:
    <?php session_start();  ?>
    <!DOCTYPE html>
    <html>
        <body>
        <?php
        echo $_SESSION['ruolo'];//qui mi ritrovo Notice: Undefined index: ruolo in C:... on line 6 quindi la variabile ruolo non esiste(non l'ho mai definita)
        if(isset($_SESSION['ruolo']) && $_SESSION['ruolo']==='admin'){
            echo 'Sono admin e vedo il contenuto';
        }else{
            die('Non sei admin e non puoi vedere il contenuto');
        }
        echo 'La pagina non si è bloccata';//a me non lo stampa, quindi la pagina è bloccata
        ?>
    </body>
    </html>
    Puoi provare a fare unset, destroy o qualsiasi altra cosa, quelle condizioni sono legate, non è vero che se ruolo non esiste non fà il redirect. Guarda il codice che ho messo e cambia la variabile ruolo come vuoi tu, basta ch enon tocchi la condizione che ho creato e vedrai ch equello che dici non si verifica mai.
    Poi quando ho corretto il codice non aveva specificato ch efaceva altre operazioni prima e ch epoteva mettere un require su un'altro file, se non si specifica tutto dall'inizio..
    Questo ultimo tuo codice è corretto perché hai invertito il test e la logica relativa. Quello precedente era sbagliato.

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.