验证新闻通讯后无消息刷新

时间:2019-06-21 08:30:58

标签: php mailchimp newsletter

我们的时事通讯验证表存在问题。当我们验证时​​,该电子邮件已添加到我们的数据库中,但该消息告诉您已被很好地添加,但该消息不会出现,而在本地是。 而且我们的终端没有任何错误。

您可以在下面看到我们的index.php的一部分以及用于验证的action.php的内容,如果要进行测试,可以转到https://joy.me.tmonsegu.com/

index.php:

    <div id="ctnr_newsletter">
    <h2>Aidez-nous à vous aider</h2>
    <?php
        $validation = '<p class="validate">Merci de votre     inscription !  Vous recevrez votre première newsletter très bientôt. <br>Suivez-nous sur facebook :  @Joy.me</p>';
        $subscriber = '<p class="validate">Vous êtes déjà abonné. <br>Suivez-nous sur facebook :  @Joy.me</p>';
        $joy = '<p>Joy aura pour mission de vous aider dans votre démarche de vente, don ou recyclage.<br>Vous recevrez un vendredi sur deux votre newsletter sur les dernières actualités ! </p>';

        if (!isset($_SESSION['msg']) || $_SESSION['msg'] !== $validation || $_SESSION['msg'] !== $subscriber ) {
            echo $joy;
        }

        $statusMsg = !empty($_SESSION['msg'])?$_SESSION['msg']:'';
        unset($_SESSION['msg']);
        echo $statusMsg;
    ?>
    <form method="post" action="action.php">
        <input id="email" type="text" name="email" placeholder="Votre adresse mail">
        <input type="submit" name="submit" id="send_email" value="Envoyer" disabled>
    </form>
</div>

action.php:

<?php
session_start();
if(isset($_POST['submit'])){
    $email = $_POST['email'];
    if(!empty($email) && !filter_var($email, FILTER_VALIDATE_EMAIL) === false){
        // MailChimp API credentials
        $apiKey = 'f1ad0a1ea2f5891b8316183583d1fd35-us20';
        $listID = '941b6cb8ca';

        // MailChimp API URL
        $memberID = md5(strtolower($email));
        $dataCenter = substr($apiKey,strpos($apiKey,'-')+1);
        $url = 'https://' . $dataCenter . '.api.mailchimp.com/3.0/lists/' . $listID . '/members/' . $memberID;

        // member information
        $json = json_encode([
            'email_address' => $email,
            'status'        => 'subscribed'
        ]);

        // send a HTTP POST request with curl
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_USERPWD, 'user:' . $apiKey);
        curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
        $result = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        // store the status message based on response code
        if ($httpCode == 200) {
            $_SESSION['msg'] = '<p class="validate">Merci de votre inscription !  Vous recevrez votre première newsletter très bientôt. <br>Suivez-nous sur facebook :  @Joy.me</p>';
        } else {
            switch ($httpCode) {
                case 214:
                    $msg = '<p class="validate">Vous êtes déjà abonné. <br>Suivez-nous sur facebook :  @Joy.me</p>';
                    break;
                default:
                    $msg = '<p class="error bold">Un petit problème a eu lieu, merci de bien vouloir réessayer.</p>';
                    break;
            }
            $_SESSION['msg'] = '<p>'.$msg.'</p>';
        }
    }else{
        $_SESSION['msg'] = '<p class="error bold">Une faute de frappe ! Veuillez vérifier que ce soit une adresse valide (example@gmail.com).</p>';
    }
}
// redirect to homepage
header('location:index.php#ctnr_newsletter');

如果对解决此问题有任何建议,请先谢谢您

0 个答案:

没有答案