<?php
///////////////////////////////////////////////
//                @lex Guestbook             //
//      by Soulard Alexis (c) 2002 - 2006    //
//         http://www.alexphpteam.com/       //
//             all right reserved            //
///////////////////////////////////////////////

DEFINE("AGUEST", true);
$chem_absolu = "./";

//----------------------- fichiers à inclure
include($chem_absolu."config/extension.inc");
include($chem_absolu."config/config.".$alex_livre_ext);
include($chem_absolu."include/livre_include.".$alex_livre_ext);
error_reporting(0);

//----------------------- remplacement dans le query_string
$tab_var_replace = array(
	1 => "no_ip",
	"time_erreur",
	"ok_post",
	"seeMess",
	"seeNotes",
	"seeAdd"
);

for ($i = 1; $i <= count($tab_var_replace); $i++){
	$_SERVER['QUERY_STRING'] = eregi_replace($tab_var_replace[$i]."([^&]*)", "", $_SERVER['QUERY_STRING']);
}

while (strpos($_SERVER['QUERY_STRING'], "&&")){
	$_SERVER['QUERY_STRING'] = str_replace("&&", "&", $_SERVER['QUERY_STRING']);
}

// pas de html autorisé dans le message
$messagePost = strip_tags($_POST['message_textarea']);

// si un nombre maxi de caractères a été défini dans les options
if ($maxi_car > 0)
	$messagePost = substr($messagePost, 0, $maxi_car-1);

//----------------------- url de la page à re-charger
$pageToGoAfterPost = $url_recharger."?".$_SERVER['QUERY_STRING'];

//----------------------- on s'assure de la validité de la note
if ($_POST['note_site'])
	$_POST['note_site'] = (int)trim($_POST['note_site']);

if (isset($_POST['note_site']) && $_POST['note_site'] > 10)
	$_POST['note_site'] = 10;
else if (isset($_POST['note_site']) && $_POST['note_site'] < 0)
	$_POST['note_site'] = 0;

//----------------------- on vérifie si l'ip n'est pas bannie
$ip_visiteur = $_SERVER['REMOTE_ADDR'];
sql_select_query("*", "alex_livre_ip");

$ip_bannie = false;
for ($i = 1; $i <= $nb_champs_alex_livre_ip; $i++){
	if (ip_bannie($alex_livre_ip_ip[$i], $ip_visiteur)){
		$f_db_connexion -> sql_close();
		$ip_bannie = true;
		header("Location: ".$pageToGoAfterPost."&no_ip=1");
		exit();
	}
}

//----------------------- on vérifie si l'utilisateur n'a pas déjà posté un message trop récemment
$message_trop_recent = false;

if (countTotal("*", 'alex_livre_messages', "WHERE ip='".$ip_visiteur."' and time>='".(time() - ($temps_ip_post * 60))."'")){
	$message_trop_recent = true;
	$f_db_connexion -> sql_close();
	header("Location: ".$pageToGoAfterPost."&time_erreur=1");
	exit();
}

//----------------------- on vérifie, si nécessaire, le code de sécurité
if ($admin_add_code_securite){
	$sql = "SELECT valeur FROM `".$name_table['alex_img_verif_add'] ."` WHERE numero='".$_POST['num_id']."'";
	$result = $f_db_connexion -> sql_query($sql);
	$num_valeur = $f_db_connexion -> sql_fetchrow($result);

	// si le code de sécurité est incorrect => retour à la zone de saisie
	if (!isset($num_valeur[0]) || !$num_valeur[0] || $num_valeur[0] != strtoupper($_POST['code_securite'])){
		// sauvegarde des infos saisies par l'utilisateur
		$sql = "UPDATE `".$name_table['alex_img_verif_add'] ."` SET `nom`='".ucfirst(strip_tags($_POST['nom']))."', `email`='".strip_tags(@$_POST['email'])."', `site`='".strip_tags(@$_POST['site'])."', `ville_pays`='".ucfirst(strip_tags($_POST['ville']))."', `pays`='".strip_tags($_POST['pays'])."', `note`='".@$_POST['note_site']."', `message`='".$messagePost."' WHERE numero='".$_POST['num_id']."'";
		$f_db_connexion -> sql_query($sql);

		// redirection vers la page du formulaire
		header("Location: ".$pageToGoAfterPost."&seeMess=1&seeNotes=1&seeAdd=0&code_erreur=".$_POST['num_id']);
		exit();
	}
}

//----------------------- l'utilisateur est autorisé à poster, on enregistre le message
if (trim($_POST['nom']) && trim($_POST['message_textarea']) && !$ip_bannie && !$message_trop_recent){
	// le livre nécessite-t-il une validation avant le post définitif ?
	if ($admin_valide_messages)
		$valid = "no";
	else
		$valid = "yes";

	// l'url doit commencer par http:// pour être valide
	if ($_POST['site'] && (substr($_POST['site'], 0, 7) != "http://" || trim($_POST['site']) == "http://"))
		$_POST['site'] = '';

	$query = "INSERT INTO ".$name_table['alex_livre_messages']." (nom, email, site, ville_pays, pays, note, message, time, ip, valid) VALUES ('".ucfirst(strip_tags($_POST['nom']))."', '".strip_tags(@$_POST['email'])."', '".strip_tags(@$_POST['site'])."', '".ucfirst(strip_tags($_POST['ville']))."', '".strip_tags($_POST['pays'])."', '".strip_tags(@$_POST['note_site'])."', '".$messagePost."', '".time()."', '".$ip_visiteur."', '".$valid."')";
	$result = $f_db_connexion -> sql_query($query);

	//----------------------- on recherche tous les admins qui doivent être prévenus
	sql_select_query("id_user, email", "alex_livre_users", "WHERE receive_email='1'");

	/* contenu du message */
	$chaine_message .= "IP : ".$_SERVER['REMOTE_ADDR']." (".gethostbyaddr($_SERVER['REMOTE_ADDR']).")\n".$f_lang['nom_pseudo_visiteur']." ".strip_tags(stripslashes($_POST['nom']))."\n";
	if ($ok_mail) $chaine_message .= $f_lang['email_visiteur']." ".strip_tags(stripslashes($_POST['email']))."\n";
	if ($ok_url)  $chaine_message .= $f_lang['site_web_visiteur']." ".strip_tags(stripslashes($_POST['site']))."\n";
	if ($ok_pays) $chaine_message .= $f_lang['ville_visiteur']." ".strip_tags(stripslashes($_POST['ville']))."\n";
	if ($ok_pays) $chaine_message .= $f_lang['pays_visiteur']." ".((isset($_POST['pays']) && $_POST['pays']) ? $FLAGS_LANG[strip_tags(stripslashes($_POST['pays']))] : "")."\n";
	if ($ok_note) $chaine_message .= $f_lang['note_visiteur']." ".strip_tags(stripslashes($_POST['note_site']))."\n";
	$chaine_message .= "\n".$f_lang['message_visiteur']."\n".stripslashes($messagePost)."\n";

	/* envoi d'un message aux admin */
	if ($send_mail){
		for ($i = 1; $i <= $nb_champs_alex_livre_users; $i++){
			if (isset($_POST['email']) && verifMailSyntaxe($_POST['email']))
				$from_email  = $_POST['email'];
			else
				$from_email  = $alex_livre_users_email[$i];

			$entetedate  = date("D, j M Y H:i:s");
			$entetemail  = "From: $from_email \n";
			$entetemail .= "Reply-To: $from_email \n";

			envoyer_mail($alex_livre_users_email[$i], $f_lang['mail_object'], $f_lang['mail_message'].trim($chaine_message)."\n-------------------------------------------\n\npowered by @lex Guestbook ".$alex_livre_version." - http://www.alexphpteam.com/", $entetemail);
		}
	}

	/* envoi d'un message de remerciement */
	if (isset($admin_envoyer_remerciement) && $admin_envoyer_remerciement && $_POST['email']){
		// Récupération de l'email de l'admin n°1 (administrateur du site)
		$alex_livre_users_email = '';
		sql_select_query("email", "alex_livre_users", "", "ORDER BY id_user", "LIMIT 1");

		if (isset($alex_livre_users_email[1]))
			$from_email  = $alex_livre_users_email[1];
		else
			$from_email  = trim($_POST['email']);

		$entetedate  = date("D, j M Y H:i:s");
		$entetemail  = "From: $from_email \n";
		$entetemail .= "Reply-To: $from_email \n";

		// récupération de l'éventuel message personnalisé enregistré pour la langue sélectionnée
		sql_select_query("msg", "alex_livre_txt_lang", "WHERE lang='".$f_language."' and `type`='rep_auto'");

		if (isset($alex_livre_txt_lang_msg[1]))
			$msg_send = $alex_livre_txt_lang_msg[1];
		else 
			$msg_send = $f_lang['txt_remerciement'];

		// envoi du message
		envoyer_mail(trim($_POST['email']), stripslashes($f_lang['remerciement']), str_replace("[PSEUDO]", trim(strip_tags(stripslashes($_POST['nom']))), stripslashes($msg_send)), $entetemail);
	}
}
else {
	header("Location: ".$pageToGoAfterPost);
	exit();
}

/* fermeture de la connexion */
$f_db_connexion -> sql_close();

/* redirection */
header("Location: ".$pageToGoAfterPost."&ok_post=1");
exit();
?>