Bonjour,

Je rencontre un problème tout bête, et j’essaie en désespoir de cause (depuis 3 jours) tout ce que je trouve sur le net mais sans réussite.

Mon problème:

Je cherche à transmettre une variable javascript qui renvoi une chaine de caractère (que j'affiche facilement via une alert) à un formulaire de contact de ce type.

var toto= (myCamera.getVideo().uuid);
alert (toto);

Je voudrais envoyer en clair la chaine de caractère au destinataire du formulaire. Je sais bien que javacript coté client, et php coté serveur...j'ai essayé l'ajax, les window.XMLHttpRequest...c'est tout bête mais impossible d'envoyer en clair quoique se soit.

Je ne sais pas si j'ai posté dans la bonne section, mais si une âme charitable pouvait m'aiguiller.

Merci

12 réponses


Je suis pas sur de comprendre:
Tu as un formulaire avec divers champs que tu peux soumettre, et tu voudrais que, en plus de ces champs, tu puisses envoyer une variable javascript aussi lors de la soumission du formulaire ?

Le script renvoi un identifiant unique (chaine de caractère), et ce numéro je veux le transmettre à l'internaute par mail qui a inscrit son email (je n'utilise pas les autres champs). En fait je veux tout simplement afficher ce numéro dans le contenu du mail (sous forme de texte).

Bah le plus simple semble l'ajout d'un champ caché a ton formulaire, puis en utilisant jquery tu mets a jour la valeur de ce champ caché pour qu'il corresponde a ta variable:

<form ...>
    <input type="email" name="email" />
    <input type="hidden" name="uniqId" id="uniqIdField" />
</form>
<script>
    $( document ).ready(function(){
        $('#uniqIdField').val( myCamera.getVideo().uuid );
    });
</script>

De cette facon lors de la soumission, tu peux récupérer son email et ta variable javascript coté serveur, et fair ece que tu veux ensuite ...

Merci Vallyan,

malheureusement le mail part mais j'ai un blanc à la place de la variable uniqIdField...

voici le fichier php

<?php
/*
    ********************************************************************************************
    CONFIGURATION
    ********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = 'toto@toto.fr';
// copie ? (envoie une copie au visiteur)
$copie = 'oui';
// Action du formulaire (si votre page a des paramètres dans l'URL)
// si cette page est index.php?page=contact alors mettez index.php?page=contact
// sinon, laissez vide
$form_action = '';
// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu !";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
// Message d'erreur du formulaire
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
/*
    ********************************************************************************************
    FIN DE LA CONFIGURATION
    ********************************************************************************************
*/
/*
 * cette fonction sert à nettoyer et enregistrer un texte
 */
function Rec($text)
{
    $text = htmlspecialchars(trim($text), ENT_QUOTES);
    if (1 === get_magic_quotes_gpc())
    {
        $text = stripslashes($text);
    }
    $text = nl2br($text);
    return $text;
};
/*
 * Cette fonction sert à vérifier la syntaxe d'un email
 */
function IsEmail($email)
{
    $value = preg_match('/^(?:\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
    return (($value === 0) || ($value === false)) ? false : true;
}
// formulaire envoyé, on récupère tous les champs.
$email = (isset($_POST'email'])) ? Rec($_POST'email']) : '';
$uniqIdField = (isset($_POST'uniqIdField'])) ? Rec($_POST'uniqIdField']) : '';
// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
if (isset($_POST'envoi']))
{
    if ($email != '')
    {
        // les 4 variables sont remplies, on génère puis envoie le mail
        $headers = 'From:'.'dede'.' <'.$email.'>' . "\r\n";
        //$headers .= 'Reply-To: '.$email. "\r\n" ;
        //$headers .= 'X-Mailer:PHP/'.phpversion();
        // envoyer une copie au visiteur ?
        if ($copie == 'oui')
        {
            $cible = $destinataire.','.$email;
        }
        else
        {
            $cible = $destinataire;
        };
        // Remplacement de certains caractères spéciaux
        $message = ('merci voici le numero' . $uniqIdField .'a bientot');

        // Envoi du mail
        if (mail($cible, $objet, $message, $uniqIdField, $headers))
        {
            echo '<p>'.$message_envoye.'</p>';
        }
        else
        {
            echo '<p>'.$message_non_envoye.'</p>';
        };
    }
    else
    {
        // une des 3 variables (ou plus) est vide ...
        echo '<p>'.$message_formulaire_invalide.'</p>';
        $err_formulaire = true;
    };
}; // fin du if (!isset($_POST'envoi']))

?>

Ton PHP semble bon, je suppose qu'il y a un probleme coté client.
Avant d'envoyer le formulaire, depuis ta page de contact, ouvre l'inspecteur (F12 sous chrome et FF) et vérifier que tu as bien une valeur pour le champ caché uniqId. SI ce n'est pas le cas: le petit script que je t'ai donné utilise jQuery pour changer cette valeur. Charges-tu bien jQuery ? si oui, as-tu bien placé le script après avoir chargé jQuery?

Essaye aussi de mettre en dure une valeur a ton champs (directement depuis le fichier HTML, a la main) pour vérifier que tu récupères bien une valeur quand il y en a une.

Bonjour, si l'html est bien celui posté par vallyan alors en php tu as une erreur à cette ligne.

$uniqIdField = (isset($_POST'uniqIdField'])) ? Rec($_POST'uniqIdField']) : '';

tu récupère le post via l'id et non le name du champ.
essaie :

$uniqIdField = (isset($_POST'uniqId'])) ? Rec($_POST'uniqId']) : '';

Arf ! completement ! Merci Lotfi

Pas de quoi.
je les nommes souvent pareil pour pas me rater de ce côté la lol :p

Merci Lofti, j'avais corrigé de moi même en les appelant de la même façon.
Je pense avoir un problème du coté client.
en fait j'arrive à afficher dans alert de cette façon...j'utilise CameraTag.

CameraTag.observe('reves', "playbackStopped", function(){
var toto= (myCamera.getVideo().uuid);
alert (toto); //celà renvoi bien la chaine désirée (je les appelé toto plutôt que uniqField (je me suis fait avoir avec l'orthographe), mais je n'arrive pas à le écupérer dans mon form.

T'as pu faire les quelques vérif que je suggère plus haut, avec l'inspecteur, avec une valeur en dur pour ton champ caché, et en ce qui concerne jQuery ?

C'est clair qu'il nous en faudrait plus du coup pour pouvoir aider au mieux ! :)
On parie une glace Vallyan ?

Disons une bière ... ca me motivera un peu plus