PHP将表单发送到电子邮件 - 在下一页显示内容

时间:2016-06-15 22:06:51

标签: php email session

我在将表单内容发送到电子邮件并保存到会话然后显示在下一页时遇到了一些问题。

我在contact.shtml上有表格,哪个动作将它带到mail.php,当发送内容时,请转到thank_you.shtml。 我需要thank_you -page上显示的内容。

我的所有网页都是* .shtml - 这对此不利吗?

Codesnippets: mail.php

$name = $_POST['name'];
$_SESSION['name'] = $name;
$email = $_POST['email'];
$_SESSION['email'] = $email;
$phone = $_POST['phone'];
$_SESSION['phone'] = $phone;

thank_you:

<?php
echo "Navn:" . "$_SESSION['name']";
echo "Email:" . "$_SESSION['email']";
echo "Telefon:" . "$_SESSION['phone']";
?>

我有明显的感谢页面thank_you和mail.php。

<?php
session_start();
?>

除了这几行之外,我还有几个文本输入和图像文件,我想要显示文件名和扩展名以及一个小预览。 我错过了什么或完全错误的轨道?

2 个答案:

答案 0 :(得分:0)

您可以绕过会话。虽然我喜欢分离关注点,但以下大纲是“一体化”。解决方案将满足您的问题:

<?php
$email = null;
$sent  = false;
$error = null;

if($_SERVER['REQUEST_METHOD'] == 'POST') {
    $email = isset($_POST['email']) ? $_POST['email'] : null;
    if($email && filter_var($email, FILTER_VALIDATE_EMAIL)) {
        // supplied email looks good, send email here.
        $sent = true;
    } else {
        $error = 'Please enter a valid email address.';
    }
}
?>
html goes here..
<?php if($sent) { 
    echo 'Thankyou. The email you supplied is: ' . htmlspecialchars($email);
?>
<?php } else { ?>
    <?php echo $error ? '<p>' . $error . '</p>' : ''; ?>
    <form method="POST">
        Email:
        <input type="text" name="email" value="<?php echo htmlspecialchars($email) ?>">
        <input type="submit">
    </form>
<?php } ?>

如果发布了有效的电子邮件,则可以触发您的邮件。

您真的需要显示收集的用户数据吗?

答案 1 :(得分:-1)

<?php
echo "Navn:" . htmlentities($_SESSION['name']);
echo "Email:" . htmlentities($_SESSION['email']);
echo "Telefon:" . htmlentities($_SESSION['phone']);
?>

您必须删除变量周围的引号。使用htmlentities将所有适用的字符转换为HTML实体