Formulaire qui ne fonctionne pas avec PHP

Fermé
Denizay Messages postés 105 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 21 novembre 2021 - 27 févr. 2017 à 13:40
Denizay Messages postés 105 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 21 novembre 2021 - 6 mars 2017 à 09:24
Bonjour à tous,

J'essaie d'adapter un formulaire en PHP à mon site internet.
Cependant, dans le code php de celui-ci, malgré le remplacement du mail factice par le mien, je ne reçois pas les messages.
Avez-vous une idée d'où peut provenir le problème?

Voici le code php:

<?php
// Check for empty fields
if(empty($_POST['name']) ||
empty($_POST['email']) ||
empty($_POST['phone']) ||
empty($_POST['message']) ||
!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
{
echo "No arguments Provided!";
return false;
}

$name = strip_tags(htmlspecialchars($_POST['name']));
$email_address = strip_tags(htmlspecialchars($_POST['email']));
$phone = strip_tags(htmlspecialchars($_POST['phone']));
$message = strip_tags(htmlspecialchars($_POST['message']));

// Create the email and send the message
$to = 'iciMonMail@blabla.fr'; // Add your email address inbetween the '' replacing yourname@yourdomain.com - This is where the form will send a message to.
$email_subject = "Website Contact Form: $name";
$email_body = "You have received a new message from your website contact form.\n\n"."Here are the details:\n\nName: $name\n\nEmail: $email_address\n\nPhone: $phone\n\nMessage:\n$message";
$headers = "From: noreply@yourdomain.com\n"; // This is the email address the generated message will be from. We recommend using something like noreply@yourdomain.com.
$headers .= "Reply-To: $email_address";
mail($to,$email_subject,$email_body,$headers);
return true;
?>
A voir également:

7 réponses

1Seb Messages postés 166 Date d'inscription dimanche 27 mars 2016 Statut Membre Dernière intervention 30 octobre 2021 37
27 févr. 2017 à 14:34
Bonjour,

Le site est chez quel hébergeur?
0
Herbergé chez Free.fr
0
1Seb Messages postés 166 Date d'inscription dimanche 27 mars 2016 Statut Membre Dernière intervention 30 octobre 2021 37
27 févr. 2017 à 20:14
Chez free, s'il n'y a pas de captcha il faut en ajouter un, sinon les messages ne passent pas.

http://les.pages.perso.chez.free.fr/utiliser-correctement-les-formulaires-d-envoi-sur-les-pp-de-free.io
0
Je suis débutante :( je sais même pas ce que c'est mais j'ai lu. Donc un système anti spam? Mais sur mon code je dois l'ajouter ou c'est comment que ça se passe ?
0
Denizay Messages postés 105 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 21 novembre 2021 3
Modifié par Mavicik le 28/02/2017 à 12:40
Je me suis un peu renseigné et j'ai trouvé un tuto pour insérer un captcha de google. Ca a fonctionné seulement j'ai une petite erreur sur ma page un bout de code s'affiche. Est-ce normal?

Voici le lien de ma page web: lenaphotography.free.fr

Ma page web ne ressemble à rien pour le moment car les fichiers .css ne sont pas prit en compte par free je ne sais pas pourquoi d'ailleurs. Je cherche la solution à ce problème donc si vous avez une réponse :)

Et pour information, même avec un captcha, je ne reçois pas les mails pourquoi?
0
Denizay Messages postés 105 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 21 novembre 2021 3
28 févr. 2017 à 13:51
Et puis, le captcha n'agit pas. Le message peut quand même être envoyé sans captcha...
0
1Seb Messages postés 166 Date d'inscription dimanche 27 mars 2016 Statut Membre Dernière intervention 30 octobre 2021 37
28 févr. 2017 à 18:34
Revérifiez tout, il y a surement une erreur de fait quelque part car j'ai fais l'essai et ça fonctionne chez moi et je reçois bien les messages.
Mais c'est assez compliqué chez free, ça coupe sans cesse et parfois il faut renvoyer plusieurs fois les fichiers.
Clés obtenues ici : https://www.google.com/recaptcha/intro/comingsoon/invisiblebeta.html

- J'ai mis tout en haut de la page contact :
<?php
session_start();
require 'recaptchalib.php';
$siteKey = 'Ma Clé'; // votre clé publique
$secret = 'Ma seconde clé'; // votre clé privée
?>

- Ceci avant </head> :
<script src='https://www.google.com/recaptcha/api.js'></script>


- Ceci juste après <body> :
<?php
$reCaptcha = new ReCaptcha($secret);
if(isset($_POST["g-recaptcha-response"])) {
$resp = $reCaptcha->verifyResponse(
$_SERVER["REMOTE_ADDR"],
$_POST["g-recaptcha-response"]
);
if ($resp != null && $resp->success) {echo "OK";}
else {echo "CAPTCHA incorrect";}
}
?>

- Ceci ou j'affiche le captcha :
<div class="g-recaptcha" data-sitekey="Ma clé publique"></div>

- Puis ajouter le fichier recaptcha.php avec ceci dedans :
<?php
/**
*
*
  • Permission is hereby granted, free of charge, to any person obtaining a copy
  • of this software and associated documentation files (the "Software"), to deal
  • in the Software without restriction, including without limitation the rights
  • to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  • copies of the Software, and to permit persons to whom the Software is
  • furnished to do so, subject to the following conditions:

*
  • The above copyright notice and this permission notice shall be included in
  • all copies or substantial portions of the Software.

*
  • THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  • IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  • FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  • AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  • LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  • OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  • THE SOFTWARE.
  • /

/**
  • A ReCaptchaResponse is returned from checkAnswer().
  • /

class ReCaptchaResponse
{
public $success;
public $errorCodes;
}
class ReCaptcha
{
private static $_signupUrl = "https://www.google.com/recaptcha/admin";
private static $_siteVerifyUrl =
"https://www.google.com/recaptcha/api/siteverify?";
private $_secret;
private static $_version = "php_1.0";
/**
  • Constructor.

*
  • @param string $secret shared secret between site and ReCAPTCHA server.
  • /

function ReCaptcha($secret)
{
if ($secret == null || $secret == "") {
die("To use reCAPTCHA you must get an API key from <a href='" . self::$_signupUrl . "'>" . self::$_signupUrl . "</a>");
}
$this->_secret=$secret;
}
/**
  • Encodes the given data into a query string format.

*
  • @param array $data array of string elements to be encoded.

*
  • @return string - encoded request.
  • /

private function _encodeQS($data)
{
$req = "";
foreach ($data as $key => $value) {
$req .= $key . '=' . urlencode(stripslashes($value)) . '&';
}
// Cut the last '&'
$req=substr($req, 0, strlen($req)-1);
return $req;
}
/**
  • Submits an HTTP GET to a reCAPTCHA server.

*
  • @param string $path url path to recaptcha server.
  • @param array $data array of parameters to be sent.

*
  • @return array response
  • /

private function _submitHTTPGet($path, $data)
{
$req = $this->_encodeQS($data);
$response = file_get_contents($path . $req);
return $response;
}
/**
  • Calls the reCAPTCHA siteverify API to verify whether the user passes
  • CAPTCHA test.

*
  • @param string $remoteIp IP address of end user.
  • @param string $response response string from recaptcha verification.

*
  • @return ReCaptchaResponse
  • /

public function verifyResponse($remoteIp, $response)
{
// Discard empty solution submissions
if ($response == null || strlen($response) == 0) {
$recaptchaResponse = new ReCaptchaResponse();
$recaptchaResponse->success = false;
$recaptchaResponse->errorCodes = 'missing-input';
return $recaptchaResponse;
}
$getResponse = $this->_submitHttpGet(
self::$_siteVerifyUrl,
array (
'secret' => $this->_secret,
'remoteip' => $remoteIp,
'v' => self::$_version,
'response' => $response
)
);
$answers = json_decode($getResponse, true);
$recaptchaResponse = new ReCaptchaResponse();
if (trim($answers ['success']) == true) {
$recaptchaResponse->success = true;
} else {
$recaptchaResponse->success = false;
$recaptchaResponse->errorCodes = $answers [error-codes];
}
return $recaptchaResponse;
}
}
?>
0
Denizay Messages postés 105 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 21 novembre 2021 3
1 mars 2017 à 09:11
Merci pour la réponse.
Donc le fait que le captcha n'agit pas est dû au fait qu'il y a peut être une erreur de code?

As-tu vu le bout de code qui s'affiche sur ma page contact? Je n'arrive pas à le retirer
0
1Seb Messages postés 166 Date d'inscription dimanche 27 mars 2016 Statut Membre Dernière intervention 30 octobre 2021 37
1 mars 2017 à 09:57
Petite rectification : Ce n'est pas recaptcha.php mais recaptchalib.php

Oui il y a une erreur de code.

J'ai suivi les instructions de google et de https://fr.jeffprod.com/blog/2014/installez-le-nouveau-captcha-de-google-sur-votre-site-en-php.html
0
Denizay Messages postés 105 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 21 novembre 2021 3
1 mars 2017 à 10:07
Merci, je revérifie tous ça, j'avais suivi le tuto de grafikart: https://www.grafikart.fr/tutoriels/recaptcha-anti-spam-346

En regardant la vidéo mais j'ai quand même eu une erreur.

Par contre avec son tuto il n'y avait pas de fichier recaptchalib.php il sert à quoi exactement?
0
1Seb Messages postés 166 Date d'inscription dimanche 27 mars 2016 Statut Membre Dernière intervention 30 octobre 2021 37 > Denizay Messages postés 105 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 21 novembre 2021
1 mars 2017 à 14:02
Le fichier recaptchalib.php sert à vérifier la validité du Captcha
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SKYMWebDev Messages postés 162 Date d'inscription jeudi 10 novembre 2016 Statut Membre Dernière intervention 14 février 2018 176
28 févr. 2017 à 18:50
Bonjour,
Chez free.fr le serveur mail déconne pas mal, genre le mail dit qu'il est envoyé alors qu'il na pas été envoyé... (env. 1 mail sur 5 s'envoie réellement) Il n'y a donc q'une solution: changer d'hébergeur...!

Cordialement,
SKYMWevDev
0
Denizay Messages postés 105 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 21 novembre 2021 3
1 mars 2017 à 09:12
D'accord je vois :( en attendant les autres hébergeurs sont payant même si c'est vrai que c'est pas énorme c'est pas comme si mon site allait m'apporter... il n'est pas à but lucratif. C'est pour ça que j'ai fais le choix free
0
SKYMWebDev Messages postés 162 Date d'inscription jeudi 10 novembre 2016 Statut Membre Dernière intervention 14 février 2018 176 > Denizay Messages postés 105 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 21 novembre 2021
1 mars 2017 à 12:55
Je connais 2 hébergeurs gratuits avec fonction mail que j'utilise:
- https://www.legtux.org (500 mails/semaine)
- https://www.000webhost.com (50 mails/jour)

Ils sont tous les deux stables et gratuits.
0
Denizay Messages postés 105 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 21 novembre 2021 3 > SKYMWebDev Messages postés 162 Date d'inscription jeudi 10 novembre 2016 Statut Membre Dernière intervention 14 février 2018
Modifié par Mavicik le 1/03/2017 à 13:38
Merci je vais voir ça. Avec pubs ou sans ?
0
SKYMWebDev Messages postés 162 Date d'inscription jeudi 10 novembre 2016 Statut Membre Dernière intervention 14 février 2018 176 > Denizay Messages postés 105 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 21 novembre 2021
Modifié par SKYMWebDev le 1/03/2017 à 13:54
Sans pub bien sur ;) !
Entre les deux je conseille plutôt https://www.000webhost.com parceque l'inscription se fait instantanément et les noms de domaines sont très variés alors que l'autre il ny a pas trop le choix.
0
Denizay Messages postés 105 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 21 novembre 2021 3
1 mars 2017 à 13:39
1Seb, je précise que mon code php est dans une source .html
Cela peut-il poser problème?
0
SKYMWebDev Messages postés 162 Date d'inscription jeudi 10 novembre 2016 Statut Membre Dernière intervention 14 février 2018 176
1 mars 2017 à 13:55
A oui effectivement il faut que ce soit un fichier en .php pour qu'il soit traité ;) .
0
1Seb Messages postés 166 Date d'inscription dimanche 27 mars 2016 Statut Membre Dernière intervention 30 octobre 2021 37
1 mars 2017 à 14:00
Oui bien sûr j'aurai du faire la remarque, désolé.

A partir du moment où vous placez du code PHP dans un fichier *.htm ou *.html, vous devrez renommer ce fichier en *.php ou encore *.phtml, bien que le plus utilisé soit *.php. Si vous ne faites pas cette manipulation, le code apparaîtra en toutes lettres dans le navigateur sans être exécuté par le serveur (n'ayant pas reconnu l'extension associée à php)

Source : http://www.phpdebutant.org/article54.php
0
Denizay Messages postés 105 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 21 novembre 2021 3
1 mars 2017 à 14:22
C'est compris!
Maintenant que mon fichier est renommé: contact.php avec le code qu'il faut, j'ai bien mon recaptcha mais comme tu peux le remarquer, (mon site est visible si tu as toujours le lien.) celui-ci n'agit toujours pas.
Une personne entre ses informations puis peut cliquer sur "Envoyer" sans passer par le recaptcha. Ce qui ne devrait pas arriver.

Sinon, le recaptcha fonctionne quand on l'essaye.

Enfin, je ne reçois toujours pas les mails mais bon apparemment ça peut être dû à free.fr ...
0
dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451 > Denizay Messages postés 105 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 21 novembre 2021
Modifié par dugenou le 2/03/2017 à 08:50
Bonjour,

Il y a deux problèmes avec Free, la fonction mail fonctionne de manière aléatoire et les appels aux serveurs externes sont interdits, ce qui est souvent utilisé avec les systèmes de captcha.

La solution pourrait être de placer à la racine un fichier .htaccess contenant :

<IfDefine Free>
php56 1
</IfDefine>

Car, certains accès à des serveurs externes sont autorisés (liste blanche), mais en PHP 5.6.

Personnellement, pour sécuriser les formulaires de contact sur mes sites hébergés chez Free.fr, j'utilise une autre solution.

Je place une image


de cette manière

<p>Code anti-spam <img src=""quot;systeme/code.gif" alt="code" title="code"> <input type="text" name="code" size="1" maxlength="1"></p>


Puis, j'ajoute une condition

if ($code != "4")


C'est moins efficace qu'un vrai captcha, mais en plusieurs années, je n'ai jamais eu de spam.
0
Denizay Messages postés 105 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 21 novembre 2021 3 > dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021
2 mars 2017 à 09:10
Merci pour la réponse.
En effet c'est une bonne idée mais pour les experts je pense que c'est un jeu d'enfant de contrer ça.
Si vraiment je ne réussi pas à résoudre le soucis je tenterai cette méthode.

Concernant le fichier .htaccess j'entre seulement le code que tu as noté plus haut? Car je l'ai fait puis inséré à la racine du site mais je ne remarque aucun changement. Il devait servir à quoi exactement?
0
Denizay Messages postés 105 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 21 novembre 2021 3
2 mars 2017 à 12:51
Coucou,

En suivant le tuto de jeffprod, j'ai une erreur qui apparaît sur la page contact.php de mon site.

J'ai vérifié mais je ne vois pas trop d'où vient cette erreur.
0
jordane45 Messages postés 38292 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024 4 704
2 mars 2017 à 14:35
Bonjour,

Tu as une erreur.. ah.?
Je pense que si tu donnais :
1 - Le message d'erreur rencontré (complet ! )
2 - Le code qui se trouve sur la page en question.
alors là ... peut-être que quelqu'un sera en mesure de te répondre....... :-)
0
Denizay Messages postés 105 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 21 novembre 2021 3
Modifié par Mavicik le 3/03/2017 à 09:16
Bonjour à toi Jordane45,

En effet, si tu avais suivit le sujet me comprendre serai plus simple. La personne a qui je m'adresse connait le sujet et je précise que mon site internet est indiqué plus haut dans le sujet. Donc ma page "contact" est accessible pour pouvoir voir le message d'erreur.

Mais, je vais tout de même le partager ainsi que le code ;)

Voici le message d'erreur qui apparaît sur ma page:

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /mnt/171/sdb/b/0/lenaphotography/recaptchalib.php on line 37

J'ai bien entendu été voir ma ligne 37, mais je ne comprends pas le problème (je suis débutante). Donc je ne parviens pas à résoudre le problème.

Voici le code de la page contact.php:

<!DOCTYPE html>
<?php
require 'recaptchalib.php';
$siteKey = '6LeJKRcUAAAAADiJ1I7KJ6h_o4brqlKpylbfbHZa'; // votre clé publique
$secret = ''; // votre clé privée
?>
<html lang="en">

<head>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">
 <meta name="viewport" content="width=device-width"/>
    
 <title>Contact | Lena Photography</title>

    <!-- Bootstrap Core CSS -->
    <link href="bootstrap.min.css" rel="stylesheet">

    <!-- Theme CSS -->
    <link href="clean-blog.min.css" rel="stylesheet">

    <!-- Custom Fonts -->
    <link href="vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
    <link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
    <link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>

    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
        <script src=""quot;"quot;"quot;https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
        <script src=""quot;"quot;"quot;https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
 
<script src=""quot;"quot;"quot;https://www.google.com/recaptcha/api.js"></script>

</head>

<body>

 
<!-- Empeche le clic droit  -->
<script language="JavaScript1.2"> 

function ejs_nodroit() 
{ 
alert('Vous ne pouvez pas copier cette page.'); 
return(false); 
} 

document.oncontextmenu = ejs_nodroit; 
</script>

    <!-- Navigation -->
    <nav class="navbar navbar-default navbar-custom navbar-fixed-top">
        <div class="container-fluid">
               <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header page-scroll">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
                    <span class="sr-only">Toggle navigation</span>
                    Menu <i class="fa fa-bars"></i>
                </button>
                <a class="navbar-brand" href="index.html" rel="nofollow noopener noreferrer" target="_blank">Lena Photography</a>
            </div>
           

            <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                <ul class="nav navbar-nav navbar-right">
                    <li>
                        <a href="index.html" rel="nofollow noopener noreferrer" target="_blank">Accueil</a>
                    </li>
                    <li>
                        <a href="galeries.html" rel="nofollow noopener noreferrer" target="_blank">Galerie</a>
                    </li>
                    <li>
                        <a href="about.html" rel="nofollow noopener noreferrer" target="_blank">A propos</a>
                    </li>
                    <li>
                        <a href="contact.php" rel="nofollow noopener noreferrer" target="_blank">Contact</a>
                    </li>
                </ul>
            </div>
            <!-- /.navbar-collapse -->
        </div>
        <!-- /.container -->
    </nav>

    <!-- Page Header -->
    <!-- Set your background image for this header on the line below. -->
    <header class="intro-header" style="background-image: url('img/lena.jpg')">
        <div class="container">
            <div class="row">
                <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
                    <div class="page-heading">
                        <h1 style="font-family: HarabaraHand" >Lena Photography</h1>
                        <hr class="small">
                        <span class="subheading">Une question? Un renseignement? J'ai la réponse.</span>
                    </div>
                </div>
            </div>
        </div>
    </header>
 

  
    <!-- Main Content -->
    <div class="container">
        <div class="row">
            <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
                <p>Vous souhaitez être mis en relation avec moi? Remplissez le formulaire ci-dessous puis cliquez sur Envoyer et je tenterai de vous répondre dans les 24 heures! </p>
                <!-- Contact Form - Enter your email address on line 19 of the mail/contact_me.php file to make this form work. -->
                <!-- WARNING: Some web hosts do not allow emails to be sent through forms to common mail hosts like Gmail or Yahoo. It's recommended that you use a private domain email address! -->
                <!-- NOTE: To use the contact form, your site must be on a live web host with PHP! The form will not work locally! -->
                <form name="sentMessage" id="contactForm" novalidate>
                    <div class="row control-group">
                        <div class="form-group col-xs-12 floating-label-form-group controls">
                            <label>Nom</label>
                            <input type="text" class="form-control" placeholder="Nom" id="name" required data-validation-required-message="Entrez votre nom s'il vous plaît.">
                            <p class="help-block text-danger"></p>
                        </div>
                    </div>
                    <div class="row control-group">
                        <div class="form-group col-xs-12 floating-label-form-group controls">
                            <label>E-mail</label>
                            <input type="email" class="form-control" placeholder="E-mail" id="email" required data-validation-required-message="Entrez votre adresse e-mail s'il vous plaît.">
                            <p class="help-block text-danger"></p>
                        </div>
                    </div>
                    <div class="row control-group">
                        <div class="form-group col-xs-12 floating-label-form-group controls">
                            <label>Numéro de téléphone</label>
                            <input type="tel" class="form-control" placeholder="Numéro de téléphone" id="phone" required data-validation-required-message="Entrez votre numéro de contact s'il vous plaît.">
                            <p class="help-block text-danger"></p>
                        </div>
                    </div>
                    <div class="row control-group">
                        <div class="form-group col-xs-12 floating-label-form-group controls">
                            <label>Message</label>
                            <textarea rows="5" class="form-control" placeholder="Message" id="message" required data-validation-required-message="Entrez votre message s'il vous plaît."></textarea>
                            <p class="help-block text-danger"></p>
                        </div>
                    </div>
                    <br>
     
     <div class="g-recaptcha" data-sitekey="<?php echo $siteKey; ?>"></div>
 
                    <div id="success"></div>
                    <div class="row">
                        <div class="form-group col-xs-12">
                            <button type="submit" class="btn btn-default">Envoyer</button>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>
 
 <?php
$reCaptcha = new ReCaptcha($secret);
if(isset($_POST["g-recaptcha-response"])) {
    $resp = $reCaptcha->verifyResponse(
        $_SERVER["REMOTE_ADDR"],
        $_POST["g-recaptcha-response"]
        );
    if ($resp != null && $resp->success) {echo "CAPTCHA OK";}
    else {echo "CAPTCHA incorrect";}
    }
?>

    <hr>

    <!-- Footer -->
    <footer>
        <div class="container">
            <div class="row">
                <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
                    
                    <p class="copyright text-muted">Tous droit réservés<br />© 2017 Lena Photography</p>
                </div>
            </div>
        </div>
    </footer>

    <!-- jQuery -->
    <script src=""quot;"quot;"quot;js/jquery.min.js"></script>

    <!-- Bootstrap Core JavaScript -->
    <script src=""quot;"quot;"quot;js/bootstrap.min.js"></script>

    <!-- Contact Form JavaScript -->
    <script src=""quot;"quot;"quot;js/jqBootstrapValidation.js"></script>
    <script src=""quot;"quot;"quot;js/contact_me.js"></script>

    <!-- Theme JavaScript -->
    <script src=""quot;"quot;"quot;js/clean-blog.min.js"></script>

</body>

</html>


Voici le code php recaptchalib.php de la page indiqué dans le message d'erreur:

<?php
/**
 * This is a PHP library that handles calling reCAPTCHA.
 *    - Documentation and latest version
 *          https://developers.google.com/recaptcha/docs/php
 *    - Get a reCAPTCHA API Key
 *          https://www.google.com/recaptcha/admin/create
 *    - Discussion group
 *          http://groups.google.com/group/recaptcha
 *
 * @copyright Copyright (c) 2014, Google Inc.
 * @link      http://www.google.com/recaptcha
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
/**
 * A ReCaptchaResponse is returned from checkAnswer().
 */
class ReCaptchaResponse
{
    public $success;
    public $errorCodes;
}
class ReCaptcha
{
    private static $_signupUrl = "https://www.google.com/recaptcha/admin";
    private static $_siteVerifyUrl =
        "https://www.google.com/recaptcha/api/siteverify?";
    private $_secret;
    private static $_version = "php_1.0";
    /**
     * Constructor.
     *
     * @param string $secret shared secret between site and ReCAPTCHA server.
     */
    function ReCaptcha($secret)
    {
        if ($secret == null || $secret == "") {
            die("To use reCAPTCHA you must get an API key from <a href='" . self::$_signupUrl . "'>" . self::$_signupUrl . "</a>");
        }
        $this->_secret=$secret;
    }
    /**
     * Encodes the given data into a query string format.
     *
     * @param array $data array of string elements to be encoded.
     *
     * @return string - encoded request.
     */
    private function _encodeQS($data)
    {
        $req = "";
        foreach ($data as $key => $value) {
            $req .= $key . '=' . urlencode(stripslashes($value)) . '&';
        }
        // Cut the last '&'
        $req=substr($req, 0, strlen($req)-1);
        return $req;
    }
    /**
     * Submits an HTTP GET to a reCAPTCHA server.
     *
     * @param string $path url path to recaptcha server.
     * @param array  $data array of parameters to be sent.
     *
     * @return array response
     */
    private function _submitHTTPGet($path, $data)
    {
        $req = $this->_encodeQS($data);
        $response = file_get_contents($path . $req);
        return $response;
    }
    /**
     * Calls the reCAPTCHA siteverify API to verify whether the user passes
     * CAPTCHA test.
     *
     * @param string $remoteIp   IP address of end user.
     * @param string $response   response string from recaptcha verification.
     *
     * @return ReCaptchaResponse
     */
    public function verifyResponse($remoteIp, $response)
    {
        // Discard empty solution submissions
        if ($response == null || strlen($response) == 0) {
            $recaptchaResponse = new ReCaptchaResponse();
            $recaptchaResponse->success = false;
            $recaptchaResponse->errorCodes = 'missing-input';
            return $recaptchaResponse;
        }
        $getResponse = $this->_submitHttpGet(
            self::$_siteVerifyUrl,
            array (
                'secret' => $this->_secret,
                'remoteip' => $remoteIp,
                'v' => self::$_version,
                'response' => $response
            )
        );
        $answers = json_decode($getResponse, true);
        $recaptchaResponse = new ReCaptchaResponse();
        if (trim($answers ['success']) == true) {
            $recaptchaResponse->success = true;
        } else {
            $recaptchaResponse->success = false;
            $recaptchaResponse->errorCodes = $answers [error-codes];
        }
        return $recaptchaResponse;
    }
}
?>
0
Denizay Messages postés 105 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 21 novembre 2021 3
4 mars 2017 à 09:02
Personne pour m'aider ?
0
dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021 1 451 > Denizay Messages postés 105 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 21 novembre 2021
Modifié par dugenou le 4/03/2017 à 09:50
Bonjour,

La première chose est de déterminer quelle est la ligne 37 du fichier recaptchalib.php.
J'ai retiré tous les commentaires et nous arrivons alors à ce paragraphe :

    private function _submitHTTPGet($path, $data)
    {
        $req = $this->_encodeQS($data);
        $response = file_get_contents($path . $req);
        return $response;
    }


La ligne 37 serait alors :

 $response = file_get_contents($path . $req);


Le message d'erreur précise qu'il y a une erreur de syntaxe. Elle me semble correcte, mais chez Free, file_get_contents() n'est pas accepté, en principe, sauf si le serveur appelé se trouve dans une liste blanche, très limitée et en PHP 5.6.

https://forum.freenews.fr/index.php?topic=48714.0

Si j'ai bien compris ce que j'ai lu dans les NewsGroups de Free, le serveur du captcha de Google y figure, mais c'est à vérifier.

Maintenant, ce n'est peut-être pas cette ligne là, la ligne 37.
0
Denizay > dugenou Messages postés 6087 Date d'inscription mercredi 19 janvier 2005 Statut Contributeur Dernière intervention 30 juillet 2021
4 mars 2017 à 14:06
J'ai vérifié la ligne 37 sur mon fichier recaptchalib.php en local et voici ce que j'ai:

 $req = "";
        foreach ($data as $key => $value) {
            $req .= $key . '=' . urlencode(stripslashes($value)) . '&';
        }
        // Cut the last '&'
        $req=substr($req, 0, strlen($req)-1);
        return $req;
    }


La ligne 37 est celle-ci plus exactement:
 $req = "";


Puis, lorsque je consulte mon site en local ma page s'affiche sans erreur donc ça se passe seulement lorsqu'elle est en ligne chez free.

Concernant le fichier dont tu parles pour php56 1 je l'ai ajouté à la racine de mon site, il contient cela:

<IfDefine Free> 
php56 1 
</IfDefine> 
0