• Super User

    @Piterrey said:

    Allora il sito dove il codice funziona e' in italia (.it), mentre l'altro e' forse in america(.com), La pagina e' una pag. di login, dove se avviene l'accesso, il form di login punta alla pagina stessa dove compare la scritta "benvenuto nell'area privata", allora inserendo il redirect, mi salta direttamente alla pagina specificata nell'header, ma in questo caso mi da' l'errore di cui sopra.
    Il codice in entrambi i siti e' lo stesso.Comunque ecco il cod.

    //inizio pag.
    <?
    session_start();
    ?>

    poi il cod di controllo utente

    <form action="<?=$PHP_SELF?>" method="post" name="login" class="Stile8" id="login">
    E-Mail
    <input name="utente" type="text" class="Stile8" size="15" />
    Password
    <input name="password" type="text" class="Stile8" size="15" /><br />
    <input name="Submit" type="submit" class="Stile8" value="Accedi" />

    <? }
    

    if(isset($_POST["utente"])){
    if (check($_POST["utente"],$_POST["password"])){
    $_SESSION["utente"] = $_POST["utente"];
    $_SESSION["password"] = $_POST["password"];
    header("location: http://www.vintagesorrento.com/prodotti.php");
    }else{
    form_login();
    }
    }else{
    form_login();
    }
    ?></form>

    Se questo:
    [php]
    poi il cod di controllo utente

    <form action="<?=$PHP_SELF?>" method="post" name="login" class="Stile8" id="login">
    E-Mail
    <input name="utente" type="text" class="Stile8" size="15" />
    Password
    <input name="password" type="text" class="Stile8" size="15" /><br />
    <input name="Submit" type="submit" class="Stile8" value="Accedi" />

    <? }[/php]
    

    Viene inviato ad output è normale che ti dia errore


  • User Attivo

    Ma quale potrebbe essere il motivo per cui sul server italiano gli funziona e sull'altro no?

    A me succede la stessa cosa :mmm: sul server di altervista funziona e su uno in sudamerica mi da quel tipo di errore :bho:

    Purtroppo per fare prove devo aspettare che la persona che sta usando il mio cms faccia le prove che gli sottopongo e la cosa va per le lunghe ...

    grazie,
    greybear


  • Super User

    @greybear said:

    Ma quale potrebbe essere il motivo per cui sul server italiano gli funziona e sull'altro no?

    A me succede la stessa cosa :mmm: sul server di altervista funziona e su uno in sudamerica mi da quel tipo di errore :bho:

    Purtroppo per fare prove devo aspettare che la persona che sta usando il mio cms faccia le prove che gli sottopongo e la cosa va per le lunghe ...

    grazie,
    greybear
    Per esempio se la pagina viene compressa prima di essere inviata al browser, l'errore non viene visualizzato.


  • User Attivo

    L'unica spiegazione secondo me e' la versione del php, ma parlo sempre da inesperto.


  • User Attivo

    Anche io non sono esperto, ma non avendo info sulla versione del php sul sito estero non posso fare ipotesi. Quello che so è che su altervista il PHP è della serie 4.x .
    Per esempio lo stesso cms l'ho messo su Lycos e qui non funziona proprio.

    Sulla barra url anche cambiando pagina rimane lo stesso url.
    Quando faccio l'autenticazione non entra mai
    Prima che si carica la pagina (anche se viene visualizzata tutta) bisogna aspettare diverse decine di secondi (forse aspetta tutti i banner ?).

    Un vero schifo!

    Credo quindi che le cause siano due:

    1. gli script (il mio cms) non siano fatti a regola d'arte e quindi in alcuni host siano tollerati ed altri no (vedi: differente configurazione apache+php)
    2. alcuni host hanno qualche restrizione particolare.

    Parafrasando "qualcuno" è il caso di dire: imparare, imparare, imparare! :mmm:

    ciao,
    greybear


  • User Attivo

    Ho dimenticato di dire che anche in locale (usando fedora5) funziona perfettamente ....
    I settings di apache (2.2.2) e php (5.1.6) sono quelli di default.


  • User Attivo

    EUREKA! EUREKA!

    siiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

    ; 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
    
    ```disabilitando output_buffering ho riprodotto il problema in locale!!
    
    il segreto quindi è qui:
    
    "You can enable output buffering during runtime by calling the output buffering functions."
    
    Come si fa, ayrton?
    
    :D grazie,

  • User Attivo

    Fatto, fatto, fatto, fatto....
    :fumato: no, non io... maliziosetti 😄

    Ho fatto, adesso funziona tutto. Per chi non lo sapesse (ovvero quelli come me), il buffer di cui sopra si può riattivare (credo localmente) mettendo in testa allo script la funzione:

    ob_start();

    Nel caso mio l'ho messa in testa al file index.php perchè è quello che poi "include" su richiesta tutti gli altri script, incluso quello per il login che probabilmente dovrebbe starne fuori.

    Piterrey, forse il tuo problema è lo stesso... Facci sapere 😉

    Ayrton, ci sono controindicazioni o miglioramenti a quello che ho fatto?

    ciao e grazie,
    greybear


  • User Attivo

    scusate ma sono un poo' tonto in php
    potete farmi un esempio di codice?
    grazie


  • User Attivo

    Il mio index.php adesso inizia così:


    <?php
    ob_start();
    // da qui in poi tutto lo script
    ?>

    ed in questo modo abilito il buffering per il mio cms anche se è disabilitato nel php.ini
    Adesso sto facendo qualche verifica nel caso il buffering sia abilitato...
    ciao,
    greybear


  • Super User

    @greybear said:

    Fatto, fatto, fatto, fatto....
    :fumato: no, non io... maliziosetti 😄

    Ho fatto, adesso funziona tutto. Per chi non lo sapesse (ovvero quelli come me), il buffer di cui sopra si può riattivare (credo localmente) mettendo in testa allo script la funzione:

    ob_start();

    Nel caso mio l'ho messa in testa al file index.php perchè è quello che poi "include" su richiesta tutti gli altri script, incluso quello per il login che probabilmente dovrebbe starne fuori.

    Piterrey, forse il tuo problema è lo stesso... Facci sapere 😉

    Ayrton, ci sono controindicazioni o miglioramenti a quello che ho fatto?

    ciao e grazie,
    greybear
    Nessuna controindicazione. Io di solito la utilizzo per inviare al browser la pagina compressa.

    Comunque se si volesse abilitare l'output_buffering lo si potrebbe fare via .htaccess


  • User Attivo

    scusa , ma ob_start lo inserisco al posto di session start?


  • User Attivo

    Io l'ho messo come prima riga del primo file chiamato dal server e cioè index.php

    Tu devi regolarti con i tuoi script oppure cambiare il file .htaccess ma non so come si fa.


  • User Attivo

    Hai risolto?

    ciao,
    greybear


  • User Attivo

    No non ho risolto e credo di non aver capito granche'.:?


  • User Attivo

    Allora, supponiamo che il tuo sito abbia il solito index.php e tanti altri script php:

    Poichè quando qualcuno entra nel sito fa eseguire per forza lo script index.php, questo deve iniziare così:

    [inizio script]
    ----------------------------------------
    <?php
    ob_start();
    [da qui continuano tutte le altre istruzioni]
    ....
    ?>
    ----------------------------------------
    [fine script]
    
    ```In questo modo *la prima operazione che viene eseguita prima di ogni altra cosa*, è l'attivazione del buffering che ti eviterà l'errore da te riportato
    
    Ciao,
    Domenico

  • User Attivo

    Grazie Mille ho risolto siete stati di grande aiuto
    Marco