débutant formulaire de contact

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 : débutant formulaire de contact

Re: débutant formulaire de contact

par david_vidda » 03 avr. 2010, 08:25

Bonjour j utilise le logiciel kompozer pour m aider a créer les pages web, c est peut etre pour ca que ca merde ? ou ca viens vraiment de moi qui n est pas douer pour un clou !! lool

Re: débutant formulaire de contact

par Dr@ke » 02 avr. 2010, 20:35

Sinon tu peux le faire toi même en commençant par ici:
http://www.phpdebutant.org/article56.php

Re: débutant formulaire de contact

par Dr@ke » 02 avr. 2010, 19:58

La partie php a disparue? #-o

Re: débutant formulaire de contact

par david_vidda » 02 avr. 2010, 19:54

<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<title>Formulaire de contact</title>
</head>
<body style="color: steelblue;">
<!-- Début du DIV -->
<div style="margin-top: 30px;">
<form action="#" method="post">
<table
style="border: 1px inset lavender; padding: 6px; margin-left: auto; margin-right: auto; background-color: rgb(245, 245, 245);"
cellpadding="2">
<tbody>
<tr>
<td style="text-align: center; padding-bottom: 15px;"
colspan="2">Formulaire de contact</td>
</tr>
<tr>
<td>Nom</td>
<td><input name="nom" maxlength="50" type="text"></td>
</tr>
<tr>
<td>Email</td>
<td><input name="email" maxlength="50" type="text"> (minuscules)</td>
</tr>
<tr>
<td>Sujet</td>
<td><input name="sujet" maxlength="50" type="text"></td>
</tr>
<tr>
<td>Qui suis-je?</td>
<td>
<select name="qui">
<option value="hybride">Je ne sais pas</option>
<option value="robot">Robot</option>
<option value="humain">Humain</option>
</select>
</td>
</tr>
<tr>
<td>Message</td>
<td><textarea rows="10" cols="40" name="message"></textarea></td>
</tr>
<tr>
<td><input value="Envoyer" type="submit"></td>
</tr>
</tbody>
</table>
</form>
<p style="text-align: center; font-size: 10px;">Class Php Mail
(Dr@ke) (<a href="http://palacesec.freehostia.com/">http://palacesec.freehostia.com/</a>)</p>
<p><?php print($obj); ?></p>
</div>
<!-- Fin du Div -->
</body>
</html>


Voili voilou mon fichier source !! :)

Re: débutant formulaire de contact

par Dr@ke » 02 avr. 2010, 00:15

Montre nous la source complète de ta page test.php.
Tu la copies/colles ici, ensuite tu la sélectionnes puis clique sur le bouton PHP au dessus là.

(Car je viens de tester moi-même exactement de la façon que je t'ai dis, et cela fonctionne très bien)

Re: débutant formulaire de contact

par david_vidda » 01 avr. 2010, 23:35

éh éh ayé j ai fais comme tu me l as dis tout sur la mm page le php avant la construction de l html.
mais quand je teste le formulaire ca a pas l air de fonctionner j appuie sur envoie et ca me réapparait de suite sur le formulaire qui est lui redevenue vierge, et je ne recois rien dans ma boite mail !! ?? je déséspère d avoir un formulaire de contact lool
http://www.mendezgirl.com/test.php

Re: débutant formulaire de contact

par Dr@ke » 01 avr. 2010, 23:01

Tout dans la même page.

Donc ce que tu as fais, mais la partie php et html dans la même page.
La partie php avant la partie html.

Et donc cette seule page, tu la nommes en php.

Php gère très bien les parties html, donc pas d'inquiétude :wink:

Re: débutant formulaire de contact

par david_vidda » 01 avr. 2010, 22:58

Bonsoir merci d avoir pris le temp de m éxpliquer :)
alors j ai pas une page avec ce script la que j ai nomé en php :

<?php
class FormMailDrk
{
// déclaration des propriétés
private $count;
private $message;
private $verif;
private $email;
private $sujet;
private $nom;
private $header;
private $destinataire;
private $max_email = 50;
private $max_sujet = 50;
private $max_nom = 50;
private $max_message = 500;
private $array_post;
private $send;
private $mess;


public function __construct($count, $max_email, $max_sujet, $max_nom, $max_message) {
$this->send = false;
$this->mess = false;
if (func_num_args() !== 5) {
$this->verif = 'Nombre d\'arguments invalide';
} else if (!empty($_POST) && !$this->no_strings()) {
$this->count = (int) $count;
$this->max_email = (int) $max_email;
$this->max_sujet = (int) $max_sujet;
$this->max_nom = (int) $max_nom;
$this->max_message = (int) $max_message;

// Constante PHP_VERSION_ID
if (!defined('PHP_VERSION_ID')) {
list($major, $minor, $release) = explode('.', PHP_VERSION, 3);
$release = (int)$release;
if ($release < 10) $release = "0$release";
define('PHP_VERSION_ID', "{$major}0{$minor}$release");
}

$this->clean_post();
} else {
$this->verif = null;
}
}

private function clean_post() {
if (count($_POST) === $this->count) {
$_POST = $this->m_verifgpc();
$_POST = array_map('trim', $_POST);
$this->message = isset($_POST['message']) ? $_POST['message'] : null;
$_POST = $this->m_antispam();
if (!$this->m_empty() && isset($this->message)) {
$this->mess = true;
$this->verif_form();
} else {
$this->verif = 'Veuillez remplir tous les champs du formulaire, svp';
}
} else {
$this->verif = 'Nombre de champs envoyés invalide';
}
}

private function verif_form() {
$this->sujet = isset($_POST['sujet']) ? $_POST['sujet'] : null;
$this->nom = isset($_POST['nom']) ? $_POST['nom'] : null;
$this->email = isset($_POST['email']) ? $_POST['email'] : null;
if (!isset($this->sujet) || !isset($this->nom)) {
$this->verif = 'Veuillez remplir tous les champs du formulaire, svp';
} else if ($this->verif_mail($this->email)) {
$this->set_taille();
} else {
$this->verif = 'Email Invalide: ' . $this->email;
}
}

private function set_taille() {
$this->message = substr($this->message, 0, $this->max_message);
$this->sujet = substr($this->sujet, 0, $this->max_sujet);
$this->nom = substr($this->nom, 0, $this->max_nom);
$this->set_header();
}

private function set_header() {
$this->header = 'From: ' . $this->email . "\n";
$this->header .= 'Reply-To: ' . $this->email . "\n";
$this->header .= 'X-Mailer: PHP/' . PHP_VERSION . "\n";
$this->header .= 'Content-type: text/plain; charset=iso-8859-1' . "\n";
$this->set_array();
}

private function set_array() {
$this->array_post = array('nom' => $this->nom,
'sujet' => $this->sujet,
'email' => $this->email,
'message' => $this->message,
'header' => $this->header);
$this->send = true;
}

private function m_verifgpc() {
return (PHP_VERSION_ID < 60000 && get_magic_quotes_gpc())
? array_map('stripslashes', $_POST) : $_POST;
}

private function m_empty() {
foreach($_POST as $index => $valeur) {
if (empty($valeur)) return true;
}
return false;
}

private function m_antispam() {
$valid_array = array(chr(10), chr(13));
foreach($_POST as $index => $valeur) {
$_POST[$index] = str_replace($valid_array, '', $valeur);
}
return $_POST;
}

private function no_strings() {
foreach($_POST as $index => $valeur) {
if (!is_string($valeur)) return true;
}
return false;
}

private function is_win() {
return (substr(PHP_OS, 0, 3) === 'WIN');
}

private function verif_safemode() {
if (PHP_VERSION_ID < 60000) {
$safe_mode = ini_get('safe_mode');
return $safe_mode;
} else {
return false;
}
}

// Vérifier la syntaxe d'un email
public function verif_mail($email = null) {
if ($this->mess) {
$email = (string) $email;
if (strlen($email) < $this->max_email && preg_match('#^[a-z0-9]+([-_.][a-z0-9]+)*@[a-z0-9]+([-.][a-z0-9]+)*\.[a-z]{2,4}$#', $email)) {
if ($this->is_win() && PHP_VERSION_ID < 50300) {
return true;
} else {
$email = end(explode('@', $email));
return checkdnsrr($email, 'NS');
}
} else {
return false;
}
}
}

public function send_mail($destinataire = null) {
if ($this->send) {
$this->destinataire = (string) $destinataire;
if ($this->verif_mail($this->destinataire)) {
$envoyer = ($this->verif_safemode())
? mail($this->destinataire, $this->sujet, $this->message, $this->header)
: mail($this->destinataire, $this->sujet, $this->message, $this->header, "-f{$this->email}");
$this->verif = ($envoyer) ? 'Mail envoyé' : 'Erreur critique';
} else {
$this->verif = 'Email Destinataire invalide';
}
}
}

public function __get($name = null) {
if ($this->send) {
$name = (string) $name;
if (array_key_exists($name, $this->array_post)) {
return $this->array_post[$name];
} else {
$this->verif = 'Nom de champ inconnu';
}
} else if ($this->mess && $name === 'message'){
$this->verif = null;
return $this->message;
}
}

public function __toString() {
return '<em>' . $this->verif . '</em>';
}
}

// Exemple 1 (Utilisation complète de la class) -> Traiter et envoyer
// Initialisation (nombre de posts, taille max(email, sujet, nom, message))
// Nommer les champs de votre formulaire: email, sujet, nom, message.
$obj = new FormMailDrk(5, 50, 50, 50, 500);
// Envoie de l'email
$obj->send_mail('[email protected]');

?>



Et une autre page que j ai fais en html :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Formulaire de contact</title>
</head>
<body style="color:steelblue;">

<!-- Début du DIV -->
<div style="margin-top:30px;"><form action="#" method="post">
<table style="margin-left:auto; margin-right:auto; padding:6px;
border:1px inset lavender; background-color:#F5F5F5;" cellpadding="2"><tr>
<td style="text-align:center; padding-bottom:15px;" colspan="2">Formulaire de contact</td>
</tr><tr><td>Nom</td>
<td><input type="text" name="nom" maxlength="50" /></td>
</tr><tr><td>Email</td>
<td><input type="text" name="email" maxlength="50" /> (minuscules)</td>
</tr><tr><td>Sujet</td>
<td><input type="text" name="sujet" maxlength="50" /></td>
</tr><tr><td>Qui suis-je?</td>
<td><select name="qui">
<option value="hybride">Je ne sais pas</option>
<option value="robot">Robot</option>
<option value="humain">Humain</option>
</select></td>
</tr><tr><td>Message</td>
<td><textarea rows="10" cols="40" name="message"></textarea></td>
</tr><tr><td><input type="submit" value="Envoyer" />
</td></tr></table></form><p style="text-align:center; font-size:10px;">Class Php Mail
(Dr@ke) (<a href="http://palacesec.freehostia.com/">http: ... m/</a>)</p>
<p><?php print($obj); ?></p></div>
<!-- Fin du Div -->

</body></html>

Mais comme ca malheuresement ca fonctionne toujours pas je dois faire quelques choses de travers obligé ??

Re: débutant formulaire de contact

par Dr@ke » 01 avr. 2010, 22:25

Tu copies/colles l'intégralité du script dans une nouvelle page pour tester.
Mais tu supprimes, les deux exemples qui ne correspondent pas à ton besoin.
Donc, dans ton cas, si je ne me trompe pas: tu supprimes ceci:
// Exemple 2 (utilisation partielle de la class) -> Traiter
// Nommer les champs de votre formulaire: email, sujet, nom, message.
$obj = new FormMailDrk(5, 50, 50, 50, 500);
// Récupérer les champs nom, sujet, email, message et header(généré par la class)
$nom = $obj->nom;
$sujet = $obj->sujet;
$email = $obj->email;
$message = $obj->message;
$headers = $obj->header;
print($obj);

// Exemple 3 (utilisation minimale de la class)
// La class dès son initialisation sécurise toutes les variables $_POST 
$obj = new FormMailDrk(5, 50, 50, 50, 500);
// Récupérer $_POST['message'], seul ce champ est obligatoire (Taille non vérifiée)
$message = $obj->message;
// Vérifier la syntaxe d'un email
$email = 'email@mon_email.com';
$email = $obj->verif_mail($email); // Retourne false
print($obj);
Ensuite tu supprimes ces deux lignes de l'exemple 1:
// Afficher les messages d'erreurs
print($obj);
Ensuite tu modifies l'email destinataire (email@mon_email.com) de l'exemple 1, par le tiens ici:
// Exemple 1 (Utilisation complète de la class) -> Traiter et envoyer
// Initialisation (nombre de posts, taille max(email, sujet, nom, message))
// Nommer les champs de votre formulaire: email, sujet, nom, message.
$obj = new FormMailDrk(5, 50, 50, 50, 500);
// Envoie de l'email
$obj->send_mail('email@mon_email.com');
Ensuite quand la page test fonctionne comme tu veux:
Tu regarderas le formulaire html en bas, la partie du formulaire est entourée par:
<!-- Début du DIV -->
et
<!-- Fin du Div -->
Donc cette partie tu peux l'insérer dans une de tes pages (Partie Body Html)
Ensuite la partie php, tu peux l'insérer ou tu veux dans la page mais avant le formulaire html, ou même la mettre dans un include :) .

Re: débutant formulaire de contact

par david_vidda » 01 avr. 2010, 22:05

Coucou, je voudrais bien essayer ta "classe" mais tu n aurais pas un pti tutoriel a me filer ou si tu peux m expliquer ce que je dois faire je capte pas grand chose, quelle page je dois mettre en html et l autre en php ? et est ce que je dois coller touts les exemple ou je dois en choisir un, je suis larguer complet lool désoler help me !!

Re: débutant formulaire de contact

par Dr@ke » 01 avr. 2010, 21:50

En plus il est obsolète le script que tu viens de donner.

Essaye plutôt ma classe :)

Re: débutant formulaire de contact

par david_vidda » 01 avr. 2010, 21:46

Bonsoir,
voila l adresse ou j ai trouver les scripts http://conseilscreation.free.fr/pages/contact.php

et voici a quoi ressemble mes differentes pages, la page de formulaire en htlm : http://www.mendezgirl.com/test.html
et ma page php : http://www.mendezgirl.com/test.php

j vai essayer de me creuser la tête encore ce soir, c est du charabia pour moi tout ca lool pas évident pour un débutant !!
affaire suivre je vous tiens au courant !!

Re: débutant formulaire de contact

par Dr@ke » 31 mars 2010, 01:28

Tu peux essayer cette classe, très simple d'utilisation :wink:

http://palacesec.freehostia.com/scripts/class-mail.php

Il y a un formulaire inclut, et incorporable facilement dans un site web.

Re: débutant formulaire de contact

par Aureusms » 30 mars 2010, 22:54

Si ton formulaire s'appelle test.php (même s'il contient de l'HTML), il se pourrait que tu es mis <?php avant ton paragraphe <p mais que tu es oublié de le fermer par ?>

Re: débutant formulaire de contact

par stealth35 » 30 mars 2010, 22:02

hello,
ton test.php il ressemble a quoi ?
t'as trouvé ou ton script pour les mail ?