débutant formulaire de contact

David_vidda
Invité n'ayant pas de compte PHPfrance

30 mars 2010, 22:00

Bonsoir tout le monde, je viens chercher de l aide je suis un extra débutant si ont peux dire ca comme ca,
ca fais 2 jours que je passe tous les soirs plus de 3h a essayer de créer un formulaire de contact pour mon site web mais sans resultat concluant toujours la meme erreur qui reviens sans cesse.
j ai trouvé quelques des codes déja tout prét a l emploie lool les voila :
donc j en ai un pour créer le formulaire que j enregistre sous html :

<p align="center"><strong>Contact</strong></p>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
<form action="envoi.php" method="post" enctype="application/x-www-form-urlencoded" name="formulaire">
<tr>
<td colspan="3"><strong>Envoyer un message</strong></td>
</tr>
<tr>
<td><div align="left">Votre nom :</div></td>
<td colspan="2"><input type="text" name="nom" size="45" maxlength="100"></td>
</tr>
<tr>
<td width="17%"><div align="left">Votre mail :</div></td>
<td colspan="2"><input type="text" name="mail" size="45" maxlength="100"></td>
</tr>
<tr>
<td><div align="left">Sujet : </div></td>
<td colspan="2"><input type="text" name="objet" size="45" maxlength="120"></td>
</tr>
<tr>
<td><div align="left">Message : </div></td>
<td colspan="2"><textarea name="message" cols="50" rows="10"></textarea></td>
</tr>
<tr>
<td></td>
<td width="42%"><center>
<input type="reset" name="Submit" value="Réinitialiser le formulaire">
</center></td>
<td width="41%"><center>
<input type="submit" name="Submit" value="Envoyer">
</center></td>
</tr>
</form>
</table>

ET le deuxieme code qui est lui je crois en php et que j enregistre comme envoi.php


<?php
$nom=$HTTP_POST_VARS['nom'];
$mail=$HTTP_POST_VARS['mail'];
$objet=$HTTP_POST_VARS['objet'];
$message=$HTTP_POST_VARS['message'];

/////voici la version Mine
$headers = "MIME-Version: 1.0\r\n";

//////ici on détermine le mail en format text
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";

////ici on détermine l'expediteur et l'adresse de réponse
$headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer:PHP";

$subject="$objet";
$destinataire="[email protected]"; //remplacez "[email protected]" par votre adresse e-mail
$body="$message";
if (mail($destinataire,$subject,$body,$headers)) {
echo "Votre mail a été envoyé<br>";
} else {
echo "Une erreur s'est produite";
}
?></p>
<p align="center">Vous allez bientot etre redirigé vers la page d'acceuil<br>
Si vous n'etes pas redirigé au bout de 5 secondes cliquez <a href="http://www.votre-site.com">ici
</a></p>

et j ai toujours cette erreur : Parse error: syntax error, unexpected '<' in /web/mendezgirl/www/test.php on line 2
quand j essaye le formulaire sur ma page web !!
ou ce trouve l erreur aidez moi please !! ji capte rien

ViPHP
ViPHP | 5462 Messages

30 mars 2010, 22:02

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

ViPHP
ViPHP | 1996 Messages

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 ?>
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Mammouth du PHP | 985 Messages

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.
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

david_vidda
Invité n'ayant pas de compte PHPfrance

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 !!

Mammouth du PHP | 985 Messages

01 avr. 2010, 21:50

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

Essaye plutôt ma classe :)
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

david_vidda
Invité n'ayant pas de compte PHPfrance

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 !!

Mammouth du PHP | 985 Messages

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 :) .
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

david_vidda
Invité n'ayant pas de compte PHPfrance

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é ??

Mammouth du PHP | 985 Messages

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:
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

david_vidda
Invité n'ayant pas de compte PHPfrance

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

Mammouth du PHP | 985 Messages

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)
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

david_vidda
Invité n'ayant pas de compte PHPfrance

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 !! :)

Mammouth du PHP | 985 Messages

02 avr. 2010, 19:58

La partie php a disparue? #-o
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Mammouth du PHP | 985 Messages

02 avr. 2010, 20:35

Sinon tu peux le faire toi même en commençant par ici:
http://www.phpdebutant.org/article56.php
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.