Variabile $_POST risulta indefinita. Perchè?

IerardiMario

Nuovo Utente
19 Ott 2011
7
0
0
Salve a tutti, sono nuovo nel forum e vorrei ringraziare anticipatamente per tutte le risposte vogliate darmi.

Il codice seguente rappresenta un classico modulo i quali dati inseriti vengono, al momento dell'invio, trasmessi alla pagina stessa.
La pagina ha estensione php e contiene, oltre il codice che vi mostro, anche il resto della pagina.
L'interpretazione del php è "garantita" da un software (lavoro in locale) chiamato EasyPHP 5.4alpha3.
Volendo distinguere i testi stampati da php dal resto del documento faccio avvolgere i risultati da un tag div. Questo per spiegare la presenza delle variabili
$replyHead, $replyBody e $replyFoot rispettivamente contenenti l'html che verrà prima, insieme e dopo la risposta dello script.

Purtroppo nel momento dell'invio e l'avvenuto caricamento della pagina di risposta il testo "errore" sta ad indicarmi che almeno una delle variabili necessarie
non è definita.

Ho provato a fare un controllo singolo su ogni variabile e risultano tutte non definite. Questo problema non si presenta nel caso
usi il metodo GET invece di POST. Perchè?

Codice:
 <?php
            <?php
            $replyHead="<div>";
            $replyBody="";
            $replyFoot="</div>";

            if(isset($_POST["pagefrom"])&&isset($_POST["name_surname"])&&isset($_POST["email"])&&isset($_POST["message"])&&isset($_POST["sec_code"]))
            {
                if(($_POST["pagefrom"]!="")&&($_POST["name_surname"]!="")&&($_POST["email"]!="")&&($_POST["message"]!="")&&($_POST["sec_code"]!=""))
                {
                    $replyBody = "";
                }
                else
                {
                    $replyBody = "";
                }

                print($replyHead.$replyBody.$replyFoot);
            }else{print "errore";}
        ?>

        <form id="message_form" name="messageForm" action="contacts.php" method="POST" enctype="text/plain" />

            <p>
            <label>Name and surname<br /></label>
                <input type="text" name="name_surname" value=""/>
            <br />  
            </p>
            <p>
            <label>E-mail<br /></label>
                <input type="text" name="email" value=""/>
            <br />
            </p>
            <p>
            <label>Message<br /></label>
                <textarea name="message" rows="7" cols="40"  value=""></textarea>
            <br />
            </p>
            <p>
            <label>Codice di sicurezza<br /></label>
                <input type="text" name="sec_code"  value=""/><img src="" />
            <br />
            </p>
            <p>
            <input type="submit" value="Send" />
            </p>
            <input type="hidden" name="pagefrom" value="contacts"/></input>
        </form>="<div>";
            $replyBody="";
            $replyFoot="</div>";

            if(isset($_POST["pagefrom"])&&isset($_POST["name_surname"])&&isset($_POST["email"])&&isset($_POST["message"])&&isset($_POST["sec_code"]))
            {
                if(($_POST["pagefrom"]!="")&&($_POST["name_surname"]!="")&&($_POST["email"]!="")&&($_POST["message"]!="")&&($_POST["sec_code"]!=""))
                {
                    $replyBody = "";
                }
                else
                {
                    $replyBody = "";
                }

                print($replyHead.$replyBody.$replyFoot);
            }else{print "errore";}
        ?>

        <form id="message_form" name="messageForm" action="contacts.php" method="POST" enctype="text/plain" />

            <p>
            <label>Name and surname<br /></label>
                <input type="text" name="name_surname" value=""/>
            <br />  
            </p>
            <p>
            <label>E-mail<br /></label>
                <input type="text" name="email" value=""/>
            <br />
            </p>
            <p>
            <label>Message<br /></label>
                <textarea name="message" rows="7" cols="40"  value=""></textarea>
            <br />
            </p>
            <p>
            <label>Codice di sicurezza<br /></label>
                <input type="text" name="sec_code"  value=""/><img src="" />
            <br />
            </p>
            <p>
            <input type="submit" value="Send" />
            </p>
            <input type="hidden" name="pagefrom" value="contacts"/></input>
        </form>
 
Ultima modifica:
Sia il codice HTML che PHP avevano diversi problemi... Ho corretto così e funziona:
PHP:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $replyHead = "<div>";
    $replyBody = "";
    $replyFoot = "</div>";

    $required = array('pagefrom', 'name_surname', 'email', 'message', 'sec_code');
    foreach ($required as $field) {
        if (!isset($_POST[$field])) {
            die('Errore!');
        }
    }

    print_r($_POST);
}
else {
    echo <<<EOF
<form id="message_form" name="messageForm" action="{$_SERVER['PHP_SELF']}" method="POST">
    <p>
        <label>Name and surname<br /></label>
        <input type="text" name="name_surname" value="" />
    </p>

    <p>
        <label>E-mail<br /></label>
        <input type="text" name="email" value="" />
    </p>

    <p>
        <label>Message<br /></label>
        <textarea name="message" rows="7" cols="40"  value=""></textarea>
    </p>

    <p>
        <label>Codice di sicurezza<br /></label>
        <input type="text" name="sec_code"  value="" />
    </p>

    <p>
        <input type="submit" value="Send" />
    </p>

    <input type="hidden" name="pagefrom" value="contacts" />
</form>
EOF;
}
 
Sia il codice HTML che PHP avevano diversi problemi... Ho corretto così e funziona:
PHP:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $replyHead = "<div>";
    $replyBody = "";
    $replyFoot = "</div>";

    $required = array('pagefrom', 'name_surname', 'email', 'message', 'sec_code');
    foreach ($required as $field) {
        if (!isset($_POST[$field])) {
            die('Errore!');
        }
    }

    print_r($_POST);
}
else {
    echo <<<EOF
<form id="message_form" name="messageForm" action="{$_SERVER['PHP_SELF']}" method="POST">
    <p>
        <label>Name and surname<br /></label>
        <input type="text" name="name_surname" value="" />
    </p>

    <p>
        <label>E-mail<br /></label>
        <input type="text" name="email" value="" />
    </p>

    <p>
        <label>Message<br /></label>
        <textarea name="message" rows="7" cols="40"  value=""></textarea>
    </p>

    <p>
        <label>Codice di sicurezza<br /></label>
        <input type="text" name="sec_code"  value="" />
    </p>

    <p>
        <input type="submit" value="Send" />
    </p>

    <input type="hidden" name="pagefrom" value="contacts" />
</form>
EOF;
}

Grazie della giga-correzione alessndro1997!
Però correggendo il codice come hai fatto tu mi da questo errore:
"Parse error: syntax error, unexpected '<<' (T_SL) in C:\Program Files\EasyPHP-5.4alpha3\www\contacts.php on line 73"
Sarebbe la riga dove c'è "echo <<<EOF"
 
Probabilmente è un problema di copia-incolla: devi eliminare tutti gli spazi bianchi alla fine delle righe, e la riga:
PHP:
EOF;
Non deve avere indentazione.

Niente, le ho provate tutte. Via l'indentazione... rimosso e rimesso degli spazi... :dipser:
Alla fine ho tolto gli EOF e ho trattato l'html come una stringa concatenando $_SERVER['PHP_SELF'] con i punti.
Va bene lo stesso o è sbagliato scrivere così? Grazie per la pazienza. :D
 
Ultima modifica:
Niente, le ho provate tutte. Via l'indentazione... rimosso e rimesso degli spazi... :dipser:
Alla fine ho tolto gli EOF e ho trattato l'html come una stringa concatenando $_SERVER['PHP_SELF'] con i punti.
Va bene lo stesso ho è sbagliato scrivere così? Grazie per la pazienza. :D

Non è sbagliato, è solo un altro metodo.
 

Discussioni simili