Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/01/2011, 12h07   #1
Invité de passage
 
Inscription : décembre 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 8
Points : 0
Points : 0
Par défaut Livre d'or avec captcha

bonjour à tous,

je viens d'installer un captcha dans mon livre d'or, le seul problème que je rencontre, c'est que vu que j'utilise la mYSQL pour stoker les message, donc même si les gens ne tape pas le code, le message ce valide en base de donné et s'affiche sur le site.

voici le code.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php 
$pageTitle = "Livre d'Or";
$pageID = "livre";
require('../website_sources/debut.inc.php'); 
require('../website_sources/context.inc.php');
$cryptinstall="../website_pages/crypt/cryptographp.fct.php";
include $cryptinstall;
if (chk_crypt($_POST['code']))
?> 
 
 
        <style type="text/css">
        form, .pages
        {
            text-align:center;
        }
        </style>
 
    <form method="post" action="livre.xml?<?php echo SID; ?>">
	<div class="block_titre">
	  <h1 align="center"><u>Livre d'Or</u></h1>
</div>
<div class="block_contenu" style="text-align: center; padding: 20px 0px;"><i>Notre radio vous plaît ?</i>&nbsp;&nbsp;&nbsp;&nbsp;Laissez-nous un message !</div>
	<div class="block_contenu" style="text-align: center; font-size: 9px; padding: 20px 150px;">
    </div>
        <p align="center">
            Pseudo : <input name="pseudo" /><br /><br />
            Message :<br />
            <textarea name="message" rows="8" cols="35"></textarea>
            <tr><td><div align="center">
  			  <?php dsp_crypt(0,1); ?>
			  </div></td>
  			</tr>
  			<tr>
  			  <td>Recopier le code:
  			  <input name="code" type="text" maxlength="4">
  			  </td>
  			</tr><br />
            <br /><input type="submit" value="Envoyer" />
              </p>
              </form>
 
 
    <p class="pages">
 
  <?php
mysql_connect("localhost", "rng", "pass");
mysql_select_db("rng");
 
// --------------- Etape 1 -----------------
// Si un message est envoyé, on l'enregistre
// -----------------------------------------
 
if (isset($_POST['pseudo']) AND isset($_POST['message']) AND isset($_POST['code']))
{
    $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); // On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité
    $message = mysql_real_escape_string(htmlspecialchars($_POST['message'])); // De même pour le message
    $message = nl2br($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />
 
	$code = mysql_real_escape_string(htmlspecialchars($_POST['code'])); // De même pour le code
 
    // On peut enfin enregistrer :o)
    mysql_query("INSERT INTO site_livre VALUES('', '" . $pseudo . "', '" . $message . "','". $code ."')");
}
 
 
// --------------- Etape 2 -----------------
// On écrit les liens vers chacune des pages
// -----------------------------------------
 
// On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage = 8; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM site_livre');
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['nb_messages'];
// On calcule le nombre de pages à créer
$nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages
echo 'Page(s) : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
    echo '<a href="livre.xml?page=' . $i . '">' . $i . '</a> ';
}
?>
 
</p>
 
<?php
 
 
// --------------- Etape 3 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------
 
if (isset($_GET['page']))
{
        $page = intval($_GET['page']); // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
        $page = 1; // On se met sur la page 1 (par défaut)
}
 
// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
 
$reponse = mysql_query('SELECT * FROM site_livre ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
 
while ($donnees = mysql_fetch_array($reponse))
{
        echo '<br /><p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p>';
}
 
mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
?>
 
<?php require('../website_sources/fin.inc.php'); ?>
merci de vos futures réponse.
FloR3nT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2011, 13h06   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Quelle est ta difficulté ? Ne fait pas ton insertion si le captcha n'est pas bon.

Si le code du captcha est $_POST['code'] je ne vois pas trop pourquoi tu l'inseres dans ta table.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2011, 16h29   #3
Invité de passage
 
Inscription : décembre 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 8
Points : 0
Points : 0
en gros le problème, c'est que si tu rentre pas le code le message est quand meme enregistré en base de donné et afficher aussi...

donc je me demande ou j'ai plus merder...

exemple ici http://r-n-g.fr/livre.xml

si tu mets pas le code tu verra que ton message s'affiche et moi je veux pas
FloR3nT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2011, 18h26   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Citation:
Ne fait pas ton insertion si le captcha n'est pas bon.

Si le code du captcha est $_POST['code'] je ne vois pas trop pourquoi tu l'inseres dans ta table.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2011, 19h52   #5
Invité de passage
 
Inscription : décembre 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 8
Points : 0
Points : 0
MAJ

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php 
$pageTitle = "Livre d'Or";
$pageID = "livre";
require('../website_sources/debut.inc.php'); 
require('../website_sources/context.inc.php');
$cryptinstall="../website_pages/crypt/cryptographp.fct.php";
include $cryptinstall;
if (chk_script($_POST['code']))
?> 
 
 
        <style type="text/css">
        form, .pages
        {
            text-align:center;
        }
        </style>
 
    <form method="post" action="livre.xml?<?php echo SID; ?>">
	<div class="block_titre">
	  <h1 align="center"><u>Livre d'Or</u></h1>
</div>
<div class="block_contenu" style="text-align: center; padding: 20px 0px;"><i>Notre radio vous plaît ?</i>&nbsp;&nbsp;&nbsp;&nbsp;Laissez-nous un message !</div>
	<div class="block_contenu" style="text-align: center; font-size: 9px; padding: 20px 150px;">
    </div>
        <p align="center">
            Pseudo : <input name="pseudo" /><br /><br />
            Message :<br />
            <textarea name="message" rows="8" cols="35"></textarea>
            <tr><td><div align="center">
  			  <?php dsp_crypt(0,1); ?>
			  </div></td>
  			</tr>
  			<tr>
  			  <td>Recopier le code:
  			  <input name="code" type="text" maxlength="4">
  			  </td>
  			</tr><br />
            <br /><input type="submit" value="Envoyer" />
              </p>
              </form>
 
 
    <p class="pages">
 
  <?php
mysql_connect("localhost", "rng", "pass");
mysql_select_db("rng");
 
// --------------- Etape 1 -----------------
// Si un message est envoyé, on l'enregistre
// -----------------------------------------
 
if (isset($_POST['pseudo']) AND isset($_POST['message']))
{
    $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); // On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité
    $message = mysql_real_escape_string(htmlspecialchars($_POST['message'])); // De même pour le message
    $message = nl2br($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />
 
    // On peut enfin enregistrer :o)
    mysql_query("INSERT INTO site_livre VALUES('', '" . $pseudo . "', '" . $message . "')");
}
 
 
// --------------- Etape 2 -----------------
// On écrit les liens vers chacune des pages
// -----------------------------------------
 
// On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage = 8; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM site_livre');
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['nb_messages'];
// On calcule le nombre de pages à créer
$nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages
echo 'Page(s) : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
    echo '<a href="livre.xml?page=' . $i . '">' . $i . '</a> ';
}
?>
 
</p>
 
<?php
 
 
// --------------- Etape 3 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------
 
if (isset($_GET['page']))
{
        $page = intval($_GET['page']); // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
        $page = 1; // On se met sur la page 1 (par défaut)
}
 
// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
 
$reponse = mysql_query('SELECT * FROM site_livre ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
 
while ($donnees = mysql_fetch_array($reponse))
{
        echo '<br /><p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p>';
}
 
mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
?>
 
<?php require('../website_sources/fin.inc.php'); ?>
mais bon sa marche tjrs lol

Citation:
Fatal error: Call to undefined function chk_script() in /home/rng/www/website_pages/guestbook.php on line 8
FloR3nT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2011, 20h20   #6
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Ton include ne doit pas etre bon.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 10h43   #7
Invité de passage
 
Inscription : décembre 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 8
Points : 0
Points : 0
bjr,

j'ai corriger l'include,

mais le captcha marche tjrs pas !

il y a t'il une sollutions pour créer sois meme un system anti-spam bot ?

un tutos à suivre ?

un script ?

merci de vos future réponse.
FloR3nT est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h38.


 
 
 
 
Partenaires

Hébergement Web