Problema reinidirizzamento index.php

di Anonimizzato14048 il
12 risposte
Salve,
Ho un problema con la pagina index.php.
In pratica non mi reindirizza alla pagina di login in caso di sessione utente inesistente. Posto parte del codice:

<?php 
	include("header.inc.php");
	include("navigation.php");
?>
	<div id="contenuto">
	<?php
		if (isset($_SESSION['username'])) {
        ....resto del codice....
                } else { header("Location: login.php"); }
        ....altro....
        ?>
        </div>
   
<?php include("footer.inc.php"); ?>
Ho provato anche ad eliminare la condizione e inserirla tra header e footer in modo da controllare in tutte le pagine ma niente...
Chi mi saprebbe aiutare? Probabilmente ho il problema davanti agli occhi ma non riesco a risolverlo...

12 Risposte

  • Il redirect deve essere chiamato prima di qualsiasi altro contenuto in output. Il tag <div> che hai messo fa si che la funzione header() generi un errore

    Inviato dal mio GT-I9100 utilizzando Tapatalk
  • Probabilmente anche i due include che metti prima richiamano qualche output

    Inviato dal mio GT-I9100 utilizzando Tapatalk
  • alle80 ha scritto:


    Il redirect deve essere chiamato prima di qualsiasi altro contenuto in output. Il tag <div> che hai messo fa si che la funzione header() generi un errore

    Inviato dal mio GT-I9100 utilizzando Tapatalk
    Ti ringrazio per avermi risposto. Ho provato come hai detto tu, ho messo
    
    <?php if (isset($_SESSION['username'])) { ?>
    <div id="contenuto">
    ...resto del codice...
    </div>
    <?php } else { header("Location: login.php"); } ?>
    
    Ma c'è sempre il problema...non reindirizza. Ho anche tolto la condizione dalla pagina index e messo in header.inc.php e footer.inc.php la condizione ma addirittura non si apre la pagina, pagina bianca.
  • Ah credo che la location debba essere un URL assoluto "http://ecceter"...

    Inviato dal mio GT-I9100 utilizzando Tapatalk
  • Hai provato a mettere la funzione header in una pagina da sola?

    Inviato dal mio GT-I9100 utilizzando Tapatalk
  • alle80 ha scritto:


    Ah credo che la location debba essere un URL assoluto http://ecceter...

    Inviato dal mio GT-I9100 utilizzando Tapatalk
    Il problema c'è sempre.
  • Prova questo da solo e vedi se ti da errori

    <?php error_reporting(E_ALL); header("Location: login.php"); die(); ?>

    Inviato dal mio GT-I9100 utilizzando Tapatalk
  • Sull'URL assoluto ho detto una cavolata, perdonami

    Inviato dal mio GT-I9100 utilizzando Tapatalk
  • Ho provato come hai detto, ma reindirizza tranquillamente...probabilmente c'è un problema nel codice che non riesco a trovare. Se ti posto il codice di tutta la pagina index su pastebin o simili puoi dare uno sguardo?
    E' abbastanza importante perchè se entrano nel sito risultano già loggati senza una sessione e quindi non va al login e mi crea abbastanza problemi.
  • Quindi non è che da errore sul redirect, semplicemente non lo fa quando te lo aspetti, ma continua con il contenuto della pagina

    Inviato dal mio GT-I9100 utilizzando Tapatalk
  • Si, sembra di si. Cosa mi consigli? cosa posso fare?
  • RISOLTO!!!! In pratica prima dell'header non ci possono essere OUTPUT...bisogna modificare il php.ini modificando output_buffering impostandolo ad On, ovviamente solo chi ha i permessi di modificare il file da root, altrimenti per ovviare a questo, basta aggiungere sulla prima riga ob_start(); e ora funziona alla grande.
Devi accedere o registrarti per scrivere nel forum
12 risposte