Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    PHP - sessioni e header

    salve ragazzi, ho un problema...
    sto costruendo un sito in php per la mia tesi di laurea.
    In un file che ho chiamato top.php ho scritto diverso codice php e html che poi vado ad includere nelle altre pagine del sito. La struttura di top.php è questa:
    <?php
    session_start();
    codice, codice, codice,
    html, hmtl, html,html
    bla bla bla
    .
    .
    .


    le altre pagine del sito hanno la seguente struttura.
    <?php
    include("top.php");
    codice, codice, codice, codice...
    html, html, hmtl, html...
    header(location: pagina.php);
    .
    .

    ?>

    provando il sito a casa non mi da alcun problema, mentre, provandolo su un server linux mi compare una warning riguardante l'header (qualcosa come header already sent...). potreste dirmi come risolvere il problema? Premetto che a casa uso EasyPhp.

  2. #2
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    il problema è quella riga header..

    cerchi di mandare header quando hai già scritto qualcosa (l'output di top.php)

    sposta l'header nella pagina top.php in alto a tutto oppure utilizza un buffer...

    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  3. #3
    va bene, grazie mille

  4. #4
    il problema è che ho utilizzato header per gestire ad esempio i privilegi sugli accessi a delle pagine riservate.
    Ad esempio

    <?php
    php php
    php php
    ?>
    tag html
    tag html
    tag html
    <?php
    if (condizione)
    header ('Location: pagina.php');
    ?>

    Spero di essere stato chiaro, grazie

  5. #5
    Utente di HTML.it L'avatar di luke83
    Registrato dal
    Jul 2000
    Messaggi
    1,217
    in vero non ho capito molto bene, scusa..

    Forse è meglio se son più chiaro io sul problema..

    header lo devi mettere prima di qualsiasi output quindi puoi metterlo dopo un blocco php (sempre che questo non contenga echo o print per capirci) ma non dopo un blocco html.

    Se proprio non puoi farne a meno... allora devi avviare un buffer che catturi l'output e lo svuoti a video solo dopo l'header.. dai un occhio alla documentazione sul manuale php ci dovrebbe essere un esempio abbastanza chiaro..

    qualsiasi ulteriore chiarimento io son qui..
    ..::Luca::..
    » "se nn riesci a venirene a capo.. usa il tasto INVIO" © 2005 Luke83
    » "letta la documentazione, spazio all'immaginazione.." © 2006 Luke83
    [frasi random] - [Lucopedia] - [laFetta]

  6. #6
    Utente di HTML.it L'avatar di HammerFist
    Registrato dal
    May 2005
    Messaggi
    1,110
    mi sembra di aver capito che il tuo codice indirizza ad una pagina solo se si avvera una condizione...il fatto è ke se stampi a video qualcosa l'"header" non và, come dice bene luke83... a qst punto se io fossi in te proverei con uno javascript per far andare il salto di pagina
    <?php
    php php
    php php
    ?>
    tag html
    tag html
    tag html
    <?php
    if (condizione)
    ?>
    <<<javascript>>>
    ?>

    che ne pensate?

  7. #7
    ciao ragazzi, vi ringrazio per la vostra attenziome.

    Non potendo ormai stravolgere la struttura del sito ho pensato di sostituire tutti gli echo e blocchi html che precedevano gli header bufferizzando l'outputo. Ad esempio

    <html>
    <head>
    <head>
    <body>
    <p style="text-align:center">
    bla bla
    </p>
    <?php
    header (locationagina.php);
    ?>

    l'ho trasformato in

    <?php
    $buffer="<html>
    <head>
    </head>
    <body>
    <p style=\"text-align:center\">
    bla bla
    </p>";
    header ('Locationagina.php');
    echo $buffer;
    ?>

    Può essere questa la soluzione ai miei problemi?
    Spero di essere stato chiaro.

  8. #8
    Utente bannato
    Registrato dal
    Jan 2002
    Messaggi
    852
    usa la mia funzione

    Codice PHP:
    function redirect($url,$timeout=0
    {
        echo 
    "\n<script language=\"javascript\">\n";
        if(
    $timeout == 0
        {
            echo 
    "  window.location=\"$url\";\n";
        }
        else 
        {
            echo 
    "string=\"\", timeout = ".($timeout*10).";\n";
            echo 
    "function dorefresh() {\n";
            echo 
    "  window.status=\"Loading\"+string;"
            echo 
    "  string = string + \" .\";";
            echo 
    "  timerID = setTimeout(\"dorefresh();\", 100);\n";
            echo 
    "  if (timeout > 0) {";
            echo 
    "    timeout -= 1;\n";
            echo 
    "  } else {\n";
            echo 
    "    clearTimeout(timerID);\n";
            echo 
    "    window.status=\"\";\n";
            echo 
    "    window.location=\"$url\";\n";
            echo 
    "  }\n";
            echo 
    "}\n";
            echo 
    "dorefresh();";
        }
        echo 
    "\n</script>\n";

    <?php
    php php
    php php
    ?>
    tag html
    tag html
    tag html
    <?php
    if (condizione)
    redirext('pagina.php');
    ?>

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.