PHP Form Example su 3schools.com

di Anonimizzato27773 il
6 risposte
Salve,

vorrei utilizzare il modello base pubblicato su www.w3schools.com/php/php_form_complete.as, ma per questioni di "Demo" non hanno messo la parte relativa al setup della email di recapito ed io, non essendo un esperto di PHP, non riesc a capire come vada scritto.

Potreste cortesemente darmi una mano?

Grazie1000!
Mario

6 Risposte

  • Ciao Hormus,

    forse non mi sono spiegato bene. Partendo dalla demo completa qui: https://tryphp.w3schools.com/showphp.php?filename=demo_form_validation_complete, vorrei modificare il codice in modo che i dati NON vengano "stampati" sotto il form, ma che vengato recapitati ad un "destinatario". Dovrebbe essere una cosa abbastanza banale, ma non c'arrivo proprio

    Grazie Mille!
  • Alcuni web server inibiscono l'uso della funzione mail https://www.php.net/manual/en/function.mail.ph , altri hanno limiti temporali o altri tipi di limiti, oppure l'IP del tuo server é bloccato dal server di posta del ricevente.
    Google cerca uno script di newsletter integrabile tramite API per il servizio che vuoi scegliere (se vuoi essere sicuro che i tuoi clienti ricevano l'e-mail).
  • Perdonami, ma mi sa che stiamo parlando di due cose diverse Mi sa che sei troppo avanti.

    Io devo solo modificare il form qui sotto il modo che la compilazione dei dati arrivi a
    Qual'è la porzione di codice da inserire/modificare?
    
    
    <!DOCTYPE HTML>  
    <html>
    <head>
    <style>
    .error {color: #FF0000;}
    </style>
    </head>
    <body>  
    
    <?php
    // define variables and set to empty values
    $nameErr = $emailErr = $genderErr = $websiteErr = "";
    $name = $email = $gender = $comment = $website = "";
    
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
      if (empty($_POST["name"])) {
        $nameErr = "Name is required";
      } else {
        $name = test_input($_POST["name"]);
        // check if name only contains letters and whitespace
        if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
          $nameErr = "Only letters and white space allowed";
        }
      }
      
      if (empty($_POST["email"])) {
        $emailErr = "Email is required";
      } else {
        $email = test_input($_POST["email"]);
        // check if e-mail address is well-formed
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
          $emailErr = "Invalid email format";
        }
      }
        
      if (empty($_POST["website"])) {
        $website = "";
      } else {
        $website = test_input($_POST["website"]);
        // check if URL address syntax is valid (this regular expression also allows dashes in the URL)
        if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
          $websiteErr = "Invalid URL";
        }
      }
    
      if (empty($_POST["comment"])) {
        $comment = "";
      } else {
        $comment = test_input($_POST["comment"]);
      }
    
      if (empty($_POST["gender"])) {
        $genderErr = "Gender is required";
      } else {
        $gender = test_input($_POST["gender"]);
      }
    }
    
    function test_input($data) {
      $data = trim($data);
      $data = stripslashes($data);
      $data = htmlspecialchars($data);
      return $data;
    }
    ?>
    
    <h2>PHP Form Validation Example</h2>
    <p><span class="error">* required field</span></p>
    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">  
      Name: <input type="text" name="name" value="<?php echo $name;?>">
      <span class="error">* <?php echo $nameErr;?></span>
      <br><br>
      E-mail: <input type="text" name="email" value="<?php echo $email;?>">
      <span class="error">* <?php echo $emailErr;?></span>
      <br><br>
      Website: <input type="text" name="website" value="<?php echo $website;?>">
      <span class="error"><?php echo $websiteErr;?></span>
      <br><br>
      Comment: <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea>
      <br><br>
      Gender:
      <input type="radio" name="gender" <?php if (isset($gender) && $gender=="female") echo "checked";?> value="female">Female
      <input type="radio" name="gender" <?php if (isset($gender) && $gender=="male") echo "checked";?> value="male">Male
      <input type="radio" name="gender" <?php if (isset($gender) && $gender=="other") echo "checked";?> value="other">Other  
      <span class="error">* <?php echo $genderErr;?></span>
      <br><br>
      <input type="submit" name="submit" value="Submit">  
    </form>
    
    <?php
    echo "<h2>Your Input:</h2>";
    echo $name;
    echo "<br>";
    echo $email;
    echo "<br>";
    echo $website;
    echo "<br>";
    echo $comment;
    echo "<br>";
    echo $gender;
    ?>
    
    </body>
    </html>
    
  • Echo é un costrutto linguistico per stampare a video del testo, il carattere $ in genere indica la variabile contenitore, leggi il link fornito per la funzione mail e $email é il valore dell'email.
    Mentre questo se l'utente possiede almeno un cliente mail invia la mail https://www.w3schools.com/html/tryit.asp?filename=tryhtml_form_mail
  • Allora, partendo dal modello di 3schools.com, la mia intenzione era quella di prendere il codice php e metterlo in un file a parte, denominato 'process.php'
    
    <?php
    // define variables and set to empty values
    $nameErr = $emailErr = $genderErr = $websiteErr = "";
    $name = $email = $gender = $comment = $website = "";
    
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
      if (empty($_POST["name"])) {
        $nameErr = "Name is required";
      } else {
        $name = test_input($_POST["name"]);
        // check if name only contains letters and whitespace
        if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
          $nameErr = "Only letters and white space allowed";
        }
      }
      
      if (empty($_POST["email"])) {
        $emailErr = "Email is required";
      } else {
        $email = test_input($_POST["email"]);
        // check if e-mail address is well-formed
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
          $emailErr = "Invalid email format";
        }
      }
        
      if (empty($_POST["website"])) {
        $website = "";
      } else {
        $website = test_input($_POST["website"]);
        // check if URL address syntax is valid (this regular expression also allows dashes in the URL)
        if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
          $websiteErr = "Invalid URL";
        }
      }
    
      if (empty($_POST["comment"])) {
        $comment = "";
      } else {
        $comment = test_input($_POST["comment"]);
      }
    
      if (empty($_POST["gender"])) {
        $genderErr = "Gender is required";
      } else {
        $gender = test_input($_POST["gender"]);
      }
    }
    
    function test_input($data) {
      $data = trim($data);
      $data = stripslashes($data);
      $data = htmlspecialchars($data);
      return $data;
    }
    ?>
    

    linkarlo al posto di : <?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>
    
    <h2>PHP Form Validation Example</h2>
    <p><span class="error">* required field</span></p>
    <form method="post" action="process.php">  
      Name: <input type="text" name="name" value="<?php echo $name;?>">
      <span class="error">* <?php echo $nameErr;?></span>
      <br><br>
      E-mail: <input type="text" name="email" value="<?php echo $email;?>">
      <span class="error">* <?php echo $emailErr;?></span>
      <br><br>
      Website: <input type="text" name="website" value="<?php echo $website;?>">
      <span class="error"><?php echo $websiteErr;?></span>
      <br><br>
      Comment: <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea>
      <br><br>
      Gender:
      <input type="radio" name="gender" <?php if (isset($gender) && $gender=="female") echo "checked";?> value="female">Female
      <input type="radio" name="gender" <?php if (isset($gender) && $gender=="male") echo "checked";?> value="male">Male
      <input type="radio" name="gender" <?php if (isset($gender) && $gender=="other") echo "checked";?> value="other">Other  
      <span class="error">* <?php echo $genderErr;?></span>
      <br><br>
      <input type="submit" name="submit" value="Submit">  
    </form>
    
    fatto questo dovrei scrivere una cosa del genere nella parte PHP per fare in modo che la email venga recapitata a un destinatario:
    
    <?php
    
    $recipients = array(
      "info@miodominio.com"
    );
    $email_to = implode(',', $recipients); // your email address
    $email_subject = "Richiesta Informazioni"; // email subject line
    $thankyou = "thank-you.html"; // thank you page
    
    ?>
    
    Vorrei aggiustare questo form perché ha i required fields. Specifico che sono un Web Designer, ho un'ottima padronanza di Html+CSS, ma non so programmare in PHP. Ecco perché chiedevo un mano su questo forum per modificarlo.

    Grazie Mille per la Disponibilità
Devi accedere o registrarti per scrivere nel forum
6 risposte