Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    header ("location:... mi da errore!

    Visualizzo la pagina index.php?pageid=valore1&ristoranteid=valore2,
    la pagina index.php include la pagina php che ha il nome del valore1 (passato tramite GET),
    nelle prime righe della pagina schedaristorante.php controllo che ci siano i due valori,
    se ne manca uno reindirizzo la pagina su index.php?pageid=homepage.

    Se manda il parametro "pageid" mi viene mostrata l'homepage, ma se manca il parametro "ristoranteid" mi esce il seguente errore:

    Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\consorzio\index.php:3) in c:\programmi\easyphp1-8\www\consorzio\schedaristorante.php on line 3

    Notice: Undefined index: ristoranteid in c:\programmi\easyphp1-8\www\consorzio\schedaristorante.php on line 5

    e noto che nella barra degli indirizzi "pageid" è ancora "schedaristorante" e non "homepage" come ho impostato com location:...

    schedaristorante.php:
    <?php
    if (!isset($_GET['pageid']) or !isset($_GET['ristoranteid'])) {
    header ("location: index.php?pageid=homepage");
    }
    $ristoranteid = $_GET['ristoranteid'];
    ?>
    ...
    ...

    index.php:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <?php
    if (isset($_GET['pageid'])) {
    $pageid = $_GET['pageid'];
    } else {
    $pageid = "homepage";
    }
    include('utility01.php');
    ?>
    ...
    ...

  2. #2
    Prova a fare così:
    Codice PHP:
    <?php
    if ( (!isset($_GET['pageid'])) or (!isset($_GET['ristoranteid'])) ) 
    header ("location: index.php?pageid=homepage");
    else
    $ristoranteid $_GET['ristoranteid'];
    ?>
    ...
    ...
    Fammi sapere

  3. #3
    scheda ristorante è inclusa in index vero?
    In sostanza ti dice che l'header è già partito. Infatti l'header deve essere messo prima di stampare html.

    Es.
    <?php header ("Location: pag.php"); ?>
    <html>

    è corretto mentre:

    echo "Ciao";
    header ("Location: pag.php");

    ti darà errore.
    Chiaro?

  4. #4
    RISPOSTA AL MESSAGGIO DI "angelo86":

    il risultato non cambia: se manca il parammetro "pageid" allora salta all'homepage, ma se manca il parametro "ristoranteid" esce l'errore

    Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\consorzio\index.php:3) in c:\programmi\easyphp1-8\www\consorzio\schedaristorante.php on line 3

    Notice: Undefined index: ristoranteid in c:\programmi\easyphp1-8\www\consorzio\schedaristorante.php on line 5

    Noto che nella barra degli indirizzi rimangono impostati i parametri anche quando salto all'homepage. Deduco quindi che header location salta alla pagina ma non riesce a modificare i parametri passati tramite GET...

    Ora provo a seguire il conseglio dell'ultimo messaggio...

  5. #5
    Cmq credo che abbia ragione lorenzos...


  6. #6
    Già, non ho ancora provato ma ho capito che commettevo un errore di fondo:
    io uso il comando header all'inizio delle pagina, ma le pagine stesse sono incluse in index.php, e quindi il comando viene eseguito in mezzo alla pagina index generando l'errore.
    Dovrò controllare tutti i vari parametri all'inizio della pagina index.

    Grazie!!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    13
    Non vorrei dire una cavolata ma hai provato a settare output_buffering = On nel file di configurazione di php? Ho avuto lo stesso problema e l'ho risolto così (funziona anche se l'header viene inviato dopo altro codice).

  8. #8
    No, non ho mai provato, anche perché non so come si fa...

    Come faccio a modificare il file di configurazione sul server?

  9. #9
    devi usere l'output buffering

    ob_start(); // a inizio pagina ha priorità appena inferiore a session_start();

    e a fine pagina o quando vuoi buttare fuori l'output

    ob_flush();

    altrimenti automaticamente a fine pagina viene fattoil flush dell'intero codice e tutti gli header mandati in contemporanea senza problemi di precedenze..

    ciaocia
    visit the BEST italian fotolog http://www.ghiacciato.it/fotolog

    "Solo due cose sono infinite, l'universo e la stupidità dell'essere umano.. ma sulla prima ho ancora delle riserve.." A.Einstein

  10. #10
    se il tuo sito si trova su un servizio hosting molto probabilmente non avrai diritti per modificare questo file, cmq ad ogni modo devi andare nella directory dove sta installato php e cercare il file "php.ini", una volta trovato lo apri mediante un editor di testo e scrollando con il mouse troverai:

    codice:
    ; Output buffering allows you to send header lines (including cookies) even
    ; after you send body content, at the price of slowing PHP's output layer a
    ; bit.  You can enable output buffering during runtime by calling the output
    ; buffering functions.  You can also enable output buffering for all files by
    ; setting this directive to On.  If you wish to limit the size of the buffer
    ; to a certain size - you can use a maximum number of bytes instead of 'On', as
    ; a value for this directive (e.g., output_buffering=4096).
    output_buffering = 4096
    e sostituisci:
    output_buffering = 4096
    con
    output_buffering = on


    PS: cmq te lo sconsiglio per due ragioni:
    1) Perchè non penso che questa impostazione sia la risoluzione del tuo problema.
    2) Io non ho mai provato a fare questa cosa, cmq se laryusz dice che ha risolto cosi...insomma fai come vuoi!!

    IMPORTANTE: fai un backup di questo file prima di metterci le mani, così se va qualcosa storto lo ripristini.

    Ciao

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.