Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Header per redirect

  1. #1

    Header per redirect

    Ciao a tutti, ho un file che mi controlla se un utente è loggato o no, e se non lo è mi dovrebbe mandare ad una pagina di errore. ho scritto il seguente codice ma non mi funziona...
    codice:
    session_start();
    echo ($_SESSION['logged_in']);
    if (!$_SESSION['logged_in'] == 'ok') {
        header('Location : errore.php?err=Non si dispone del permesso per visualizzare la pagina.');
    }else{
        echo "Utente Loggato correttamente."
    }
    ...NO ONE IS INNOCENT ANYMORE...

  2. #2
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    session_start();
    if($_SESSION['logged_in'] == 'ok'){
    echo $_SESSION['logged_in'];
    echo "Utente Loggato correttamente."
    }else{
    if ($_SESSION['logged_in'] != 'ok') {
    header('Location : errore.php?err=Non si dispone del permesso per visualizzare la pagina.');
    }

    cosi va bene?

  3. #3
    possono essere vai i motivi.
    1) potresti aver gia' scritto qualcosa (codice html) sulla pagina. quindi l'header information e' gia' stata inviata.
    2) errore.php e' nella stessa directory dello script in questione?

    scrivi l'errore che ti viene segnalato.


  4. #4
    non mi da nessun errore, è quello il problema, semplicemente non verifica la condizione utente non loggato, anche se la variabile di sessione è inizializzata a "pippo"!
    ora ho provato a spostare il codice all'interno di <head></head>
    e mi da questo errore...
    codice:
    Warning: Cannot modify header information - headers already sent by (output started at C:\apache_test\Daisit\admin\news\inserisci_news.php:5) in C:\apache_test\Daisit\admin\controlla_login.php on line 8
    ...NO ONE IS INNOCENT ANYMORE...

  5. #5
    non puoi spostere il codice all'interno dell'<head> devi creare l'header prima che avvenga qualsiasi stampa.


    se non ricordo male se il file errore.php si trova in un'altra directory devi passarli l'indizzo assoluto del server creandolo con realpath()
    il caffè lo bevo espresso

  6. #6
    Ok nn mi da più alcun errore, solo che semplicemente ignora l'if...
    codice:
    if ($_SESSION['logged_in'] != 'ok') {
    header('Location : ' . realpath("../errore.asp") . '?err=Non si dispone del permesso per vedere la pagina.');
    }
    ...NO ONE IS INNOCENT ANYMORE...

  7. #7
    se questo pezzo di codice sta dentro ad una funzione a volte (non so il motivo, ma mi capita) non puoi passarli direttamente $_SESSION['var'] ma devi passare questo valore come parametro
    il caffè lo bevo espresso

  8. #8
    non sta dentro ad una funzione, l'ho scritto subito dopo l'istruzione session_start();
    codice:
    <?
    $loggato = $_SESSION['logged_in'];
    if ($loggato != 'ok') {
    $loc = 'Location : ' . realpath("../errore.asp") . '?err=Non si dispone del permesso per vedere la pagina.';
    header($loc);
    }
    e continua a non funzionare...
    proverò a fare in qualche altro modo ma mi scoccia perchè non capisco dove sbaglio...
    ...NO ONE IS INNOCENT ANYMORE...

  9. #9
    Ti hanno già spiegato che qualsiasi header deve essere messo prima di qualsiasi output al browser. Per output si intende sia un echo o un print del php sia il codice html che sta fuori del php (!!! anche un semplice spazio costituisce output !!!).

    Ora, per risolvere il problema bisogna prima capire dove sta!

    Io procederei per gradi.

    1) Controlla che la variabile da controllare esista stampandone il valore

    2) Aggiungi il controllo ed all'interno dell'if e dell'else inserisci un semplice echo che ti indichi lo stato dell'operazione

    Codice PHP:
    if ( $_SESSION['var'] == 'valore' )
      {
        echo 
    '$_SESSION[\'var\'] è valida' ;
      {
    else
      {
        echo 
    '$_SESSION[\'var\'] non è valida' ;
      } 
    Fatto questo hai controllato che l'if funzioni correttamente ed a questo punto puoi anche inserire l'header.

    Procedendo in questo modo sai esattamente dove sta l'errore anche se il php non ti restituisce il messaggio di errore.

    EDIT
    Il forum elimina \ da $_SESSION['var']. Nell'echo li devi mettere prima degli apici altrimenti ti darà errore.
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  10. #10
    Per ciò che riguarda la funzione quelle sono variabili globali. Pertanto non è necessario passarle come parametri. Al massimo si potrebbe renderle ulteriormente globali in questo modo

    Codice PHP:
    function something() {
      
       global 
    $_SESSION ;

       
    // qui il resto del codice

    ma comunque non serve a niente perchè già sono globali. Prova a fare un echo della var all'interno della funzione senza passarla come parametro e vedrai che te la stampa correttamente e se te la stampa vuol dire che la legge il che vuol dire che ci puoi fare quello che vuoi all'interno della funzine. Se non funziona il codice vuol dire che l'errore sta da qualche altra parte! Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.