Espansione serverfarm: siglato accordo per raddoppio banda!


1 utente stanno visualizzando questa discussione: (0 membri, e 1 visitatore).
 
Valutazione discussione:
  • 0 voti - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
Modulo da sito
18-11-2009, 16:25 (Questo messaggio è stato modificato l'ultima volta il: 18-11-2009 16:30 da Elisabetta.)
Messaggio: #1
Modulo da sito
Salve a tutti.
Ho un piccolo-grande problema con i moduli inviati su casella email dal mio sito.

L'errore che mi compare è questo:
Citazione:Warning: Cannot modify header information - headers already sent by (output started at /home/[..]/public_html/inviomail.php:8) in /home/[..]/public_html/inviomail.php on line 75

Il mio problema è che i moduli hanno sempre funzionato.. ma su un altro server.

Mi rendo conto benissimo che da server a server cambiano molti parametri e quindi l'errore è del codice, ma io non ho riesco proprio a capire DOVE devo andare ad agire!
Ho visto la linea 75 del file inviomail.php... ma non riesco.

Qualcuno riesce ad aiutarmi?

Il codice intero della pagina sopra descritta è:
Codice 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">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<
title>Documento senza titolo</title>
</
head>

<
body><?php

// $mail_to and $mail_from must be set.

$mail_to '[email protected]'// Who is the E-Mail going to?
$mail_from '[email protected]'// Where does the E-Mail appear to be from?

// OPTIONAL SETTING
$redirect_url 'http://www.ilmiosito.it/grazie.php'// Example: http://domain.com/thankyou.html - must be a FULL URL.

############################
# DO NOT EDIT BELOW THIS #
############################

// Fail if _POST and _GET are empty. Nothing to process.
if(count($_POST) == AND count($_GET) == 0):
echo 
'This form handler does nothing if visited directly. You must submit form data to this script.';
exit;
endif;

// Fail if $mail_to or $mail_from are not set.
if(empty($mail_to) OR empty($mail_from)):
echo 
'You must edit this script and set the appropriate values for $mail_to and $mail_from.';
exit;
endif;


// Set $fields to whichever method is being used.
$fields = (count($_POST) > ) ? $_POST $_GET;

$message_body "Modulo 2010 \n\n";

foreach (
$fields as $field => $value):
switch(
strtolower($field)):
case 
'redirect':
$redirect $value;
break;
case 
'subject':
$subject $value;
break;
endswitch;
if (
strtolower($field) != 'redirect' AND strtolower($field) != 'submit' AND strtolower($field) != 'subject'):
$message_body .= strtoupper($field) . ": " $value "\r\n";
endif;
endforeach;

// Set the redirect URL from the form (if set). $host_url is a default action if $redirect isn't set
$redirect = (empty($redirect_url)) ? $redirect $redirect_url;
$host_url $_SERVER['HTTP_HOST'];

// Set the message subject based upon a subject field being set or not.

$message_subject = (!empty($subject)) ? $subject 'Modulo 2010 ';

$headers 'From: '.$_POST['email']."\r\n";
'Reply-To: ' .$_POST['email']. "\r\n";
'X-Mailer: PHP/' phpversion();

// Remove potentially injected headers from the body

if (!mail($mail_to$message_subject$message_body$headers)):
echo 
"Message Send Failed.";
endif;

if(empty(
$redirect)):
header("Location: http://{$host_url}");
else:
header("Location: {$redirect}");
endif;
?>
</body>
</html> 

...ripeto, prima di essere fraintesa, che dicendo "prima funzionava" NON sto dando la colpa al server!!!
Voglio solo dire che è un codice che nel bene o nel male funzionava, e quindi sono consapevole che adattandolo ai nuovi parametri dovrebbe continuare a fare il suo lavoro!

Grazie ancora a tutti.

PS. Aggiungo che il modulo è inviato correttamente, ma la pagina mostra l'errore. Quindi l'invio del modulo funziona!

Il mio nuovo sito hosted by w4w: elisabettaricci.it: http://www.elisabettaricci.it
La mia associazione occhiettineri.it: http://www.occhiettineri.it
Visita il sito web di questo utente Trova tutti i messaggi di questo utente
18-11-2009, 16:43
Messaggio: #2
RE: Modulo da sito
Il problema è il redirect in fondo.

Codice PHP:
if(empty($redirect)):
header("Location: http://{$host_url}");
else:
header("Location: {$redirect}");
endif; 

La funzione header() deve essere inviata prima di qualsiasi altro output.
Puoi provare a far precedere la funzione header con "@"

Codice PHP:
if(empty($redirect)):
@
header("Location: http://{$host_url}");
else:
@
header("Location: {$redirect}");
endif; 
Trova tutti i messaggi di questo utente
18-11-2009, 16:55
Messaggio: #3
RE: Modulo da sito
Ciao Dan!
Grazie mille per la risposta.

Ho provato e il risultato è il caricamento di una pagina bianca... che è "inviomail.php".
Infatti se leggo il codice sorgente mi appare l'intestazione:

Codice:
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Documento senza titolo</title>
</head>

<body></body>
</html>

Capisco che è già un grosso passo avanti.. ma non viene caricata la pagina di ringraziamento! Huh

Cosa posso modificare ancora?

Il mio nuovo sito hosted by w4w: elisabettaricci.it: http://www.elisabettaricci.it
La mia associazione occhiettineri.it: http://www.occhiettineri.it
Visita il sito web di questo utente Trova tutti i messaggi di questo utente
18-11-2009, 17:06
Messaggio: #4
RE: Modulo da sito
Ho provato anche io a fare come suggerito, ma il redirect comunque non funziona. Il problema è quello che ti ho detto. La funzione deve stare prima di qualsiasi altra cosa, perfino dei tag di intestazione.

Un altra prova che puoi fare, è inserire ob_start(); in cima allo script e ob_end_flush(); in fondo.
Trova tutti i messaggi di questo utente
18-11-2009, 17:18
Messaggio: #5
RE: Modulo da sito
Ho provato a metterli:

CASO 1)
Prima di ogni cosa
Dopo ogni cosa
Risultato-> Viene stampato su pagina bianca ob_start e l'altro anche

CASO 2)
Ho inserito appena dopo <?php
e appena prima di ?>
Risultato -> Pagina bianca senza redirect

Huh
Se li eliminassi e inserissi un redirect html nell'header di inviomail.php?

Il mio nuovo sito hosted by w4w: elisabettaricci.it: http://www.elisabettaricci.it
La mia associazione occhiettineri.it: http://www.occhiettineri.it
Visita il sito web di questo utente Trova tutti i messaggi di questo utente
18-11-2009, 17:19
Messaggio: #6
RE: Modulo da sito
Ciao Elisabetta.
Controlla che nella pagina "inviomail.php" non ci sia nemmeno una riga vuota.

Fai uno screenshot magari.

:alcool::alcool: :adminpower: :alcool::alcool:

Web4Web.IT - Low Cost Hosting
Pacchetti multidominio a partire da € 10,00
Visita il sito web di questo utente Trova tutti i messaggi di questo utente
18-11-2009, 17:21
Messaggio: #7
RE: Modulo da sito
(18-11-2009 17:19)Gandalf Ha scritto:  : https://www.web4web.it/forum/post-439.html#pid439Ciao Elisabetta.
Controlla che nella pagina "inviomail.php" non ci sia nemmeno una riga vuota.

Fai uno screenshot magari.

Qualche riga vuota credo ci sia.
Corro a cancellarle tutte.
Grazie anche a te Gandalf

Il mio nuovo sito hosted by w4w: elisabettaricci.it: http://www.elisabettaricci.it
La mia associazione occhiettineri.it: http://www.occhiettineri.it
Visita il sito web di questo utente Trova tutti i messaggi di questo utente
18-11-2009, 17:30 (Questo messaggio è stato modificato l'ultima volta il: 18-11-2009 17:31 da Elisabetta.)
Messaggio: #8
RE: Modulo da sito
Fatto.. non va.

Allego lo screenshot....

ps. Ovviamente il "nero" non è per voi (che siete amministratori e sapete tutto di tutti, ma per evitare che qualche visitatore venga a giocare con il mio modulo che non funziona)


pps. Riattacco tra un paio d'ore.


Allegati Anteprime
   

Il mio nuovo sito hosted by w4w: elisabettaricci.it: http://www.elisabettaricci.it
La mia associazione occhiettineri.it: http://www.occhiettineri.it
Visita il sito web di questo utente Trova tutti i messaggi di questo utente
18-11-2009, 17:37
Messaggio: #9
RE: Modulo da sito
Ciao, anche questo è output
Codice:
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Documento senza titolo</title>
</head>

<body>
pertanto, il redirect va inserito prima di esso.

@web4web: https://twitter.com/web4web
----
: http://www.web4web.it
Visita il sito web di questo utente Trova tutti i messaggi di questo utente
18-11-2009, 19:09 (Questo messaggio è stato modificato l'ultima volta il: 18-11-2009 19:10 da Elisabetta.)
Messaggio: #10
RE: Modulo da sito
Dunque, sembra funzionare così facendo...
(mi rendo conto che non è una soluzione pulita, ma almeno funziona)

Ho eliminato il blocco
Codice:
if(empty($redirect)):
@header("Location: http://{$host_url}");
else:
@header("Location: {$redirect}");
endif;

E inserito nell'head questo
Codice:
<meta http-equiv="Refresh" content="1;URL=grazie.php" />

Compare per 1 secondo la pagina bianca e poi si refresha nella pagina di ringraziamento.

Ciò non toglie che continuerò a cercare di migliorare la versione precedente!

Il mio nuovo sito hosted by w4w: elisabettaricci.it: http://www.elisabettaricci.it
La mia associazione occhiettineri.it: http://www.occhiettineri.it
Visita il sito web di questo utente Trova tutti i messaggi di questo utente


Altri utenti che stanno visualizzando questa discussione

1 utente stanno visualizzando questa discussione: (0 membri, e 1 visitatore).
 
Discussioni correlate...
Discussione: Autore Risposte: Letto: Ultimo messaggio
  Nuovo sito PHP peppe20x 1 11.278 18-12-2009 02:03
Ultimo messaggio: Gandalf
 
Vai al forum:


Permessi di scrittura
Non puoi inserire nuove discussioni.
Non puoi inserire risposte.
Non puoi inserire allegati.
L' HTML è disattivato.
Il MyCode è attivato.
Le faccine sono attivato.
Il codice [img] è attivato.