Problémes avec un formulaire php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problémes avec un formulaire php

Re: Problémes avec un formulaire php

par moogli » 24 mai 2011, 01:16

heu ben pour le php le code est déjà fonctionnel ^^

Re: Problémes avec un formulaire php

par NiKo219 » 20 mai 2011, 13:40

Oui je me suis orientez vers un formulaire html avec envoi par php... Le problèmes restera le php mais bon ça commence a rentrer :D

Re: Problémes avec un formulaire php

par moogli » 20 mai 2011, 10:00

non pas pour rien tu peux toujours proposer le formulaire en html c'est déja ça ;)


@+

Re: Problémes avec un formulaire php

par NiKo219 » 19 mai 2011, 23:26

Je suis au bout du rouleau... y a rien qui y fait marcher, je laisse tombé je crois que c'est pas fait pour moi!! En tout cas je te remercie d'avoir pris le temps de me répondre, enfin pour rien au finale.. Désolé.

Bonne continuation

Re: Problémes avec un formulaire php

par moogli » 19 mai 2011, 22:59

:/

après vous debuguer au niveau du flash, vérifier s'il envoie bien les infos correctement, je pense qu'avec l'extension firebug de firefox c'est jouable


@+

Re: Problémes avec un formulaire php

par NiKo219 » 19 mai 2011, 22:24

J'ai testé ton code, quand je passe par lui directement pas de soucis mais aucune réponse du flash par contre...

J'en déduit qu'il y a un soucis niveau flash alors!! Pourtant j'ai bien respecter le tutos.. Comprend pas!

Re: Problémes avec un formulaire php

par moogli » 18 mai 2011, 17:05

a la limite un code comme ceci serait mieux
<?php
// xcivil, xnom, xprenom, xville, xsujet, xmessage viennent du SWF
/*
$data = array();

$data[0] = $_POST['xcivil'] ;
$data[1] = $_POST['xnom'] ;
$data[2] = $_POST['xprenom'] ;
$data[3] = $_POST['xville'] ;
$data[4] = $_POST['xsujet'] ;
$data[5] = $_POST['xmessage'] ;

/* si tous les champs sont remplis, on continue
on ne teste pas la civilité * /
$checksum = 0;
for ($i=1; $i<6; $i++)
{
if ($data[$i] != "")
{ // enlève les balises html et se protège des car spéciaux
$data[$i] = AddSlashes(strip_tags($data[$i]));
$checksum++;
}
}
*/
if ( !empty($_POST['xcivil']) && !empty($_POST['xnom']) && !empty($_POST['xprenom'])
        && !empty($_POST['xville']) && !empty($_POST['xsujet']) && !empty($_POST['xmessage']) )
{ // tout est rempli on expédie
$to = "[email protected]"; // remplacer par votre adresse mail
$expediteur = "Chepaqui"; // expéditeur pas défini !
/* D'autres en-têtes : errors, From cc's, bcc's, etc */
$headers = "From:".$expediteur."\r\n";
$headers .= "X-Sender: \n"; // <= a remplir
$headers .= "X-Mailer: \n"; // mailer <= a remplir
$headers .= "X-Priority: 1\n"; // Message urgent! <= est ce utile ?
$headers .= "Return-Path: \n"; // chemin de retour pour les erreurs <= a remplir
$headers .= "Content-Type: text/html; charset=iso-8859-1\n"; // Type MIME

/**
 * Permet la 'sécurisation des données, a partir de la premiere version
 * Ceci est a completer il diot y avoir des exemple sur le forum
 * @param mixed $item
 * @param int $key
 */
function securMail (&$item, $key){
    $item = addslashes(strip_tags($item));
}
// Pour plus d'info sur la fonction array_walk => http://www.php.net/array_walk
array_walk($_POST, 'securMail');
//syntaxe heredoc parce que c'est plus lisible ainsi, plus d'info ? => la doc ;)
//le formatage est limité mais c'est pour l'exemple a toi de faire mieux ;)
$texte = <<<CorpsEmail
<html>
    <head>
        <title>${_POST['xsujet']}</title>
    </head>
    <body>
    civilit&eacute; : ${_POST['xcivil']}<br />
    Nom             : ${_POST['xnom']}<br />
    Prénom          : ${_POST['xprenom']}<br />
    ville           : ${_POST['xville']}<br />
    Sujet           : ${_POST['xsujet']}<br />
    Message         : ${_POST['xmessage']}<br />

    </body>
</html>
CorpsEmail;

// ??? votre hébergeur accepte-t'il la fonction PHP mail ???
$ret = mail ($to, $_POST['xsujet'], $texte, $headers);// @ pour éviter affichage message d'erreur du serveur
if ($ret === false ){
    $message = 'Erreur d\'envoi du mail il faut vérifier les paramètres de configuration du serveur smtp';
}
else {
    $message = 'A prioro l\'envoi c\'est bien passé ;)';
}
} // fin if checksum
else $message = 'Merci de remplir tout les champs. ';

?>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="Content-type" content="text/html;charset=UTF-8" /> 
        <title>Test Niko 219</title>
    </head>
    <body>
        <h1>Formulaire d'envoie de mail de niko 219</h1>
        <?php
            if (!empty($message)) echo '<p>'.$message.'</p>';
        ?>
        <form action="" method="post">
            <label for="xcivil">Civilit&eacute;</label><select name="xcivil">
                <option value="Melle">Mademoiselle</option>
                <option value="Mme">Madame</option>
                <option value="Mr">Monsieur</option>
            </select><br />
            <label for="xnom">Nom</label><input type="text" name="xnom" /><br />
            <label for="xprenom">Prenom</label><input type="text" name="xprenom" /><br />
            <label for="xville">Villes</label><input type="text" name="xville" /><br />
            <label for="xsujet">Sujet</label><input type="text" name="xsujet" /><br />
            <label for="message">Message</label><textarea name="xmessage"></textarea><br />
            <input type="submit" name="submit" value="Envoyer" />
        </form>
    </body>
</html>
une fois que tu valide l'envoie du mail tu vois ce que ça donne avec flash !

@+

Re: Problémes avec un formulaire php

par moogli » 18 mai 2011, 12:52

il y a deux chose
- le fichier flash
- le fichier php

il s'agit de deux entités totalement décorrélées qui doivent être validée séparément.

il est, normalement, pensable de valider le fichier php seul (car comme indiqué avant il n'a pas besoin de flash). Pour cela un bête formulaire html fait l'affaire et va te permettre de valider l'envoie de mail et ensuite de tester avec flash ;)

Pourquoi faire ainsi ?

Parce que je ne sais pas s'il est possible de récupérer la sortie courante et la traiter correctement avec flash.
Parce qu'a priori ton script lance la chose a l'aveugle et qu'il faut bien savoir ce qu'il se passe.

par exemple avec ce code
<?php
// xcivil, xnom, xprenom, xville, xsujet, xmessage viennent du SWF
$data = array();

$data[0] = $_POST['xcivil'] ;
$data[1] = $_POST['xnom'] ;
$data[2] = $_POST['xprenom'] ;
$data[3] = $_POST['xville'] ;
$data[4] = $_POST['xsujet'] ;
$data[5] = $_POST['xmessage'] ;

/* si tous les champs sont remplis, on continue
on ne teste pas la civilité */
$checksum = 0;
for ($i=1; $i<6; $i++)
{
if ($data[$i] != "")
{ // enlève les balises html et se protège des car spéciaux
$data[$i] = AddSlashes(strip_tags($data[$i]));
$checksum++;
}
}
if ( $checksum == 5 )
{ // tout est rempli on expédie
$to = "[email protected]"; // remplacer par votre adresse mail
$expediteur = "Chepaqui"; // expéditeur pas défini !
/* D'autres en-têtes : errors, From cc's, bcc's, etc */
$headers = "From:".$expediteur."\r\n";
$headers .= "X-Sender: \n"; // .= signifie concaténation
$headers .= "X-Mailer: \n"; // mailer
$headers .= "X-Priority: 1\n"; // Message urgent!
$headers .= "Return-Path: \n"; // chemin de retour pour les erreurs
$headers .= "Content-Type: text/html; charset=iso-8859-1\n"; // Type MIME

/* et hop, à la poste
On écrit,au format html, par exemple : Mr Jules César de Rome écrit */
$texte = "<html>".$data[0]." ".$data[2]." ".$data[1]." de ".$data[3]." écrit<br>";
// texte du message ( point = concaténation )
$texte .= "<br>".$data[5]."</html>";
// ??? votre hébergeur accepte-t'il la fonction PHP mail ???
mail ($to, $data[4], $texte, $headers);// @ pour éviter affichage message d'erreur du serveur
} // fin if checksum
else echo '<SCRIPT language="JAVASCRIPT">alert("Veuillez remplir tous les champs");</SCRIPT>';

?>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="Content-type" content="text/html;charset=UTF-8" /> 
        <title>Test Niko 219</title>
    </head>
    <body>
        <h1>Formulaire d'envoie de mail de niko 219</h1>
        <form action="" method="post">
            <label for="xcivil">Civilit&eacute;</label><select name="xcivil">
                <option value="Melle">Mademoiselle</option>
                <option value="Mme">Madame</option>
                <option value="Mr">Monsieur</option>
            </select><br />
            <label for="xnom">Nom</label><input type="text" name="xnom" /><br />
            <label for="xprenom">Prenom</label><input type="text" name="xprenom" /><br />
            <label for="xville">Villes</label><input type="text" name="xville" /><br />
            <label for="xsujet">Sujet</label><input type="text" name="xsujet" /><br />
            <label for="message">Message</label><textarea name="xmessage"></textarea><br />
            <input type="submit" name="submit" value="Envoyer" />
        </form>
    </body>
</html>
@+

Re: Problémes avec un formulaire php

par NiKo219 » 17 mai 2011, 19:48

Je comprend pas trop, tu fait appel a mon mail.php, pourquoi? Le fichier html sera en plus ou a la place?

Re: Problémes avec un formulaire php

par moogli » 17 mai 2011, 17:52

a tu regardé dans le dossier spam ?

le serveur web reçois une demande http avec des données "POST" et il les refiles au script php concerné (ici normalement mail.php). Ceci dit que ce soit flash ou un fichier html tous con ou un fichier php qui affiche du html il ne le sais pas et limite on s'en fou ;)

donc un fichier html avec un simple formulaire permet d'utiliser ton script

par exemple
<form action="mail.php" method="post">
<input type="text" name="champ1" />
etc etc
<input type="submit" value="envoyer" />
</form>


@+

Re: Problémes avec un formulaire php

par Niko219 » 17 mai 2011, 17:44

qu'entend tu par il ne se passe rien ?
Je ne reçoit aucun mail
A tu essayer ce script avec simplement un formulaire html pour le valider ?
non je n'y connais rien...
si ta version de php est >= 5 il est préférable d'utiliser <?php plutot que <? étant donné qu'il s'agit de la conf par défaut.
je m'en suis douté et est fait le test mais ça n'a rien donné
il faut commercer par débuguer le coté php et pour cela le mieux c'est voir ce qu'il se passe donc utilise un formulaire html avec les même champs tu pourra le faire
Avec mon flash je peut passé par un formulaire HTML?

Re: Problémes avec un formulaire php

par moogli » 17 mai 2011, 17:36

salut,

qu'entend tu par il ne se passe rien ?

A tu essayer ce script avec simplement un formulaire html pour le valider ?

si ta version de php est >= 5 il est préférable d'utiliser <?php plutot que <? étant donné qu'il s'agit de la conf par défaut.

le script php en lui même est assez peu "sécurisé".

coté flash j'y connais pas grand chose, ça a l'air ok mais bon.

il faut commercer par débuguer le coté php et pour cela le mieux c'est voir ce qu'il se passe donc utilise un formulaire html avec les même champs tu pourra le faire ;)

après si le script est bon il faut voir ce qu'il se passe entre flash et php, la c'est un poil plus complexe, par exemple l'extension de firebug de firefox devrait pouvoir t'aider).

@+

Problémes avec un formulaire php

par NiKo219 » 17 mai 2011, 17:26

Bonjour a tous, ça fait depuis une semaine que j’essaie de faire marcher ce formulaire... Mais rien a faire!!!

Mon site est fait en flash en utilisant le logiciel Swishmax et j'ai trouver un tutos qui me permétais de faire un formulaire. Je l'est fait en suivant bien les explications mais quand j’appuie sur envoyer il ne ce passe strictement rien.
<?
// xcivil, xnom, xprenom, xville, xsujet, xmessage viennent du SWF
$data = array();

$data[0] = $_POST['xcivil'] ;
$data[1] = $_POST['xnom'] ;
$data[2] = $_POST['xprenom'] ;
$data[3] = $_POST['xville'] ;
$data[4] = $_POST['xsujet'] ;
$data[5] = $_POST['xmessage'] ;

/* si tous les champs sont remplis, on continue
on ne teste pas la civilité */
$checksum = 0;
for ($i=1; $i<6; $i++)
{
if ($data[$i] != "")
{ // enlève les balises html et se protège des car spéciaux
$data[$i] = AddSlashes(strip_tags($data[$i]));
$checksum++;
}
}
if ( $checksum == 5 )
{ // tout est rempli on expédie
$to = "[email protected]"; // remplacer par votre adresse mail
$expediteur = "Chepaqui"; // expéditeur pas défini !
/* D'autres en-têtes : errors, From cc's, bcc's, etc */
$headers = "From:".$expediteur."\r\n";
$headers .= "X-Sender: \n"; // .= signifie concaténation
$headers .= "X-Mailer: \n"; // mailer
$headers .= "X-Priority: 1\n"; // Message urgent!
$headers .= "Return-Path: \n"; // chemin de retour pour les erreurs
$headers .= "Content-Type: text/html; charset=iso-8859-1\n"; // Type MIME

/* et hop, à la poste
On écrit,au format html, par exemple : Mr Jules César de Rome écrit */
$texte = "<html>".$data[0]." ".$data[2]." ".$data[1]." de ".$data[3]." écrit<br>";
// texte du message ( point = concaténation )
$texte .= "<br>".$data[5]."</html>";
// ??? votre hébergeur accepte-t'il la fonction PHP mail ???
@mail ($to, $data[4], $texte, $headers);// @ pour éviter affichage message d'erreur du serveur
} // fin if checksum
else echo '<SCRIPT language="JAVASCRIPT">alert("Veuillez remplir tous les champs");</SCRIPT>';

?>
Normalement il y a juste ce qu'il y a en rouge à modifier???
pour voir le tuto: LIEN

Qu'est ce que vous en pensez?