8792 sujets

Développement web côté serveur, CMS

Bonjour,

j'ai trouvé un script assez (très) simple en PHP, ne nécessitant aucune base de données, pour un livre d'or... Après l'avoir mis "à ma sauce" (à savoir, modification du code pour le rendre valide xHTML, modification de la présentation globale, et modification du fonctionnement en lui-même car j'utilise des faux-frames PHP et les variables passées à l'url déconnaient, après le "index.php?page=livredor") j'ai commencé à copier/coller les messages en dur dans le fichier contenant ces derniers, et a modifier le tout pour que le script les interprête correctement lorsqu'il appelle le fichier les contenant... Seulement je butte sur un truc, les dates !

Prenons l'exemple d'un message que j'ai moi-même posté le 19/01/2007 à 18h20. Dans le fichier contenant les messages, il est écrit "1169227255".

A quoi cela correspond-il ? Comment écrire les dates des anciens messages de cette façon ?


Si quelqu'un pouvait m'éclairer à ce sujet, ça serait extrêment sympa Smiley smile

Merci bien Smiley smile
Je vous mets ici le fichier livredor.php qui appelle le fichier livredor.dat qui lui contient les messages... J'ai regardé le timestamp unix, ça ne correspond pas, quant à l'affichage de la date en clair, j'vois pas trop comment faire puisqu'il faudrait convertir le format bizarre de livredor.dat, et c'est justement ce que je cherche à faire mais dans l'autre sens (convertir une date du format "date" au format "bizarre") :


<h1>Livre d'or</h1>
<?php

define('ADMIN_USER',	'**************');

define('ADMIN_PASS',	'**************');



define('GB_FILE',	'./phpscripts/livredor.dat');

define('DATE_FORMAT',	'j/m/Y à H:i');

define('MAX_PER_PAGE',	10);



define('MAX_NAME_LEN',	32);

define('MIN_MESG_LEN',		3);

define('MAX_MESG_LEN',	600);

define('POST_TIME',			60);



define('ALLOW_URLS',	false);



define('SELF',			"http://www.denvercountryclub.1k.fr/index.php?page=livredor");




define('FUNC', isset($_GET['func']) ? $_GET['func'] : NULL);

define('P', isset($_GET['p']) ? (int) $_GET['p'] : 1);



if (FUNC == 'logout') {

	echo '<p>Vous venez d\'être déconnecté.</p>';



	setcookie ('password', '');

	unset($_COOKIE['password'], $password);

}



if (isset($_POST['password'])) {

	$password = md5($_POST['password']);



	if ($password == md5(ADMIN_PASS)) {

		setcookie('password', $password);

	}

} else {

	$password = isset($_COOKIE['password']) ? $_COOKIE['password'] : NULL;

}



ob_end_flush();





echo '<p style="text-align: center;"><a href="'.SELF.'">Voir les messages</a> | <a href="'.SELF.'&amp;func=sign">Signer le livre d\'or</a></p>';

echo '<hr />';



switch (FUNC)

{

/*================================*\

		-- default --

\*================================*/



default:

	if (!$fp = @fopen(GB_FILE, 'r')) {

		echo '<p>Échec à l\'ouverture de '.GB_FILE.'</p>';

		break;

	}



	$i = 0;

	$data = NULL;



	$to_show = (P * MAX_PER_PAGE) - MAX_PER_PAGE;



	if (P > 1) echo '<p><b>Page '.P.'</b></p>';



	while (!feof($fp)) {

		$i++;



		if ($i > ($to_show + MAX_PER_PAGE)) break;



		$data = fgets($fp, 4096);



		if (empty($data)) break;



		if ($i > $to_show) {

			list ($date, $name, $mesg, $ip) = str_replace('\|', '|', preg_split('/(?<!\\\)(\|)/', $data));



			echo ("\n<p><span style='font-weight: bold; text-transform: capitalize;'>$name</span> <span style='font-style: italic;'>le ".date(DATE_FORMAT, $date)."</span></p><blockquote>$mesg</blockquote>");

		}

	}



echo '<hr />';

	if ($i > MAX_PER_PAGE) {

		$line_count = substr_count(fread($fp, filesize(GB_FILE)), "\n") + $i;

		$line_count = ceil($line_count / MAX_PER_PAGE);



		$s = 1;

		$f = $line_count + 1;



		echo "\n".'<p style="text-align: center;">Page : ';

		if ($line_count > MAX_PER_PAGE) {

			if (P < 6) {

				$s = 1;

				$f = 10;

			} elseif (($line_count-P) < 6) {

				$s = $line_count - 8;

				$f = $line_count;

			} else {

				$s = P -3;

				$f = $s + 8;

			}



			echo (P > 5) ? ' <a href="'.SELF.'">1</a>-' : NULL;

		}



		for ($k=$s; $k<$f; $k++) {

			echo ($k == P) ? "$k " : "<a href=\"".SELF."&amp;p=$k\">$k</a> ";

		}



		echo ($k <= $line_count) ? "de <a href=\"".SELF."&amp;p=$line_count\">$line_count</a></p>" : '</p>';



	}
	

echo '<p style="text-align: center;"><a href="'.SELF.'">Voir les messages</a> | <a href="'.SELF.'&amp;func=sign">Signer le livre d\'or</a></p>';



	fclose($fp);

break;



/*================================*\

		 -- sign --

\*================================*/



case 'sign':

	$name = (isset($_POST['name'])) ? strip_chars($_POST['name']) : NULL;

	$mesg = (isset($_POST['mesg'])) ? strip_chars($_POST['mesg']) : NULL;



	if (isset($_POST['submit'])) {

		$errors = NULL;

		$now = time();



		$name_len = strlen($name);

		$mesg_len = strlen($mesg);



		if ($name) {

			if ($name_len > MAX_NAME_LEN) {

				$errors = '- Le nom est trop long, '.$name_len.' (Max : '.MAX_NAME_LEN.')<br />';

			}

		} else {

			$errors = '- Veuillez introduire votre nom !<br />';

		}



		if ($mesg) {

			if ($mesg_len > MAX_MESG_LEN) {

				$errors.= '- Le message est trop long, '.$mesg_len.' (Max : '.MAX_MESG_LEN.')<br />';

			} elseif ($mesg_len < MIN_MESG_LEN) {

				$errors.= '- Le message est trop court (Min : '.MIN_MESG_LEN.')<br />';

			}

		} else {

			$errors.= '- Veuillez introduire un message !<br />';

		}



		if (!$fp = @fopen(GB_FILE, 'r')) {

			echo 'Impossible de lire le fichier contenant les messages. Vérifiez son emplacement et ses droits en lecture !';

			break;

		}



		list($date, , , $ip) = fgetcsv($fp, 4096, '|');



		fclose($fp);



		if ($_SERVER['REMOTE_ADDR'] == $ip && $now < $date+POST_TIME) {

			$errors.= '- Vous venez déjà de poster un message !';

		}



		if ($errors) {

			echo '<p>'.$errors.'</p>';

		} else {

			if ($name == ADMIN_USER) {

				if (@$_POST['pass'] != ADMIN_PASS && $password != md5(ADMIN_PASS)) {

					echo '<p>Ce nom d\'utilisateur requiert un mot de passe !</p>';

					echo '<form method="post" action="'.SELF.'&amp;func=sign"><p><input input class="textbox" type="password" name="pass" size="20" /> <input type="submit" value="Envoyer" name="submit" class="bouton" /><input class="textbox" type="hidden" name="name" value="'.$name.'" /><input class="textbox" type="hidden" name="mesg" value="'.$mesg.'" /></p></form>';

					break;

				}

			}



			$filesize = filesize(GB_FILE);

			$filesize = (empty($filesize)) ? 1024 : $filesize;



			if (!$fp = @fopen(GB_FILE, 'r+')) {

				echo 'Impossible de lire le fichier contenant les messages et d\'écrire dedans. Vérifiez son emplacement et ses droits en lecture et écriture !';

				break;

			}



			$data = fread($fp, $filesize);

			rewind($fp);



			fwrite($fp, "$now|".str_replace("\n", NULL, str_replace('|', '\|', $name)).' |'.str_replace("\n", '<br />', bbcode($mesg)).' |'.$_SERVER['REMOTE_ADDR'].'|');



			if (! empty($data)) fwrite($fp, "\n". $data);



			fclose($fp);



			echo '<p>Votre message a bien été ajouté !<br />Retournez sur <a href="'.SELF.'">la page principale</a> pour le voir...</p>';



			break;

		}



	}



	echo "\n".'<form method="post" action="'.SELF.'&amp;func=sign"><p><label for="name">Votre identité :</label><br /><input class="textbox" type="text" name="name" id="name" value="'.$name.'" size="24" /><br /><label for="mesg">Votre message :</label><br /><textarea class="textbox" name="mesg" id="mesg" cols="20" rows="4">'.$mesg.'</textarea></p><p style="text-align: right;"><input type="submit" name="submit" value="Envoyer" class="bouton" /></p></form>';

break;





/*================================*\

		 -- admin --

\*================================*/



case 'admin':

	if ($password == md5(ADMIN_PASS)) {

		if (isset($_GET['d'])) {

			/*================================*\

				 -- admin delete --

			\*================================*/



			if (isset($_GET['c'])) {

				if (!$fp = @fopen(GB_FILE, 'r')) {

					echo 'Impossible de lire le fichier contenant les messages. Vérifiez son emplacement et ses droits en lecture !';

					break;

				}



				$output = '';



				while (!feof($fp)) {

					$line = fgets($fp, 4096);



					if (substr($line, 0, 10) == $_GET['d']) {

						$output .= fread($fp, filesize(GB_FILE));



						fclose($fp);



						if (!$fp = @fopen(GB_FILE, 'w')) {

							echo 'Impossible d\'écrire dans le fichier contenant les messages. Vérifiez son emplacement et ses droits en écriture !';

							break;

						}



						fwrite($fp, $output);

						fclose($fp);



						echo '<p>Le message a été <b>supprimé</b> !<br />Retour à la <a href="'.SELF.'&amp;func=admin">page d\'administration</a>...<br /></p>';

						break 2;

					} else {

						$output .= $line;

					}

				}



				fclose($fp);



				echo '<p>Une erreur est survenue pendant la suppression de ce message.<br />Retournez à la <a href="'.SELF.'&amp;func=admin">page d\'administration</a> et réessayez !</p>';

			}





			if (!$fp = @fopen(GB_FILE, 'r')) {

				echo 'Impossible de lire le fichier contenant les messages. Vérifiez son emplacement et ses droits en lecture !';

				break;

			}



			while (!feof($fp)) {

				$line = fgets($fp, 4906);



				if (substr($line, 0, 10) == $_GET['d']) {

					list($date, $name, $mesg) = explode ('|', $line);



					echo '<p>Êtes-vous certain de vouloir supprimer ce message ?</p>';

					echo '<p><b>'.$name.'</b> - le '.date(DATE_FORMAT, $date).'<br />'.$mesg.'</p>';

					echo '<p><a href="'.SELF.'&amp;func=admin&amp;d='.$_GET['d'].'&amp;c=1">Oui</a> | <a href="'.SELF.'&amp;func=admin">Non</a></p>';



					break 2;

				}

			}



			fclose($fp);



			echo '<p>Une erreur est survenue pendant l\'ouverture de ce message.<br />Retournez à la <a href="'.SELF.'?func=admin">admin</a> page and try again</p>';

		} elseif (isset($_GET['e'])) {

			/*================================*\

				  -- admin edit --

			\*================================*/



			if (isset($_GET['c'])) {

				$name = (isset($_POST['name'])) ? strip_chars($_POST['name']) : NULL;

				$mesg = (isset($_POST['mesg'])) ? strip_chars($_POST['mesg']) : NULL;



				$errors = NULL;



				$name_len = strlen($name);

				$mesg_len = strlen($mesg);



				if ($name) {

					if ($name_len > MAX_NAME_LEN) {

						$errors = '- Name is too long, '.$name_len.' (Max: '.MAX_NAME_LEN.')<br />';

					}

				} else {

					$errors = '- Name field is empty<br />';

				}



				if ($mesg) {

					if ($mesg_len > MAX_MESG_LEN) {

						$errors.= '- Message is too long, '.$mesg_len.' (Max: '.MAX_MESG_LEN.')<br />';

					} elseif ($mesg_len < MIN_MESG_LEN) {

						$errors.= '- Message is too short  (Min: '.MIN_MESG_LEN.')<br />';

					}

				} else {

					$errors.= '- Message field is empty<br />';

				}



				if ($errors) {

					echo '<p>'.$errors.'</p>';

				} else {

					if (!$fp = @fopen(GB_FILE, 'r')) {

						echo 'Unable to open guestbook file for reading, check location and file permissions.';

						break;

					}



					$output = '';



					while (!feof($fp)) {

						$line = fgets($fp, 4096);



						if (substr($line, 0, 10) == $_GET['e']) {

							list($date, , , $ip) = str_replace('\|', '|', preg_split("/(?<!\\\)(\|)/", $line));



							$output .= $date.'|'.str_replace("\n", NULL, str_replace('|', '\|', $name)).' |'.str_replace("\n", '<br />', bbcode($mesg)).' |'.$ip."|\n".fread($fp, filesize(GB_FILE));



							fclose($fp);



							$fp = @fopen(GB_FILE, 'w');

								fwrite($fp, $output);

							fclose($fp);



							echo '<p>Message has been <b>edited</b>.<br />Go back to the <a href="'.SELF.'?func=admin">admin</a> page<br /></p>';



							break 2;

						} else {

							$output .= $line;

						}

					}



					fclose($fp);



					echo '<p>There was an error finding this post, it doesn\'t seem to exist<br />Go back to the <a href="'.SELF.'?func=admin">admin</a> page and try again</p>';

				}



			}



			if (isset($_POST['submit'])) {

				echo "\n".'<form method="post" action="'.SELF.'?func=admin&amp;e='.$_GET['e'].'&amp;c=1"><p><label for="name">Name:</label><br /><input type="text" name="name" id="name" value="'.$name.'" size="24" /><br /><label for="mesg">Message:</label> <a href="'.SELF.'?func=bbcode">BBCode</a><br /><textarea name="mesg" id="mesg" cols="20" rows="4">'.$mesg.'</textarea><br /><input type="submit" name="submit" value="Edit" /></p></form>';

				break;

			}





			if (!$fp = @fopen(GB_FILE, 'r')) {

				echo 'Unable to open guestbook file for reading, check location and file permissions.';

				break;

			}



			while (!feof($fp)) {

				$line = fgets($fp, 4906);



				if (substr($line, 0, 10) == $_GET['e']) {

					list(, $name, $mesg) = str_replace('\|', '|', preg_split("/(?<!\\\)(\|)/", $line));



					$mesg = preg_replace("(\<b\>(.+?)\<\/b>)is", "[b]$1[/b]", $mesg);

					$mesg = preg_replace("(\<i\>(.+?)\<\/i\>)is", "[i]$1[/i]", $mesg);

					$mesg = preg_replace("(\<u\>(.+?)\<\/u\>)is", "[u]$1[/u]", $mesg);

					$mesg = preg_replace("(\<del\>(.+?)\<\/del\>)is", "[s]$1[/s]", $mesg);



					$mesg = str_replace('<br />', "\n", $mesg);

					$mesg = strip_tags($mesg);



					echo "\n".'<form method="post" action="'.SELF.'?func=admin&amp;e='.$_GET['e'].'&amp;c=1"><p><label for="name">Name:</label><br /><input type="text" name="name" id="name" value="'.$name.'" size="24" /><br /><label for="mesg">Message:</label> <a href="'.SELF.'?func=bbcode">BBCode</a><br /><textarea name="mesg" id="mesg" cols="20" rows="4">'.$mesg.'</textarea><br /><input type="submit" name="submit" value="Edit" /></p></form>';



					break 2;

				}

			}



			fclose($fp);



			echo '<p>There was an error finding this post, it doesn\'t seem to exist<br />Go back to the <a href="'.SELF.'?func=admin">admin</a> page and try again</p>';

		}

		else

		{

			/*================================*\

				 -- admin default --

			\*================================*/



			$gb_size = filesize(GB_FILE);



			echo '<p>======================<br />';

			echo 'file size: '.round($gb_size / 1024, 1).'KB<br />';

			echo 'version this/latest: <a><b>3.0.3</b></a>/<script src="http://flumpcakes.co.uk/php/guestbook/guestbook.js" type="text/javascript"></script><noscript><a href="http://flumpcakes.co.uk/php/guestbook/"><b>latest</b></a></noscript>';

			echo '<br />======================</p>';



			if (!$fp = @fopen(GB_FILE, 'r')) {

				echo 'Unable to open guestbook file for reading and writing, check location and file permissions.';

				break;

			}



			$i = 0;

			$data = NULL;



			$to_show = (P * MAX_PER_PAGE) - MAX_PER_PAGE;



			if (P > 1) echo '<p><b>Page '.P.'</b></p>';



			while (!feof($fp)) {

				$i++;



				if ($i > ($to_show + MAX_PER_PAGE)) break;



				$data = fgets($fp, 4096);



				if (empty($data)) break;



				if ($i > $to_show) {

					list ($date, $name, $mesg, $ip) = str_replace('\|', '|', preg_split("/(?<!\\\)(\|)/", $data));

					echo ("\n<p><a href=\"".SELF."?func=admin&amp;e=$date\">[edit]</a> <a href=\"".SELF."?func=admin&amp;d=$date\">[delete]</a> <a href=\"http://whois.sc/$ip\">[whois]</a><br /><span><b>$name</b> on ".date(DATE_FORMAT, $date)."</span><br />$mesg</p>");

				}

			}



			if ($i > MAX_PER_PAGE) {

				$line_count = substr_count(fread($fp, $gb_size), "\n") + $i;

				$line_count = ceil($line_count / MAX_PER_PAGE);



				$s = 1;

				$f = $line_count + 1;



				echo "\n".'<p>Page: # ';



				if ($line_count > MAX_PER_PAGE) {

					if (P < 6) {

						$s = 1;

						$f = 10;

					} elseif (($line_count-P) < 6) {

						$s = $line_count - 8;

						$f = $line_count;

					} else {

						$s = P -3;

						$f = $s + 8;

					}



					echo (P > 5) ? ' <a href="'.SELF.'?func=admin">1</a>-' : NULL;

				}



				for ($k=$s; $k<=$f; $k++) {

					echo ($k == P) ? "$k " : "<a href=\"".SELF."?func=admin&amp;p=$k\">$k</a> ";

				}



				echo ($k <= $line_count) ? "of <a href=\"".SELF."?func=admin&amp;p=$line_count\">$line_count</a></p>" : '</p>';

			}



			fclose($fp);

		}

	} else {

		if (isset($_POST['submit'])) echo '<p>Sorry wrong password</p>';



		echo "\n".'<form method="post" action="'.SELF.'?func=admin"><p><input type="password" name="password" size="20" /> <input type="submit" value="Login" name="submit" /></p></form>';

	}

break;





/*================================*\

		 -- BBCode --

\*================================*/

case 'bbcode':

	echo '

		<p>BBCode is a way of putting special effects into your text.  The allowed BBCode is:</p>

		<ul>

		<li>[b]<b>bold</b>[/b]</li>

		<li>[i]<i>italic</i>[/i]</li>

		<li>[u]<u>underline</u>[/u]</li>

		<li>[s]<del>strikethrough</del>[/s]</li>

		</ul>

		<p>For example: to make <b>this</b> bold.  when posting a message add the tags [b] and [/b] around the text (as seen above).</p>

	';

break;

}





/*================================*\

	   -- functions --

\*================================*/



function strip_chars($var) {

	return trim(str_replace("\r", NULL, htmlspecialchars(stripslashes(strip_tags($var)), ENT_QUOTES)));

}



function bbcode($var) {

	if (ALLOW_URLS == true)

		$var = preg_replace('/http:\/\/[\w]+(.[\w]+)([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?/i', '<a href="$0">$0</a>', $var);



	$var = preg_replace('(\[b\](.+?)\[\/b\])is', '<b>$1</b>', $var);

	$var = preg_replace('(\[i\](.+?)\[\/i\])is', '<i>$1</i>', $var);

	$var = preg_replace('(\[u\](.+?)\[\/u\])is', '<u>$1</u>', $var);

	$var = preg_replace('(\[s\](.+?)\[\/s\])is', '<del>$1</del>', $var);



	return trim(str_replace('|', '\|', $var));

}



/*================================*\

	 -- end functions --

\*================================*/





// echo "\n".'<p><span><a href="'.SELF.'?func=admin">Admin Area</a>';

// if (!empty($password)) echo ' <a href="'.SELF.'?func=logout">Logout</a>';

// echo '</span></p>';

?>


Ci dessous c'est un exemple de message du fichier livredor.dat :


1169227255|SolykZ |Ceci est un message...<br /><br />Comment le trouvez-vous ? |213.219.160.99|


J'pense qu'avec ça vous pourrez voir plus clair... J'ai tenté de contacter le gars qui a fait ce livre d'or, il a viré son formulaire de contact car il se faisait spammer... J'ai bien eu envie de lui proposer le mien mais vu que je ne peux pas le contacter, ça risque d'être dur ! Smiley langue