2017-07-20 4 views
1

J'ai créé un simple formulaire Contact et cela a parfaitement fonctionné. Mais maintenant, après avoir ajouté un script mailgun pour envoyer et recevoir des emails, il ne me montre rien d'autre qu'une page blanche.Réception d'une page vierge sans erreur lors de la soumission du formulaire de contact php

Script:

<?php 
require 'vendor/autoload.php'; 
use Mailgun\Mailgun; 
$mailgun = new Mailgun('key-41616099541fe1b0187e7cd970127240', new \Http\Adapter\Guzzle6\Client()); 

$mgClient = new Mailgun('key-41616099'); 
$domain = "sandbox614b.mailgun.org"; 

$from = 'Demo contact form <[email protected] >'; 
$to = 'Demo contact form <[email protected]>'; 
$name = $_POST['name']; 
$subject = $_POST['subject']; 
$message = $_POST['message']; 

$fields = array('name' => 'Name', 'email' => 'Email', 'phone' => 'Phone', 'subject' => 'Subject', 'message' => 'Message'); 

$okMessage = 'Contact form successfully submitted. Thank you, I will get back to you soon!'; 

$errorMessage = 'There was an error while submitting the form. Please try again later'; 

// if you are not debugging and don't need error reporting, turn this off by error_reporting(0); 
error_reporting(E_ALL & ~E_NOTICE); 
try 
{ 
    if(count($_POST) == 0) throw new \Exception('Form is empty'); 

    $content = "You have a new message from your contact form"; 
    foreach ($_POST as $key => $value) 
    { 
     if (isset($fields[$key])) 
      { 
      $content .= "$fields[$key]: $value\n"; 

    //recaptcha-response 
    $recaptcha_secret = "6LfK7ygUAAAAAIYzE6mbqdxbmuroi4gJWqdIpmBu"; 
    $response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$recaptcha_secret."&response=".$_POST['g-recaptcha-response']); 
    $response = json_decode($response, true); 

# Make the call to the client. 
$result = $mgClient->sendMessage("$domain", 
      array('from' => 'Mailgun Sandbox <[email protected]>', 
       'to'  => 'Nami <[email protected]>', 
       'subject' => 'Hello Nami', 
       'text' => 'Congratulations Nami, you just sent an email with Mailgun! You are truly awesome! ')); 

     echo "Form Submit Successfully."; 
     } else { 
     echo "You are a robot"; 
     } 
    } 
} 
    catch (\Exception $e) 
{ 
    $responseArray = array('type' => 'danger', 'message' => $errorMessage); 
} 

?> 

Que pouvais-je faire peut-être mal?

+0

Vérifiez s'il ya quelque chose dans vos journaux d'erreurs – Kai

+0

Le dernier journal d'erreur que j'ai reçu était ceci: erreur de syntaxe, 'else' inattendu (T_ELSE) dans la ligne 68, mais j'ai vérifié les accolades et ai figuré l'erreur. Et maintenant, quand je cours le formulaire, il montre une page blanche. –

Répondre

0

Pour être franc, il semble que beaucoup de choses ont mal tourné avec ce code. À moins qu'il n'y ait bien sûr du code que vous n'avez pas publié, la plupart de ce code ne semble pas réellement faire quoi que ce soit ou est connecté à quelque chose. Ce que vous avez posté est seulement 57 lignes de code, donc la ligne 68 n'existe pas en ce qui me concerne (en ce qui concerne votre autre commentaire).

Vous avez une erreur de syntaxe dans votre sendMessage() fonction, ainsi que l'endroit où vous définissez votre contenu variable $. Vous déclarez $ mailgun en tant que classe mais ne l'utilisez réellement nulle part. Votre boucle forEach() parcourt chaque valeur de poste et tente d'envoyer un e-mail, ce qui dans votre cas, je ne crois pas, est l'objectif. Votre instruction if dans cette boucle for retournera toujours true et en tant que telle, il est inutile de l'utiliser. Ce sont juste les choses qui me dépassent immédiatement.

Sur la base de ce que vous avez posté, c'est le seul code qui semble avoir une pertinence logique:

<?php 

require 'vendor/autoload.php'; 
use Mailgun\Mailgun; 

$mgClient = new Mailgun('key-41616099'); 
$domain = "sandbox614b.mailgun.org"; 

$name = $_POST['name']; 
$subject = $_POST['subject']; 
$message = $_POST['message']; 

$errorMessage = 'There was an error while submitting the form. Please try again later'; 

// if you are not debugging and don't need error reporting, turn this off by error_reporting(0); 
error_reporting(E_ALL & ~E_NOTICE); 

try { 

    if(count($_POST) == 0) { 

     throw new \Exception('Form is empty'); 

    } 

    $data = array(
     'from' => "Mailgun Sandbox <[email protected]>", 
     'to'  => "Nami <[email protected]>", 
     'subject' => $subject, 
     'text' => "Congratulations ".$name.",\n".$message 
    ); 

    # Make the call to the client. 
    $result = $mgClient->sendMessage($domain, $data); 

    echo "Form Submit Successfully."; 

} 

catch (\Exception $e) { 

    $responseArray = array('type' => 'danger', 'message' => $errorMessage); 

} 

?> 

Je vous suggère de comparer les deux et repérer quelques-unes des principales différences pour commencer.

Namita, c'est une merveilleuse communauté pleine de ceux qui souhaitent vous aider. Cependant, votre question est trop générale. Il semble que vous ayez collé des morceaux à partir d'endroits aléatoires sans trop réfléchir à ce que fait le code. De plus, et plus important encore, vous ne nous avez pas fourni une erreur réelle de quelque sorte que ce soit, ni rien de ce que vous avez fait pour essayer de résoudre le problème, encore moins d'identifier le problème.

Je vous recommande de jeter un oeil à la documentation MailGun que vous pouvez trouver ici: https://documentation.mailgun.com/en/latest/user_manual.html

Assurez-vous de choisir « PHP » dans la barre en haut de manière à voir des exemples de code PHP.