Formulaire guestbook

Raimon12
Invité n'ayant pas de compte PHPfrance

04 janv. 2011, 17:55

ne trouvant rien qui me plaise sur internet j'ai décidé de customiser celui que j'avais récupérer sur le site salemioche. On m'a dit qu'il n'était pas protégé mais je me suis dit autant essayer de le faire parce que je trouve le graphisme beaucoup plus simple et superieur aux scripts que l'on peut trouver sur internet... bref le formulaire est dans ma page web il l'envoi au fichier writguest.php qui l'écrit sur un document guestbook.doc qui est ensuite inclus sur ma page web voici les codes

fichier writeguest
Code :
<?php //Ouverture du fichier en écriture
 
$fp = fopen("/Applications/XAMPP/xamppfiles/htdocs/site/guestbook.doc",a);
 
 
 
//On convertit les caracteres html
 
$nom = htmlspecialchars($_POST['nom']);
 
$pays = htmlspecialchars($_POST['pays']);
 
$ville = htmlspecialchars($_POST['ville']);
 
$mail = htmlspecialchars($_POST['mail']);
 
$siteweb = htmlspecialchars($_POST['siteweb']);
 
 
$message = stripslashes(nl2br(htmlentities($_POST['message'])));
 
$d = date ( "d/m/Y" );
 
 
$page = "";
 
 
$page .= "$d<br><b>$nom</b> ($ville, $pays)
<br>$siteweb<br>
<br>$message<br><hr>\n";
 
 
 
 
//On rajoute le message
 
fwrite($fp,"$page" ,strlen("$page"));
 
 
 
//fermeture du fichier
 
fclose($fp);
 
?>
code que j'ai inséré sur ma page
Code :
<script type="text/javascript">
<!--
function MM_validateForm() { //v4.0
if (document.getElementById){
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="")
} if (errors) alert('Les erreurs suivantes doivent etre corrigées:\n'+errors);
document.MM_returnValue = (errors == '');
} }
//-->
</script>
<form method="post" action="writeguest.php"
onsubmit="MM_validateForm('nom','','R');return document.MM_returnValue">
<table>
<tbody>
<tr>
<td> Nom :</td>
<td><input name="nom" id="nom" length="30"> <span
class="Style1">*</span></td>
</tr>
<tr>
<td>Pays :</td>
<td><input name="pays" length="30" type="text"> </td>
</tr>
<tr>
<td>Ville :</td>
<td><input name="ville" length="30" type="text"> </td>
</tr>
<tr>
<td>Email :</td>
<td><input name="mail" length="30" type="text"> </td>
</tr>
<tr>
<td>Site web :</td>
<td><input name="siteweb" length="30" type="text"> </td>
</tr>
<tr>
<td>Message :</td>
<td><textarea name="message" rows="7" cols="77"></textarea><span
class="Style1"> *</span> </td>
</tr>
<tr>
<td> <br>
</td>
<td><input name="envoyer" type="submit">&nbsp;<span
style="color: silver;">Attention, les champs marqués par * sont à
remplir obligatoirement</span> </td>
</tr>
</tbody>
</table>
</form>
Je cherche encore à l'améliorer.
Je suis déçu du style des posts : seul le nom est en gras et il est impossible de différencier par le style la partie donnée (date, nom, ville, pays, site web) de la partie message - sauf le nom qui apparait en gras.
J'aimerais que la date apparaisse en gris foncé et que les autres apparaisse en gris clair. J'aimerais aussi que l'adresse du site web soit "clickable". comment faire?
Lorsqu'un utilisateur ne rentre pas les donnée ville et pays il reste marqué "(, )" comment faire pour que cela n'apparaisse qu'avec les donnée de ville et pays?
Une barre qui traverse l'écran sépare chaque message j'aimerais pouvoir réduire sa taille (elle fait environ 2px d'épaisseur) et sa couleur. Comment est ce possible?

j'aimerai aussi que le formulaire entier me soit envoyé par mail (pour que je puisse connaitre l'adresse mail de l'utilisateur) est ce possible?

raimon12
Invité n'ayant pas de compte PHPfrance

04 janv. 2011, 17:57

j'aimerai aussi que le formulaire entier me soit envoyé par mail (pour que je puisse connaitre l'adresse mail de l'utilisateur) est ce possible?
et aussi que l'utilisateur soit redirigé une fois qu'il a envoyé le formulaire

moi encore
Invité n'ayant pas de compte PHPfrance

04 janv. 2011, 17:59

http://sgdf.rodez.free.fr/site/reagir.php
voila le site,
j'ai mis un post comme j'aimerais qu'il soit envoyé et dans les autres posts on voit les problèmes

raimon12
Invité n'ayant pas de compte PHPfrance

04 janv. 2011, 18:11

http://sgdf.rodez.free.fr/site/reagir.php voila le site,
j'ai mis un post comme j'aimerais qu'il soit envoyé et dans les autres posts on voit les problèmes

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

04 janv. 2011, 18:20

heu au vu de ce que tu a fait, peut tu nous dire ce que tu ne sais pas faire ? tous ce que tu veut tu est réaliser dans ton exemple !

@+
Il en faut peu pour être heureux ......

raimon12
Invité n'ayant pas de compte PHPfrance

04 janv. 2011, 18:36

eups j'ai marqué mes questions en bas de mon 1er message. Je les remarque

Je suis déçu du style des posts : seul le nom est en gras et il est impossible de différencier par le style la partie donnée (date, nom, ville, pays, site web) de la partie message - sauf le nom qui apparait en gras.
J'aimerais que la date apparaisse en gris foncé et que les autres apparaisse en gris clair.

J'aimerais aussi que l'adresse du site web soit "clickable". comment faire?

Lorsqu'un utilisateur ne rentre pas les donnée ville et pays il reste marqué "(, )" comment faire pour que cela n'apparaisse qu'avec les donnée de ville et pays?

Une barre qui traverse l'écran sépare chaque message j'aimerais pouvoir réduire sa taille (elle fait environ 2px d'épaisseur) et sa couleur. Comment est ce possible?

j'aimerai aussi que le formulaire entier me soit envoyé par mail (pour que je puisse connaitre l'adresse mail de l'utilisateur) est ce possible?

et bien sur que le visiteur soit redirigé après l'exécution du formulaire.

Il y a un post ou le nom de l'utilisateur la date... sont en gris. je l'ai modifié directement sur le fichier guestbook.doc mais c'est comme ça que j'aimerais que cela se marque automatiquement!

Merci bcp

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

04 janv. 2011, 19:53

et donc, quel code a été testé ?

ce n'est que du html ou des css.

@+
Il en faut peu pour être heureux ......

Raimon12
Invité n'ayant pas de compte PHPfrance

04 janv. 2011, 21:51

Je suis dsl j'ai l'impression qu'un de mes pots n'a pas bien était posté.
Sur mon site j'ai créé ce formulaire dans la division texte :

Code : Tout sélectionner

<script type="text/javascript"> <!-- function MM_validateForm() { //v4.0 if (document.getElementById){ var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments; for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]); if (val) { nm=val.name; if ((val=val.value)!="") } if (errors) alert('Les erreurs suivantes doivent etre corrigées:\n'+errors); document.MM_returnValue = (errors == ''); } } //--> </script> <form method="post" action="writeguest.php" onsubmit="MM_validateForm('nom','','R');return document.MM_returnValue"> <table> <tbody> <tr> <td> Nom :</td> <td><input name="nom" id="nom" length="30"> <span class="Style1">*</span></td> </tr> <tr> <td>Pays :</td> <td><input name="pays" length="30" type="text"> </td> </tr> <tr> <td>Ville :</td> <td><input name="ville" length="30" type="text"> </td> </tr> <tr> <td>Email :</td> <td><input name="mail" length="30" type="text"> </td> </tr> <tr> <td>Site web :</td> <td><input name="siteweb" length="30" type="text"> </td> </tr> <tr> <td>Message :</td> <td><textarea name="message" rows="7" cols="77"></textarea><span class="Style1"> *</span> </td> </tr> <tr> <td> <br> </td> <td><input name="envoyer" type="submit">&nbsp;<span style="color: silver;">Attention, les champs marqués par * sont à remplir obligatoirement</span> </td> </tr> </tbody> </table> </form>
ce formulaire appelle la page writeguest.php dont le code se trouve là

Code : Tout sélectionner

<?php //Ouverture du fichier en écriture $fp = fopen("/Applications/XAMPP/xamppfiles/htdocs/site/guestbook.doc",a); //On convertit les caracteres html $nom = htmlspecialchars($_POST['nom']); $pays = htmlspecialchars($_POST['pays']); $ville = htmlspecialchars($_POST['ville']); $mail = htmlspecialchars($_POST['mail']); $siteweb = htmlspecialchars($_POST['siteweb']); $message = stripslashes(nl2br(htmlentities($_POST['message']))); $d = date ( "d/m/Y" ); $page = ""; $page .= "$d<br><b>$nom</b> ($ville, $pays) <br>$siteweb<br> <br>$message<br><hr>\n"; //On rajoute le message fwrite($fp,"$page" ,strlen("$page")); //fermeture du fichier fclose($fp); ?>
ce code écrit les données du formulaire (sauf le mail) sur un fichier guestbook.doc qui est ensuite inclus dans ma page livred'or à la suite du code vu ci-dessus.

C'est tout ce sont les seuls codes, pour l'instant ça fonctionne bien mais j'aimerais le customiser un peu et le protéger. Je cherche donc des personnes qui peuvent m'aider ou des tutoriels!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

04 janv. 2011, 22:36

tutoriel sur les css
le html

Il te suffit de faire un code valide html en utilisant les css et cela te permettra de faire ce que tu veut.

Tu a juste a reporter ta modif dans le code que tu a mis dans ton dernier message.

Au vu du code dreamweaver t'a généré la chose, je te conseil de lire les tutos de phpdebutant.org afin de mieux comprendre le php.

tous est ces 3 lignes
<?php
$page .= "$d<br><b>$nom</b> ($ville, $pays)
<br>$siteweb<br>
<br>$message<br><hr>\n";
?>
@+
Il en faut peu pour être heureux ......

raimon12
Invité n'ayant pas de compte PHPfrance

05 janv. 2011, 14:34

merci bcp, j'ai généré ce code avec kompozer. Je ne pensais pas m'en sortir avec du CSS, c'est génial! pour le protéger contre les spams et pour faire en sorte que la totalité du formulaire me soit envoyé je fais comment par contre?. est ce possible de donner 2 actions à mon formulaire?
Merci encore

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

05 janv. 2011, 15:07

tous est possible ou presque
voir sur google captcha
et la fonction mail

@+
Il en faut peu pour être heureux ......

raimon12
Invité n'ayant pas de compte PHPfrance

06 janv. 2011, 00:14

Merci je regarde ça, mais comment faire deux actions?
J'ai un peu bidouillé et je m'en sort en utilisant ce code (fichier writeguest.php)

Code : Tout sélectionner

$page .= "<h2>$d</h2><h1><b>$nom</b> ($ville, $pays)</h1> $siteweb <br>$message<br><hr>\n"; 
Sur la page de mon site j'ai créé une division messages dans laquelle j'ai inclus le fichier guestbook.doc
et j'ai rajouté les règles « #messages h1 » et « #messages h2 » dans ma feuille de style.
j'ai encore quelques problèmes j'aimerai que la parenthèse et la virgule qui se marquent autour de ville et pays → ($ville, $pays) ne se marquent que si on inscrit ville et pays.
Je cherche aussi comment faire une redirection après l'envoi du formulaire ?
Et puis quelques conseils pour le sécuriser ?
Ah j'allais oublié, ça pose également un problème sur l'ensemble de la page de mon site. Lorsque j'ouvre mon site dans mozilla firefox les accents sont remplacé par des point d'interrogations en revanche il n'y a pas ce problème avec safari. Ce qui est étonnant c'est que ça touche toute la page (y compris le menu qui est inclus sur chaque page et qui n'a pas de problèmes sur les autres pages)

voici l'url de mon site si ça peut vous aider : http://yatair-voyageenpalestine.byethost9.com

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 janv. 2011, 00:34

bon ça avance nikel.

Pour la suite => la fonction empty va permettre de réaliser la demande ta demande sur la virgule.

la redirection => header

pour les accents c'est un problème d'encodage iso-truc VS utf-8


@+
Il en faut peu pour être heureux ......

raimon12
Invité n'ayant pas de compte PHPfrance

06 janv. 2011, 02:40

merci bcp j'ai essayé de faire ça :

Code : Tout sélectionner

<?php //Ouverture du fichier en écriture $fp = fopen("/media/www-dev/public/site/guestbook.doc",a); //On convertit les caracteres html $nom = htmlspecialchars($_POST['nom']); $pays = htmlspecialchars($_POST['pays']); $ville = htmlspecialchars($_POST['ville']); $mail = htmlspecialchars($_POST['mail']); $siteweb = htmlspecialchars($_POST['siteweb']); $message = stripslashes(nl2br(htmlentities($_POST['message']))); $d = date ( "d/m/Y" ); $lieux = "($ville, $pays)" if (empty($ville) {$lieux = "($pays)";} if (empty($pays) {$lieux = "($ville)";} if (empty($pays)& if (empty($ville) {$lieux = "";} $page = ""; $page .= "<h2>$d</h2><h1><b>$nom</b> $lieux</h1> $siteweb <br>$message<br><hr>\n"; //On rajoute le message fwrite($fp,"$page" ,strlen("$page")); //fermeture du fichier fclose($fp); header('Location: http://localhost/public/site/reagir.php'); ?>
mais maintenant plus rien ne se passe. Je ne vois pas ou est mon erreur?

raimon12
Invité n'ayant pas de compte PHPfrance

06 janv. 2011, 02:44

Par contre si je vire les if empty etc la redirection marche bien!
merci bcp