Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    449

    Inserimento script php in html

    Mi scuso in anticipo per il livello elementare della questione, su cui ho consultato
    una marea di post in rete, ma se le mie conoscenze di (x)html e css sono modestissime,
    quelle di php sono inesistenti e dovrei invece risolvere un problemino a breve.
    Ho implementato un form per inviare messaggi in una pagina web
    che sfrutta uno script in php. Finché lo script è separato, la cosa funziona.
    Volevo però implementarlo nella pagina html, anche per motivi estetici.
    E qui sorgono i problemi, perché a questo punto la cosa non va più.
    Quando cerco di inviare il messaggio, si apre una pagina con l'avviso:

    =================================
    Parse error: syntax error, unexpected T_STRING
    in /var/www/netsons.org/samiel/form3.php on line 1
    =================================

    Ecco il file:

    ================================================== ==========
    <?xml version="1.0" encoding="utf-8"?>
    <!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 name="generator" content="Quanta Plus" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>"titolo"</title>
    <meta name="description" content="contenuto" />
    <meta name="keywords" content="contenuto" />
    <link rel="stylesheet" type="text/css" href="layout.css" />
    </head>

    <body>
    <ul class="navbar">[*]testo[*]testo[*]testo[*]testo[*]testo[*]testo[/list]

    <h2>&#200; possibile inviarci una comunicazione direttamente da questo form</h1>
    <h2>Riempire i campi richiesti e premere il pulsante "Invia"</h2>



    <form action=">?php echo $ server['php self']; ?>" method="post">
    <?php
    // inserisci qui il tuo indirizzo email
    $receiverMail = "mail@mail.xxx";

    // pulizia dei dati inseriti
    $name = ltrim(rtrim(strip_tags(stripslashes($_POST['name']))));
    $email = ltrim(rtrim(strip_tags(stripslashes($_POST['email']))));
    $subject = ltrim(rtrim(strip_tags(stripslashes($_POST['subject']))));
    $msg = ltrim(rtrim(strip_tags($_POST['msg'])));

    // lettura dell'indirizzo IP
    $ip = getenv("REMOTE_ADDR");

    // formattazione del messaggio ( \n per le messe a capo )
    $msgformat = "Messaggio da: $name ($ip)\nEmail: $email\n\n$msg";

    // verifica campi obbligatori
    if(empty($name) || empty($email) || empty($subject) || empty($msg)) {
    echo "<h3>Il messaggio non e' stato inviato</h3>
    <h3>Si prega di compilare tutti i campi</h3";
    }
    // verifica indirizzo email
    elseif(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
    echo "<h3>Il messaggio non e' stato inviato</h3>
    <h3>L'indirizzo e-mail indicato non e' valido</h3>";
    }
    else {
    // invio del messaggio
    mail($receiverMail, $subject, $msgformat, "From: $name <$email>");
    echo "<h3>Il messaggio e' stato inviato correttamente<h3>
    <h3>Risponderemo il piu' presto possibile</h3>
    <h3>Grazie di averci scritto</h3>"; }
    ?>





    Nome:


    <input name="name" size="50" maxlength="40" />





    Indirizzo e-mail:


    <input name="email" size="50" maxlength="40" />





    Oggetto:


    <input name="subject" size="50" maxlength="40" />





    Messaggio:


    <textarea name="msg" cols="50" rows="8" wrap="physical"></textarea>





    <input type="submit" value="Invia" />
    &#160; &#160; &#160; &#160; &#160; &#160;
    <input type="reset" value="Cancella" />
    </form>
    </body>

    Qualche anima pia mi potrebbe segnalare dove sta l'inghippo?

    Milel grazie
    M.

  2. #2
    Innanzi tutto questo

    <form action=">?php echo $ server['php self']; ?>" method="post">

    Deve essere
    Codice PHP:
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    Poi vedi un po' se ti dà altri errori.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    449
    Il testo ritoccato è adesso il seguente:

    ================================================== ====
    <?xml version="1.0" encoding="utf-8"?>
    <!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 name="generator" content="Quanta Plus" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>B&#038;B &#171;LA LOCANDA DI RE MANFREDI&#187; - PALAZZO SAN GERVASIO (PZ)</title>
    <meta name="description" content="Ora c'&#232; un Bed&#038;Breakfast anche a Palazzo San Gervasio (PZ)" />
    <meta name="keywords" content="b&#038;b,bed&#038;breakfast, Palazzo San Gervasio, Potenza, Basilicata, Lucania" />
    <link rel="stylesheet" type="text/css" href="layout.css" />
    </head>

    <body>
    <ul class="navbar">[*]Home Page[*]Il nostro Bed&#038;Breakfast[*]Il paese[*]La storia[*]Le tradizioni[*]Indirizzi utili[/list]

    <h2>&#200; possibile inviarci una comunicazione direttamente da questo form</h1>
    <h2>Riempire i campi richiesti e premere il pulsante "Invia"</h2>




    <?php
    $receiverMail = "samiel@netsons.org";
    $name = ltrim(rtrim(strip_tags(stripslashes($_POST['name']))));
    $email = ltrim(rtrim(strip_tags(stripslashes($_POST['email']))));
    $subject = ltrim(rtrim(strip_tags(stripslashes($_POST['subject']))));
    $msg = ltrim(rtrim(strip_tags($_POST['msg'])));
    $ip = getenv("REMOTE_ADDR");
    $msgformat = "Messaggio da: $name ($ip)\nEmail: $email\n\n$msg";
    if(empty($name) || empty($email) || empty($subject) || empty($msg)) {
    echo "<h3>Il messaggio non e' stato inviato</h3>
    <h3>Si prega di compilare tutti i campi</h3";
    }
    elseif(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
    echo "<h3>Il messaggio non e' stato inviato</h3>
    <h3>L'indirizzo e-mail indicato non e' valido</h3>";
    }
    else {
    mail($receiverMail, $subject, $msgformat, "From: $name <$email>");
    echo "<h3>Il messaggio e' stato inviato correttamente<h3>
    <h3>Risponderemo il piu' presto possibile</h3>
    <h3>Grazie di averci scritto</h3>"; }
    ?>


    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    Nome:


    <input name="name" size="50" maxlength="40" />




    Indirizzo e-mail:


    <input name="email" size="50" maxlength="40" />




    Oggetto:


    <input name="subject" size="50" maxlength="40" />




    Messaggio:


    <textarea name="msg" cols="50" rows="8" wrap="physical"></textarea>




    <input type="submit" value="Invia" />
    &#160; &#160; &#160; &#160; &#160; &#160;
    <input type="reset" value="Cancella" />
    </form>
    </body>
    </html>
    ================================================== ====

    Adesso la pagina appare, ma presenta, oltre al form, brandelli
    di codice php:

    =============================================
    È possibile inviarci una comunicazione direttamente da questo form
    Riempire i campi richiesti e premere il pulsante "Invia"

    Il messaggio non e' stato inviato
    Si prega di compilare tutti i campi
    Il messaggio non e' stato inviato
    L'indirizzo e-mail indicato non e' valido
    "; } else { mail($receiverMail, $subject, $msgformat, "From: $name <$email>"); echo "
    Il messaggio e' stato inviato correttamente
    Risponderemo il piu' presto possibile
    Grazie di averci scritto
    "; } ?>
    Nome:
    =============================================

    e quindi segue il form vero e proprio...

    Mille grazie
    M.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    449
    Ulteriore dubbio: la pagina html contenente lo script php
    (che attualmente non funziona, vedi msg precedente),
    devo salvarlo come html o come php? Perché uppato
    nel server come php la pagina mi dà un errore sintattico
    e non si apre, come html si apre, ma mi crea il problema
    descritto sopra...

    M.

  5. #5
    si la pagina si deve chiamare php.

    che errore ti restituisce?

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    449
    Questo errore (e ovviamente la pagina non si apre):

    Parse error: syntax error, unexpected T_STRING
    in /var/www/netsons.org/samiel/form.php on line 1

    M.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    449
    Visto che l'errore si riferiva alla line 1, ho provato a toglierla.
    Si tratta dell'intestazione del file:
    ============================================
    <?xml version="1.0" encoding="utf-8"?>
    <!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">
    ============================================
    Ma è corretta questa prassi? Certo, non è più html ma php...
    E adesso il form funziona, ma con un problema: riempio
    i campi, batto Invio e il messaggio parte e arriva a destinazione.
    Ma invece di leggere la scritta "Il messaggio è stato regolarmente
    inviato" mi ricompare ogni volta il form nuovo...

    M.

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    449
    Ah, ho capito... La soluzione sta nel fatto che i msg "Messaggio inviato"
    ecc appaiono nella stessa pagina. Dovrei fare in modo che lo script php
    richiami una pagina nuova...

    M.

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    449
    Allora, togliere l'intestazione non è cosa buona.
    Ho risolto il problema modificandola così:

    ============================================
    <?= "<"."?xml version=\"1.0\" encoding=\"utf-8\"?".">" ?>
    <!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">
    ============================================

    in modo che non venga processata. Però c'è un ultimo problema.
    Lo script implementato è il seguente:

    <?php
    $receiverMail = "samiel@netsons.org";
    $name = ltrim(rtrim(strip_tags(stripslashes($_POST['name']))));
    $email = ltrim(rtrim(strip_tags(stripslashes($_POST['email']))));
    $subject = ltrim(rtrim(strip_tags(stripslashes($_POST['subject']))));
    $msg = ltrim(rtrim(strip_tags($_POST['msg'])));
    $ip = getenv("REMOTE_ADDR");
    $msgformat = "Messaggio da: $name ($ip)\nEmail: $email\n\n$msg";
    if(empty($name) || empty($email) || empty($subject) || empty($msg)) {
    echo "<h3>Il messaggio non e' stato inviato</h3>
    <h3>Si prega di compilare tutti i campi</h3";
    }
    elseif(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
    echo "<h3>Il messaggio non e' stato inviato</h3>
    <h3>L'indirizzo e-mail indicato non e' valido</h3>";
    }
    else {
    mail($receiverMail, $subject, $msgformat, "From: $name <$email>");
    echo "<h3>Il messaggio e' stato inviato correttamente<h3>
    <h3>Risponderemo il piu' presto possibile</h3>
    <h3>Grazie di averci scritto</h3>"; }
    ?>
    Ora, se apro per la prima volta la pagina del form già si legge:

    ========================================
    Il messaggio non e' stato inviato
    Si prega di compilare tutti i campi
    ========================================

    Evidentemente, il controllo sul messaggio
    viene fatto alla prima apertura della pagina,
    quando ovviamente non c'è ancora scritto nulla,
    e non dopo che è stato premuto il tasto "Invia".
    C'è modo per uscirne?

    Grazie mille
    Mauro

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.