Livre d'or Guestbook, pour en finir!

Le premier forum francophone sur l'éditeur de pages Web multiplateforme (Linux, Mac OS X, Windows) qui monte… KompoZer, héritier de Nvu, permet de créer vos pages Web graphiquement (wysiwyg) sans aucune connaissance du langage HTML.

Modérateur : chinon37

Ymai
Tyrannosaurus Rex
Messages : 4220
Inscription : 12 mars 2005, 11:36

Re: Livre d'or Guestbook, pour en finir!

Message par Ymai »

Raimon a écrit :C'est grâce à ce tutoriel que j'avais réussi à faire mes quelques modifications. Mais la je bloque. Est ce qu'on peut demander deux actions à un formulaire?
Deux actions? Mmmhhh??? Lesquelles, par exemple?
Concernant le danger, j'ai bien compris mais après de nombreuses recherches je me suis resigné à creer moi même le script. Je ne risque pas grand chose hors mis la pub?
Ben si... L'injection de scripts malveillants, par exemple. Susceptibles de prendre la main sur le site, voire sur le serveur.
Un petit test simple. Dans un message, introduire ce qui suit:

Code : Tout sélectionner

<script type="text/javascript>alert("coucou mon lapin")</script> 
Si une boîte de dialogue apparaît lors de l'écriture du contenu du message, c'est très mal parti. On peut faire bien plus de mal avec un bout de script en PHP, par exemple.
dans le pire des cas je n'aurais qu'a remettre le site sur le net sans la pub...
J'ai cru ça aussi, un moment. J'ai cru pouvoir gérer quelques spams de temps en temps. Jusqu'au jour où je me suis retrouvé avec des centaines et des centaines de liens vers des sites +/- louches sur un wiki. Que j'ai dû fermer. Le nettoyage aurait été un travail digne d'Hercules dans les écuries d'Augias.
ils sont chiant ces publiciste...
Disons plutôt "des gens véreux qui se font beaucoup de pognon en exploitant la crédulité de pauvres gens qui achètent leurs produits" (et ça marche)
J'ai une autre question concernant le danger. Comme vous pouvez le voir sur mon site j'ai mis la fonction contact mail sur mon site (en pied de page) pour que les visiteurs puissent me contacter. Est ce que mon adresse est protégé des spammeurs ou pas du tout? je pense que je vais e créer une adresse mail spécialement pour le site!
Qu'il faudra changer très régulièrement. :cry:

Bon, allez, je lâche un tuyau. J'ai un prototype qui semble bien fonctionner depuis un bon bout de temps (plusieurs années). Mais ce n'est pas un livre d'or. Il y a peut-être moyen de s'en inspirer.
Il ne me produit pas de spam, mais les messages ne sont pas publiés sur le web. C'est donc un peu trop facile. L'astuce principale est dans la petite question posée à l'utilisateur; un robot n'y répondra généralement pas correctement.
Disponible au téléchargement. 100% libre et gratuit.
Peut être testé là: http://www.sio2.be/ecrire.php -mais pas trop parce que je reçois vraiment les messages :o)

[edit]Remarque à ceux qui utilisent un OS sensible aux virus: vérifiez le fichiez .zip téléchargé avant tout chose. Au départ, je garantis qu'il est sain. Mais sait-on jamais.[/edit]
[edit2]Je n'offre aucune garantie sur l'élégance du code source contenu dans le fichier .zip. Péché de jeunesse...[/edit2]
ymai
« Un enfant de cinq ans comprendrait cela ! Allez me chercher un enfant de cinq ans ! »
Groucho Marx.
Raimon
Salamandre
Messages : 32
Inscription : 15 déc. 2010, 17:50

Re: Livre d'or Guestbook, pour en finir!

Message par Raimon »

merci bcp je vais regarder ça dès que j'aurais un peu plus de temps.
Pour les deux actions ce serait une action qui lit le fichier writeguest.php qui lui écris sur guestbook.doc l'autre action serait lire le fichier envoi.php qui m'enverrait le formulaire par mail. comme ça je peux connaitre le mail des personnes qui ont posté!
Raimon
Salamandre
Messages : 32
Inscription : 15 déc. 2010, 17:50

Re: Livre d'or Guestbook, pour en finir!

Message par Raimon »

j'ai fait le test de la phrase "coucou mon lapin"! et elle ne marche pas! héhé!
Raimon
Salamandre
Messages : 32
Inscription : 15 déc. 2010, 17:50

Re: Livre d'or Guestbook, pour en finir!

Message par Raimon »

Merci bcp Ymai!
Je viens encore de passer la nuit sur mon pc. J'ai essayé d'adapter ton formulaire d'envoi à ce que je voulais. Pour l'instant j'ai un bug (en local), il me met tout le temps bye bye robot!
est ce qu'il serait possible d'envoyer le formulaire dans le fichier writeguest.php? Je vous renvois les codes de chaque pages :
formecrire.inc.php:

Code : Tout sélectionner

<p>Veuillez remplir toutes les rubriques marquées <span class="obligatoire">*</span>.</p>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"
 name="form" onsubmit="return(verifForm(this))">
   <table>
<tbody>
<tr> <td><label for="nom">Nom (*):</label>&nbsp;</td>
    <td><input maxlength="30" size="30" name="nom" id="nom" class="obligatoire"></td></tr>
<tr> <td><label for="pays">Pays :</label>&nbsp;</td>
   <td> <input maxlength="40" size="30" name="pays" id="pays"></td>
<tr> <td><label for="ville">Ville :</label>&nbsp;</td>
   <td> <input maxlength="40" size="30" name="ville" id="ville"></td>
    <tr> <td><label for="email">Email :</label>&nbsp;</td>
   <td> <input maxlength="40" size="30" name="zorglub" id="email"></td>
    <tr> <td><label for="site">Site web :</label>&nbsp;</td>
   <td> <input maxlength="40" size="30" name="site" id="site"></td>
    
   <tr> <td><Message (*) : </td>
    <td><textarea cols="80" rows="10" name="texte" class="obligatoire"></textarea></td></tr>
    <tr><td></td><td><p>Pour ennuyer les spammeurs qui utilisent ce formulaire, merci de répondre à la question suivante:<br>
Quel est le résultat du calcul :&nbsp;
    <?php echo $_SESSION['nombre1']." ". $_SESSION['operation']." ".$_SESSION['nombre2']." = ";?>
    <input maxlength="3" size="3" name="calcul" class="obligatoire">*</p>
    <div style="text-align: center;"> 
    <input name="Envoyer" value="Envoyer" type="submit"> 
    <input name="Annuler" value="Annuler" type="reset">
    
</table>
</tbody>
</div>
</form>
ecrire.inc.php

Code : Tout sélectionner

<h2>Merci pour votre envoi</h2>
<h3>Voici le message que vous m'avez transmis</h3>

<label>Votre nom : </label><strong>##NOM##</strong><br />
<label>Pays : </label><strong>##PAYS##</strong><br />
<label>Ville : </label><strong>##VILLE##</strong><br />
<label>Adresse mail : </label><strong>##MAIL##</strong><br />
<label>Site : </label><strong>##SITE##</strong><br />

messager:<br>
<p><strong>##TEXTE##</strong></p>
<p>Vous m'écriviez depuis l'adresse IP <strong>##IP## ##HOST##</strong></p>
ecrire.php (que j'ai mis au sein d'une de mes pages):

Code : Tout sélectionner

<?php // *********************************************************
// adresse mail à changer
// *********************************************************
$MonMail = '***********@gmail.com';
foreach ($_POST as $key=>$value)
$$key = htmlentities(stripslashes($value));
?>
<script type="text/javascript" src="verifform.js"></script><?php if (!($Envoyer=='Envoyer'))
{
srand();
$_SESSION['operation'] = substr('+-*', rand(0,2),1);
switch ($_SESSION['operation'])
{
case "+":
$_SESSION['nombre1'] = rand(5,10); $_SESSION['nombre2'] = rand(5,10);
$_SESSION['resultat'] = $_SESSION['nombre1']+$_SESSION['nombre2'];
break;

case "-":
$_SESSION['nombre1'] = rand(5,10); $_SESSION['nombre2'] = rand(1,5); $_SESSION['resultat'] = $_SESSION['nombre1']-$_SESSION['nombre2'];
break;

case "*":
$_SESSION['nombre1'] = rand(1,8); $_SESSION['nombre2'] = rand(1,5); $_SESSION['resultat'] = $_SESSION['nombre1']*$_SESSION['nombre2'];
break;
}
include ("formecrire.inc.php");
}
else {
if (!(isset($_SESSION['resultat']))) die ("Bye bye robot");
if ($calcul != $_SESSION['resultat'])
die ("Vous n'êtes pas un humain ou vous ne savez pas calculer...");
if ($nom=="") die ("Vous ne vous êtes pas présenté");
$envoi = "De: $nom \n";
$envoi .= "e-mail: $zorglub \n";
$envoi = "Pays: $pays \n";
$envoi = "Ville: $ville \n";
$envoi = "Site: $site \n";
$envoi .= "$texte \n";
$ip = $_SERVER['REMOTE_ADDR'];
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);

$origine = $_SERVER['HTTP_REFERER'];
$qui = $_POST['user'];
$date = date("d-m-Y");
$heure = date("H:i");
$envoi .= "Depuis $ip $hostname \n $date $heure \npar $origine\n";

$page = file_get_contents ("ecrire.inc.html");
$page = str_replace ('##NOM##', $nom, $page);
$page = str_replace ('##MAIL##', $zorglub, $page);
$page = str_replace ('##PAYS##', $pays, $page);
$page = str_replace ('##VILLE##', $ville, $page);
$page = str_replace ('##SITE##', $site, $page);
$page = str_replace ('##SUJET##', $sujet, $page);
$page = str_replace ('##TEXTE##', $texte, $page);
$page = str_replace ('##IP##', $ip, $page);
$page = str_replace ('##HOST##', $hostname, $page);

mail ($MonMail, $envoi, "From: $nom <$zorglub>");
}
?>
la page writeguest.php que j'utilisais avec l'autre formulaire:

Code : Tout sélectionner

<?php //Ouverture du fichier en écriture

$fp = fopen("http://yatair-voyageenpalestine.byethost9.com/htdocs/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 .= "<h2>$d</h2><h1><b>$nom</b> ($ville, $pays)</h1> $siteweb
<br>$message<br><hr>\n";




//On rajoute le message

fwrite($fp,"$page" ,strlen("$page"));



//fermeture du fichier

fclose($fp);


?>
.
Et merci encore!
Ymai
Tyrannosaurus Rex
Messages : 4220
Inscription : 12 mars 2005, 11:36

Re: Livre d'or Guestbook, pour en finir!

Message par Ymai »

Bonjour
Comme ça, a priori, il me semble qu'il manque au moins la ligne

Code : Tout sélectionner

<?php session_start(); ?>
au début du fichier ecrire.php.
Alors, la variable de session n'est pas initialisée.

Quant à rediriger le texte vers un document, il doit suffire d'utiliser la technique initiale.

Bon, maintenant, entre nous... Pour un site d'une telle ampleur, ne serait-il pas plus rentable de se diriger vers une formule "Wordpress" ou autre?
http://fr.wordpress.com/
http://videonoob.fr/wordpress/tutoriel
ymai
« Un enfant de cinq ans comprendrait cela ! Allez me chercher un enfant de cinq ans ! »
Groucho Marx.
Raimon
Salamandre
Messages : 32
Inscription : 15 déc. 2010, 17:50

Re: Livre d'or Guestbook, pour en finir!

Message par Raimon »

yep effectivement je l'avais oublié, enfin je l'avais mis tout en haut de ma page en le plaçant juste au dessus ça ne me marque plus bye bye robot mais rien ne se passe.
Pour le truc wordpress je n'ai pas bien compris c'est un blog non? je préfère pouvoir modifier modifier moi même le graphisme. Mais s'il est possible de leur piquer un formulaire je ne demande que ça. Je n'ai pas bien compris quelle solution tu me proposais.
Pour rediriger le formulaire vers un document tu dis "utiliser la technique initiale". Moi j'utilisais l'attribut action et là il y a cette ligne qui l'utilise "<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"
Merci encore
Ymai
Tyrannosaurus Rex
Messages : 4220
Inscription : 12 mars 2005, 11:36

Re: Livre d'or Guestbook, pour en finir!

Message par Ymai »

Raimon a écrit :yep effectivement je l'avais oublié, enfin je l'avais mis tout en haut de ma page en le plaçant juste au dessus ça ne me marque plus bye bye robot mais rien ne se passe.
Est-ce en local ou sur le web?
Si c'est en local, il y a peu de chances qu'un serveur de mails soit installé. La fonction mail() ne fait sans doute rien du tout.
Si c'est sur le web, il faut vérifier que le fournisseur de service a bien activé la fonction sur le serveur. Ce qui n'est pas garanti vu les problèmes que cela peut poser.
Pour le truc wordpress je n'ai pas bien compris c'est un blog non?
C'est un moteur de blog, effectivement. L'avantage est que plein de fonctionnalités existent nativement, sans qu'il soit nécessaire de réinventer la roue. Aucun souci, par exemple, pour les commentaires postés par les visiteurs.
je préfère pouvoir modifier modifier moi même le graphisme. Mais s'il est possible de leur piquer un formulaire je ne demande que ça. Je n'ai pas bien compris quelle solution tu me proposais.
Je ne pense pas qu'il soit possible de "piquer" simplement un formulaire: il faut entraîner toute la mécanique qui est derrière. Et ça fait du monde.
Toutefois, je pense que, au départ, c'est une solution qui aurait dû être privilégiée.
Ce ne serait pas très long de faire un test sans frais avec http://fr.wordpress.com/
Je fais utiliser ce type d'outils à des jeunes du niveau "collège" et ils modifient assez aisément le look d'origine. :wink:
Pour rediriger le formulaire vers un document tu dis "utiliser la technique initiale".
Je voulais donc dire: rediriger le texte vers un document qui accumule tous les commentaires; et non passer par un mail comme je le fais pour mon usage perso.
Moi j'utilisais l'attribut action et là il y a cette ligne qui l'utilise "<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"
C'est juste une astuce pour indiquer que c'est la page elle-même (SELF) qui traite le résultat de l'envoi du formulaire. Si la page qui contient le formulaire s'appelle "formulaire.php", on pourrait aussi mettre

Code : Tout sélectionner

<form method="post" action="formulaire.php">
ymai
« Un enfant de cinq ans comprendrait cela ! Allez me chercher un enfant de cinq ans ! »
Groucho Marx.
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité