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

    php send in pagina bianca!!!! Autoooooooo!

    Ciao, scusate forse sono un po fuso (...e sarebbe ora che prendo una pausa ) non riesco a capire perche dopo aver fatto il send il sito mi rimane bloccato in pagina bianca!

    /*** Settaggio variabili globali PHP/4.1.2 ***/
    if (!isset($_SERVER)) {$_SERVER = $HTTP_SERVER_VARS;}
    if (!isset($_GET)) {$_GET = $HTTP_GET_VARS;}
    if (!isset($_POST)) {$_POST = $HTTP_POST_VARS;}
    if (!isset($_COOKIE)) {$_COOKIE = $HTTP_COOKIE_VARS;}
    if (!isset($_FILES)) {$_FILES = $HTTP_POST_FILES;}
    if (!isset($_ENV)) {$_ENV = $HTTP_ENV_VARS;}
    if (!isset($_SESSION)) {$_SESSION = $HTTP_SERVER_VARS;}

    /*** Impostazione dei messaggi di errore (solo per testing) ***/
    error_reporting(0);

    /*** Lettura del template ***/
    $template_code = implode("",file($_POST['template_file']));

    /*** Sostituzione dei valori ***/
    $parsed = preg_replace('/()/e', '$_POST[\'$2\']', $template_code);

    /*** Lettura dei valori ***/
    $splitted = explode("#-#-#-#",$parsed);
    $vars = array(
    "from_name" => trim($splitted[0]),
    "from_mail" => trim($splitted[1]),
    "to_name" => trim($splitted[2]),
    "to_mail" => trim($splitted[3]),
    "reply_name" => trim($splitted[4]),
    "reply_mail" => trim($splitted[5]),
    "subject" => trim($splitted[6]),
    "body" => $splitted[7],
    "sent" => $splitted[8]
    );

    /*** Controllo dei campi ***/
    if (($vars['from_name'] == "") || ($vars['from_mail'] == "") || ($vars['to_name'] == "") || ($vars['to_mail'] == "") || ($vars['reply_name'] == "") || ($vars['reply_mail'] == "") || ($vars['subject'] == "") || ($vars['body'] == "")) {exit();}

    /*** Scrittura degli headers SMTP ***/
    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
    $headers .= "Content-Transfer-Encoding: 8bit\r\n";
    $headers .= "From: \"".$vars['from_name']."\" <".$vars['from_mail'].">\r\n";
    $headers .= "To: \"".$vars['to_name']."\" <".$vars['to_mail'].">\r\n";
    $headers .= "Reply-To: \"".$vars['reply_name']."\" <".$vars['reply_mail'].">\r\n";


    /*** Invio della mail e operazioni successive ***/
    if (mail($vars['to_mail'],$vars['subject'],$vars['body'],$headers)) {
    if (stristr($vars['sent'],"goto=")) {

    $goto = str_replace("goto=","",trim($vars['sent']));

    header("Location: ".$goto);

    }

    else {echo $vars['sent'];}
    }


    Questo è il template:


    #-#-#-#

    #-#-#-#
    xxxxxxxxxxxxxxxxxx
    #-#-#-#
    prova@ibero.it
    #-#-#-#

    #-#-#-#

    #-#-#-#

    #-#-#-#

    #-#-#-#
    goto:http://www.xxx.com



  2. #2
    Utente bannato
    Registrato dal
    Jul 2007
    Messaggi
    368
    Prova ad isolare (cancellare fisicamente) qualche parte di codice. Poi vedi se dà ancora la pagina bianca.

  3. #3
    proverò subito dalla scrittura smtp.....

  4. #4

    era questo il problema.....

    La pagina rimane bianca perchè si è verificato un errore di PHP o perchè esco dalla procedura in modo forzato...

    > if (!isset($_SERVER)) {$_SERVER = $HTTP_SERVER_VARS;}

    ...e tutte le righe di seguito sono inutili se lavoro con PHP5...

    > $parsed = preg_replace('/( )/e', '$_POST['$2']', $template_code);

    Qui c'è un errore di sintassi, ovvero '$_POST['$2']'. Le variabili non vanno mai scritte all'interno di stringhe (delimitate da apici, singoli o doppi che siano).
    Oltre alla precisazione, comunque, l'errore è che ho usato degli apici singoli per delimitare un contenuto e l'array contiene degli apici singoli che identificano il suo indice: se avessi scritto "$_POST['$2']" avrebbe funzionato, però sarebbe meglio omettere anche gli apici doppi, quindi:

    $parsed = preg_replace( '/( )/e' , $_POST['$2'] , $template_code );

    > if (($vars['from_name'] == "") || ($vars['from_mail'] == "") || ($vars['to_name'] == "")....

    Questa condizione non è logica, ovvero se tutte le variabili sono vuote esce dalla procedura senza stampare nulla: {exit();}. Anche se la pagina non ha errori (che nel mio caso ha), mi lascerebbe la pagina bianca nel caso le variabili array $vars fossero vuote.

    Quindi ho buttato questo script modificato e ne ho riscritto un altro......che gira ma non ricevo niente:

    <?php

    if ((trim($_POST['R1']) != "") && (trim($_POST['Commento']) != "")) { //questo fa si che se i campi -oggetto- e "messaggio" sono vuoti la form non invia nessuna mail
    $to = "nome@dominio.it";
    $headers = "From: " . $_POST['Email'] . "\n";
    // soggetto della mail
    $subject = "Modulo proveniente da www.tuosito.it";

    // corpo messaggio
    $body = "Contenuto del modulo:\n\n";

    $body .= "Inviata da: " . trim(stripslashes($_POST["Email"])) . "\n"; //indirizzo e-mail che manda la mail, come si vede riprende l'id del campo destinato all'inserimento della mail del mittente

    $body .= "Oggetto: " . trim(stripslashes($_POST["R1"])) . "\n"; //oggetto del messaggio
    $body .= "testo: " . trim(stripslashes($_POST["Commento"])) . "\n"; //messaggio

    // invio mail
    mail($to, $subject, $body, $headers); // SE L'INOLTRO E' ANDATO A BUON FINE...

    echo "La mail è stata inviata con successo. Grazie per averci contattato";

    } else {// altrimenti
    echo "Deve compilare la form prima di inviare.";

    }

    ?>

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.