Il file php all'interno del form non viene eseguito, se clicco invio invece di venir eseguito il codice php si apre una pagina vuota. Perchè?
Codice HTML:<form method="post" action="contact.php"> ... </form>
Il file php all'interno del form non viene eseguito, se clicco invio invece di venir eseguito il codice php si apre una pagina vuota. Perchè?
Codice HTML:<form method="post" action="contact.php"> ... </form>
Perché è il normale comportamento. Quale codice c'è all'interno? Cosa vorresti fare? Cosa dovrebbe fare il codice?
Ciao!
regolamento altervista_______________ regolamento forum
Normalmente si fa così:
Se la pagina con il form non è "contact.php", dovrai inserire il codice php in quest'ultima.Codice PHP:
<?php
if(isset($_POST['inviato'])) //se ho inviato il form
{
echo 'Faccio qualcosa con i dati del form, come'.$_POST['dato1'];
}
?>
<form method="post" action="<?= $_SERVER['PHP_SELF']; ?>">
<input type="text" name="dato1">
<input type="submit" name="inviato">
</form>
Se vuoi inviare una email, potrebbe interessarti l'utilizzo di SendGrid.
Ciao!
regolamento altervista_______________ regolamento forum
No, puoi inserirlo anche in una pagina html con l'action che punta ad una pagina .php contenente lo script php.
L'unica accortezza è che lo script PHP viene interpretato solamente in pagine con estensione .php, salvo modifiche via .htaccess.
Ciao!
regolamento altervista_______________ regolamento forum
Ok, allora il discorso è diverso, avevo capito che avessi inserito il php dentro il form:In tal caso, controlla se arrivano tutti i parametri allo script php (ad esempio puoi farlo facendo var_dump() delle varie variabili provenienti dal form). Ricontrolla anche il restante codice dell'invio email.
Potresti testare la funzionalità di mail() nel tuo account tramite questo semplice script.
Ciao!
regolamento altervista_______________ regolamento forum
Inserisco tutto il codice, magari puoi darmi una mano...
Codice HTML:<div class="card-body"> <?php if ($msg != "") echo "$msg<br><br>"; ?> <form method="post" action="contact.php" enctype="multipart/form-data"> <div class="form-row mb-3"> <div class="form-group col-12"> <label for="name">Nome:</label> <div class="input-group"> <div class="input-group-prepend"> <span class="input-group-text"><i class="fas fa-user"></i></span> </div> <input type="text" name="name" class="form-control" id="name" autocomplete="off" required> <div class="valid-feedback"></div> <div class="invalid-feedback"> Campo richiesto </div> </div> </div> <div class="form-group col-12"> <label for="email">Indirizzo e-mail*:</label> <div class="input-group"> <div class="input-group-prepend"> <span class="input-group-text"><i class="fas fa-at"></i></span> </div> <input type="email" name="email" class="form-control" id="email" autocomplete="off" required> <div class="valid-feedback"></div> <div class="invalid-feedback"> Campo richiesto </div> </div> </div> <div class="form-group col-12"> <label for="subject">Oggetto:</label> <div class="input-group"> <div class="input-group-prepend"> <span class="input-group-text"><i class="fas fa-envelope"></i></span> </div> <input type="text" name="subject" class="form-control" id="subject"> <div class="valid-feedback"></div> <div class="invalid-feedback"> Campo richiesto </div> </div> </div> <div class="form-group col-12"> <label for="content">Messaggio:</label> <div class="input-group"> <div class="input-group-prepend"> <span class="input-group-text"><i class="fas fa-comment-alt"></i></span> </div> <textarea name="content" class="form-control" id="content" rows="5"></textarea> <div class="valid-feedback"></div> <div class="invalid-feedback"> Campo richiesto </div> </div> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" id="checkbox" required> <label class="form-check-label" for="checkbox"> Acconsento al trattamento dei mie dati personali. <a class="privacy" href="https://www.privacy.it/normativa/codice-privacy-dlgs-1962003/" target="_blank">Maggiori informazioni</a> </label> <div class="valid-feedback"></div> <div class="invalid-feedback"> Acconsentire al trattamento dei dati personali. </div> </div> </div> <button type="reset" name="reset" class="btn btn-danger">Pulisci campi</button> <button type="submit" name="send" class="btn btn-primary">Invia</button> </form> </div>
Codice PHP:
<?php
$msg = "";
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
include_once "phpmailer/PHPMailer.php";
include_once "phpmailer/Exception.php";
include_once "phpmailer/SMTP.php";
if (isset($_POST['submit'])) {
$subject = $_POST['subject'];
$email = $_POST['email'];
$message = $_POST['message'];
$name = $_POST['name'];
$mail = new PHPMailer();
//if we want to send via SMTP
$mail->Host = "smtp.tiscali.it";
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->Username = "xxxx@tiscali.it";
$mail->Password = "xxxxx";
$mail->SMTPSecure = "ssl"; //TLS
$mail->Port = 465; //587
$mail->addAddress('xxxx@tiscali.it');
$mail->setFrom($email);
$mail->Subject = $subject;
$mail->isHTML(true);
$mail->Body = $message;
if ($mail->send())
$msg = "Email inviata con successo!";
else
$msg = "Si è verificato un errore. Riprova più tardi.";
}
?>
Ultima modifica di italiaedintorni : 25-12-2018 alle ore 14.29.18
Scusami ancora ma perchè se inserisco il tutto, compreso il form, in una pagina php funziona e con l'altro modo no?
Ho provato senza l'SMTP anche con la pagina html ma non funziona.Codice PHP:
<?php
$msg = "";
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
include_once "phpmailer/PHPMailer.php";
include_once "phpmailer/Exception.php";
include_once "phpmailer/SMTP.php";
if (isset($_POST['submit'])) {
$subject = $_POST['subject'];
$email = $_POST['email'];
$message = $_POST['message'];
$mail = new PHPMailer();
//$mail->Host = "";
//$mail->isSMTP();
//$mail->SMTPAuth = true;
//$mail->Username = "";
//$mail->Password = "";
//$mail->SMTPSecure = "ssl";
//$mail->Port = 465;
$mail->addAddress('xxxx@tiscali.it');
$mail->setFrom($email);
$mail->Subject = $subject;
$mail->isHTML(true);
$mail->Body = $message;
if ($mail->send())
$msg = "Your email has been sent, thank you!";
else
$msg = "Please try again!";
}
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Contact Form</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
</head>
<body>
<div class="container" style="margin-top: 100px">
<div class="row justify-content-center">
<div class="col-md-6 col-md-offset-3" align="center">
<br><br>
<?php if ($msg != "") echo "$msg<br><br>"; ?>
<form method="post" action="sendemail.php">
<input class="form-control" name="subject" placeholder="Subject..."><br>
<input class="form-control" name="email" type="email" placeholder="Email..."><br>
<textarea placeholder="Message..." class="form-control" name="message"></textarea><br>
<input class="btn btn-primary" name="submit" type="submit" value="Send Email">
</form>
</div>
</div>
</div>
</body>
</html>
regolamento altervista_______________ regolamento forum
Codice PHP:
<?php
$msg = "";
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
include_once "phpmailer/PHPMailer.php";
include_once "phpmailer/Exception.php";
include_once "phpmailer/SMTP.php";
if (isset($_POST['submit'])) {
$subject = $_POST['subject'];
$email = $_POST['email'];
$message = $_POST['message'];
$name = $_POST['name'];
$mail = new PHPMailer();
$mail->Host = "smtp.tiscali.it";
//$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->Username = "xxxx@tiscali.it";
$mail->Password = "xxxxx";
$mail->SMTPSecure = "ssl";
$mail->Port = 465;
$mail->addAddress('xxxx@tiscali.it');
$mail->setFrom($email);
$mail->Subject = $subject;
$mail->isHTML(true);
$mail->Body = $message;
if ($mail->send())
$msg = "Email inviata con successo!";
else
$msg = "Si è verificato un errore. Riprova più tardi.";
}
?>
Non mi sembra ci siano i commenti in smtp. Utilizza lo stesso codice che funziona assieme al form. Fai anche un po' di debug come ti avevo detto, con var_dump o echo o simili.
Ciao!
regolamento altervista_______________ regolamento forum
Allora ho seguito il tuo consiglio e pare abbia funzionato, l'unico problema è che all'esecuzione della pagina php si apre una pagina vuota contenente l'indirizzo della pagina php eseguita. Come faccio ad evitare ciò? Grazie.
Codice HTML:<div class="card-body"> <h6 class="card-title text-center"> <?php if ($msg != "") echo "$msg"; ?> </h6> <form method="post" action="contact.php"> <div class="form-row mb-3"> <div class="form-group col-12"> <label for="name">Nome:</label> <div class="input-group"> <div class="input-group-prepend"> <span class="input-group-text"><i class="fas fa-user"></i></span> </div> <input type="text" name="name" class="form-control" id="name" autocomplete="off" required> <div class="valid-feedback"></div> <div class="invalid-feedback"> Campo richiesto </div> </div> </div> <div class="form-group col-12"> <label for="email">Indirizzo E-mail:</label> <div class="input-group"> <div class="input-group-prepend"> <span class="input-group-text"><i class="fas fa-at"></i></span> </div> <input type="email" name="email" class="form-control" id="email" autocomplete="off" required> <div class="valid-feedback"></div> <div class="invalid-feedback"> Campo richiesto </div> </div> </div> <div class="form-group col-12"> <label for="subject">Oggetto:</label> <div class="input-group"> <div class="input-group-prepend"> <span class="input-group-text"><i class="fas fa-envelope"></i></span> </div> <input type="text" name="subject" class="form-control" id="subject"> <div class="valid-feedback"></div> <div class="invalid-feedback"> Campo richiesto </div> </div> </div> <div class="form-group col-12"> <label for="message">Messaggio:</label> <div class="input-group"> <div class="input-group-prepend"> <span class="input-group-text"><i class="fas fa-comment-alt"></i></span> </div> <textarea name="message" class="form-control" id="message" rows="5"></textarea> <div class="valid-feedback"></div> <div class="invalid-feedback"> Campo richiesto </div> </div> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" id="checkbox" required> <label class="form-check-label" for="checkbox"> Acconsento al trattamento dei mie dati personali. <a class="privacy" href="https://www.privacy.it/normativa/codice-privacy-dlgs-1962003/" target="_blank">Maggiori informazioni</a> </label> <div class="valid-feedback"></div> <div class="invalid-feedback"> Acconsentire al trattamento dei dati personali. </div> </div> </div> <button type="reset" name="reset" class="btn btn-danger">Pulisci campi</button> <button type="submit" name="submit" class="btn btn-primary">Invia</button> </form> </div>Codice PHP:
<?php
$msg = "";
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
include_once "phpmailer/PHPMailer.php";
include_once "phpmailer/Exception.php";
include_once "phpmailer/SMTP.php";
if (isset($_POST['submit'])) {
$subject = $_POST['subject'];
$email = $_POST['email'];
$message = $_POST['message'];
$name = $_POST['name'];
$mail = new PHPMailer();
$mail->addAddress('davidemarca@tiscali.it');
$mail->setFrom($email);
$mail->Subject = $subject;
$mail->isHTML(true);
$mail->Body = $message;
if ($mail->send())
$msg = "<p style='color: green; font-style: italic; font-weight: bold;'>Email inviata con successo!</p>";
else
$msg = "<p style='color: red; font-style: italic; font-weight: bold;'>Si è verificato un errore. Riprova più tardi.</p>";
}
?>
Cosa vorresti venisse visualizzato? È normale che si visualizza una nuova pagina perché l'action del form è impostato in quel modo. Qualsiasi cosa vorresti far visualizzare, deve essere o nella pagina php oppure puoi fare un redirect php ad un'altra pagina.
Ciao!
regolamento altervista_______________ regolamento forum
Per fare questa cosa "alla lettera" dovresti inviare una richiesta tramite javascript. Non è una cosa banale ma se conosci un po' javascript puoi cavartela, con fetch.
Altrimenti, la cosa più semplice è fare come ti avevo indicato nella quarta risposta: la pagina verrà ricaricata ma non apparirà una nuova pagina vuota.
Inoltre tramite PHP potrai scrivere un messaggio di corretto invio dell'email.
Ciao!
Ultima modifica di alemoppo : 26-12-2018 alle ore 12.10.53
regolamento altervista_______________ regolamento forum