[PHP] un livre d'or

bonjour a tous,

voila il me faut un livre d’or pour mon site, sauf que tous ceux que j’ai trouvé, ils etaient hébergé sur un site…moi je voudrai carrément le code source pour l’avoir DANS mon site et non qu’il soi hébergé autre part…

si vous avez des liens ou autre j’ai bo chercher sur google, c’est tjs le meme resultat…

merci

c’est pourtant pas difficile à trouver…
http://www.phpscripts-fr.net/scripts/scrip…t=Livres+d%27or

celui la, guestbook, fo aller sur un site expres et indiquer sur kel site on veut le livre d’or, or moi je veux le code entier…

Ata je te prépare le mien…

Contenu de la page livredor.php

Le formulaire :

<p>Pour poster un message, compl&eacute;tez ce tableau , si vous ne voulez pas mettre votre mail, merci de ne pas mettre d'adresse bidon... Vous trouverez ici tous les commentaires que vous avez post&eacute;. Merci encore. </p>
<form action="livredor.php" method="post">
<p><label>Pseudo : <input name="pseudo" type="text" value="" /></label> (necessaire)</p>
<p><label>Mail : <input name="mail" type="text" /></label></p>
<p><label>Url : <input name="url" type="text" /></label></p>
<p><label>Message : <br /><textarea name="message" rows="4" cols="40"></textarea> (necessaire)</label></p>
<p><label>Note : 
<select name="note">
  <option value="0">0</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
  <option value="5" selected="selected">5</option>
  <option value="6">6</option>
  <option value="7">7</option>
  <option value="8">8</option>
  <option value="9">9</option>
  <option value="10">10</option>
</select></label></p>
<p><label><input type="submit" value="Ok !" /></label></p>
</form>

Le code PHP d’affichage :

<? $kellebase = 'free';
if ($kellebase == 'free'){$hote = 'HOTE SQL'; $compte = 'COMPTE SQL'; $mot_de_passe = 'PASS SQL'; $base = 'BASE SQL';}
// ========= ENVOI DE MESSAGE
mysql_connect("$hote", "$compte", "$mot_de_passe"); // on se connecte
mysql_select_db("$base");
if (isset($_POST['pseudo'], $_POST['message']) AND $_POST['pseudo'] != '') // On vérifie si ya le pseudo et le message
{
	$pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES); 
	$message = htmlentities($_POST['message'], ENT_QUOTES); 
	$message = nl2br($message); 
	$mail = htmlentities($_POST['mail'], ENT_QUOTES);
	$url = htmlentities($_POST['url'], ENT_QUOTES);
	$note = htmlentities($_POST['note'], ENT_QUOTES);
	mysql_query("INSERT INTO livredor VALUES('', '" . $pseudo . "', '" . $message . "', '" . $mail . "', '" . $url . "', '" . $note . "')");
}
// ========= LIEN VERS LES PAGES
$nombrededessagesparpage = 50; // on change ici le nombre de messages par page
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livredor'); // on va chercher sur MySQL
$donnees = mysql_fetch_array($retour);
$totaldesmessages = $donnees['nb_messages']; // creation d'1 variable pr le nbr de mess.
$nombredepages  = ceil($totaldesmessages / $nombrededessagesparpage); // calcul du nbr de pages
echo '<table border="1" align="center"><tr><td align="center">Page : ';
for ($i = 1; $i <= $nombredepages; $i++) { echo '<a href="livredor.php?page=' . $i . '">' . $i . '</a> '; }
if (isset($_GET['page'])) // si ya un nmr de page dan ladresse
{ $page = intval($_GET['page']); // recup num de page grace a ladresse
} else // si ya pa de nmr de page dan ladresse
{ $page = 1; // afficher page 1
}
// ========= AFFICHAGE DES MESSAGES
// On va essayer de calculer la moyenne;-)
$retour_nbr_messs = mysql_query('SELECT COUNT(*) AS nbr_messages FROM livredor'); // on va chercher sur MySQL
$donnees8 = mysql_fetch_array($retour_nbr_messs); // donne le nbr de messages
echo '<br />Il y a ' . $donnees8['nbr_messages'] . ' messages'; // On affiche ici le nbr de messages
$sql = mysql_query("SELECT AVG(note) AS moyenne FROM livredor");
$donnees = mysql_fetch_array($sql);
$donnees2 = round($donnees['moyenne'],1);
echo '<br /><strong>Moyenne des notes</strong> : ' . $donnees2 . ' / 10</td></tr></table>
';	
// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premiermessageaafficher = ($page - 1) * $nombrededessagesparpage;
$reponse = mysql_query('SELECT * FROM livredor ORDER BY id DESC LIMIT ' . $premiermessageaafficher . ', ' . $nombrededessagesparpage);
while ($donnees = mysql_fetch_array($reponse)) // on affiche les messages avec une chaine...
{ echo '<hr /><p><strong>' . $donnees['pseudo'] . '</strong> <a href="mailto:' . $donnees['mail'] . '">' . $donnees['mail'] . '</a> <a href="' . $donnees['url'] . '" target="_blank">' . $donnees['url'] . '</a> - Note : ' . $donnees['note'] . ' / 10 <br />' . $donnees['message'] . '<br /></p>
'; }
mysql_close(); ?> 

La requète SQL pour créer la table :

CREATE TABLE `livredor` (
  `ID` mediumint(50) NOT NULL auto_increment,
  `pseudo` varchar(50) NOT NULL default '',
  `message` text NOT NULL,
  `mail` varchar(255) NOT NULL default '',
  `url` varchar(255) NOT NULL default '',
  `note` decimal(10,0) NOT NULL default '0',
  PRIMARY KEY  (`ID`)
) TYPE=MyISAM PACK_KEYS=0 AUTO_INCREMENT=35;

Un aperçut du livre sur mon site.

Même pas un petit merci à SandRock ? Même pas un petit bisou…
Je suis triste là…
Je suis toujours en attente du merci mais oublie l’histoire du bisou… :riva: :whistle: :pt1cable:

Puis surtout tu peux revoir ta copie :

<? : pas portable, utilise <?php

mysql_connect("$hote", "$compte", "$mot_de_passe"); // on se connecte

débile. $hote, $compte, $mot_de_passe seront évaluées comme des chaînes au besoin, donc :
mysql_connect($hote, … );

“$xxx” c’est franchement débile de chez débile (aujourd’hui je me défoule ! c’est la fête de la (mauvaise) musique!)

Pour info :

le parser lit ", rentre dans le mot chaîne de caractères avec variable, lit $, lit le nom de la variable (bref tout ce qui n’est pas caractères blancs pour simplifier), remplace la variable par la chaîne, et sort du mode $variable. (sachant que ça passe par un tas de règles grammaticales, encore qu’il me semble que ce soit fait à coup de lexer, faudrait que je re-regarde)

tandis que lorsque tu laisse $xxx : le parser a juste lu une variable, et il la passe à la fonction sans autres traîtements…

if (isset($_POST[‘pseudo’], $_POST[‘message’]) AND $_POST[‘pseudo’] != ‘’)

en général, c’est and, et ensuite c’est peu conseillé puisque and a une priorité plus faible que son cousin C &&.

$pseudo = htmlentities($_POST[‘pseudo’], ENT_QUOTES);

C’est bien d’utiliser les variables POST, c’est encore mieux quand on s’est assuré qu’elles ne contiennent pas de slashes liées au magic quote gpc (une saloperie de chez saloperie, heureusement désactivée comme register_globals).

cf. [stripslashes()[/url], & magic quotes & [url=http://www.php.net/get_magic_quotes_gpc]get_magic_quotes_gpc()](http://fr.php.net/manual/fr/function.stripslashes.php)

mysql_query(“INSERT INTO livredor VALUES(’’, '” . $pseudo . “’, '” . $message . “’, '” . $mail . “’, '” . $url . “’, '” . $note . “’)”);

Et si t’as pas de chance, la directive magic_quote_gpc est désactivée, et faire

’ fait planter la requête
et faire

$note =<<<SQL
’ ); DELETE FROM livredor –
SQL;

Et zou, tu détruis toutes les données de la table ou plus fin tiens :

$note =<<<SQL
’ ); SET password FOR user = PASSWORD(‘password’); –
SQL;

Et pouf t’as accès unique à la bdd :slight_smile:

bref: mysql_real_escape_strings().

Au passage, ça sert à rien de faire du xhtml (<br />), si c’est pour conserver les mauvaises habitudes du html, comme le target sur les liens, et les tableaux pour la présentaton de contenu.

Aujourd’hui, je suis méchant.

:smiley:

(ne le prend pas mal, mais tu semblais si content de proposer ton script que j’ai jugé bon de t’informer des problèmes de celui-ci)

Erf lol t’es méchant aujourd’hui ! Bon je sais j’ai fait ça rapidement. J’avoue il y a des failles. D’ailleurs merci de le avoir corrigé ! :smiley:

Euh, il n’y a pas de tableau invisible, juste un tableau pour présenter les stats du livre d’or. Alors je vois pas ce que tu leur reproche…

Euh j’ai pas vu de $xxx…

Euh en ce qui concerne les <br /> j’avoue que j’ai abusé mais à l’époque je ne connaissait pas grand chose. C’est dur de tenir 200 pages à jour. Tiens lol regarde le plan de mon site, il manque la moitié des pages lol !

En puis d’abord laisses moi travailler, je passe mon bac fr oral le 24 :na:

Bon voila j’ai corrigé mon livre…

Pour $xxx, c’est un exemple bien sûr.

Bah ! Toutes mes variables ont des noms bien symboliques ! Je vois pas pourquoi tu dis ça…

Je disais que faire "$xxx" était débile.

Pas de nommer la variable ‘xxx’.

Tu auras certainement remarquer la présence de double quote avant le $, et après le dernier x, non? Bien : mysql_connect( “$hote”, … ) c’est débile.

avec un tit temps de retard, je te dis merci tres cher pour cette aide.
jte fais pas de bisous tu ma dis d’oublier? :stuck_out_tongue:

http://www.siteduzero.com/php/tp/livreor.php

La tu as de l’aide.

Bonjour,

J’ai connu le site du zér0 (bientôt à la v3…)
Mais j’ai un problème sur leur livre d’or:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\wamp\www\Site web\livredor.php on line 83

Voilà, et le code est le même que celui du site du zéro.
Pouvez-vous m’aider ?
Merci d’avance (répondez le plus vite possible SVP)

EDIT: si vous trouvez pas c’est rien, car le script de Sandrock est super ! merci !