Administration d'un "livre d'or".

Résolu/Fermé
Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024 - 17 nov. 2022 à 10:59
Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024 - 21 nov. 2022 à 09:03

Bonjour,

Sur mon "livre d'or", je ne peux plus utiliser certaines options telles la suppressions de messages, ou bannissements d'IP.

Voici sa présentation de la partie administration du site en image:

Et voici le script de la page accueil.php pour l'administrateur:

<?php
// Quelques variables
$template_titre = "Accueil"; // Titre de la page
$template_aide = strtolower($template_titre); // Fichier aide
$template_impromptu = 1; // Afficher JSimpromptu

require ("include/template/header.php"); // Head

require ('../include/classes/livor.class.php');  // Classe livre d'or
require ('../include/classes/pagination.class.php'); // Classe pagination

// ********************************************* Messages en attente de validation
/*$sql_count_message_a_valider = $connexion->prepare("SELECT count(id) AS nb_message_a_valider FROM ".$prefixe_tables."livor_messages WHERE message_valide = 1");*/
$sql_count_message_a_valider = $connexion->prepare("SELECT count(id) AS nb_message_a_valider FROM livor_messages WHERE message_valide = 1");
$sql_count_message_a_valider->setFetchMode(PDO::FETCH_OBJ);
$sql_count_message_a_valider->execute();
$row_count_message_a_valider = $sql_count_message_a_valider->fetch();

// ********************************************* Pagination
$sql_count = $connexion->prepare("SELECT count(id) AS nbEnr FROM livor_messages WHERE message_valide = 0");
//$sql_count = $connexion->prepare("SELECT count(id) AS nbEnr FROM ".$prefixe_tables."livor_messages WHERE message_valide = 0");
$sql_count->setFetchMode(PDO::FETCH_OBJ);
$sql_count->execute();
$row_count = $sql_count->fetch();

$nombre_de_sujet_par_page = $row_config->nbre_message_par_page;

// Options
$options = array(
	'nb_datas' => $row_count->nbEnr,
	'data_per_page' => $nombre_de_sujet_par_page,
	'nb_link_per_page' => 5,
	'url' => $_SERVER['PHP_SELF'].'?',
	'var_page' => 'page'
);
$pagination = new Pagination($options);
$pagination->separator = '';
if ($_GET['page'] != "") { $page_en_cours = $_GET['page']; } else { $page_en_cours = 1; }
$nombre_de_page = ceil($pagination->nb_datas / $nombre_de_sujet_par_page);


//  Requete d'affichage des messages
$sql = $connexion->prepare("SELECT * FROM livor_messages WHERE message_valide = '0' ORDER BY id DESC LIMIT  " . $pagination->start_offset . ", " . $pagination->data_per_page);
$sql->setFetchMode(PDO::FETCH_OBJ);
$sql->execute();

require ("include/template/body.php"); // Body
require ("include/noscript.php");

// ********************************************* ERREURS/SUUCCES MISE A JOUR AUTOMATIQUE
if (isset($_SESSION['error_maj1'])) {
	echo $_SESSION['error_maj1'];
}

if (isset($_SESSION['error_maj2'])) {
	echo $_SESSION['error_maj2'];
}

if (isset($_SESSION['error_maj3'])) {
	echo $_SESSION['error_maj3'];
}

if (isset($_SESSION['error_maj4'])) {
	echo $_SESSION['error_maj4'];
}

if (isset($_SESSION['succes_maj'])) {
	
// ********************************************* MAJ BDD
	// Changement de version
	$version = 9;
	$update = $connexion->prepare("UPDATE livor_config SET version = ? WHERE id_config = 1");
	$update->execute(array($version));			


	echo $_SESSION['succes_maj'];
}

// ********************************************* MESSAGES A VALIDER
if ($row_count_message_a_valider->nb_message_a_valider != 0) {
?>
                <div class="erreur"><a href="valider_messages.php">Il y a <?php echo $row_count_message_a_valider->nb_message_a_valider; ?> message(s) à valider.</a></div>
<?php 
}

// ********************************************* MODIFICATION D'UNE REPONSE
if ( $_GET['reponse'] == 'ok' ) {
?>
                <div class="succes">La réponse a été enregistrée avec succès.</div>
<?php 		
}
// ********************************************* MODIFICATION D'UNE REPONSE
if ( $_GET['modif'] == 'okr' ) {
?>
                <div class="succes">La réponse a été modifiée avec succès.</div>
<?php 		
}
			
// ********************************************* MODIFICATION D'UN MESSAGE
if ( $_GET['modif'] == 'ok' ) {
?>
                <div class="succes">Le message a été modifié avec succès.</div>
<?php 			
}

// ********************************************* SUPPRESSION D'UN MESSAGE
/*var_dump($_GET['action']); */
/*exit("<br/> Stop");*/
if ( $_GET['action'] == 'sup' ) {
	$delete = $connexion->prepare("DELETE FROM livor_messages WHERE id = '" . $_GET['id'] . "'");
	$delete->execute();
	
	$optimize = $connexion->prepare("OPTIMIZE TABLE livor_messages");
	$optimize->execute();
?>
          <div class="succes">Le message a été supprimé avec succès !!! Peut être devrez vous actualiser la page... </div>
<?php 
}

// ********************************************* SUPPRESSION D'UNE REPONSE
if ($_GET['action'] == 'suprep' ) {
	$delete = $connexion->prepare("DELETE FROM livor_reponses WHERE id_reponse = '" . $_GET['id'] . "'");
	$delete->execute();

	//$optimize = $connexion->prepare("OPTIMIZE TABLE ".$prefixe_tables."livor_reponses");
	$optimize = $connexion->prepare("OPTIMIZE TABLE livor_reponses");
	$optimize->execute();
?>
          <div class="succes">La réponse a été supprimée avec succès !!! Peut être devrez vous actualiser la page... </div>
<?php 
}

// ********************************************* BANNISSEMENT D'UNE IP
if ( $_GET['action'] == 'ban' ) {
	// Requête d'insertion
	$id = NULL;
	$insert = $connexion->prepare("INSERT INTO livor_ip (id_ip,ip) VALUES (?,?)");
	$insert->bindParam(1, $id);
	$insert->bindParam(2, $_GET['ip']);
	$insert->execute();
?>
          <div class="succes">L'IP a été bannie avec succès !!!</div>
<?php 

}
?>				
                <!-- PAGINATION -->
                <div class="contour_pagination">
                  <table width="100%" border="0" cellspacing="0" cellpadding="5">
                    <tr>
                      <td class="affichage_page_X_sur_Y"><?php echo "Page " . $page_en_cours . " sur " . $nombre_de_page . ""; // affichage page X sur Y ?></td>
                      <td class="page_en_cours">Page en cours : <?php echo $page_en_cours; ?></td>
                      <td class="nombre_de_sujet">Nombre de message : <?php echo $pagination->nb_datas; ?></td>
                      <td class="pagination"><?php echo $pagination->getFirstLinks() . $pagination->getLinks() . $pagination->getLastLinks(); ?></td>
                    </tr>
                  </table>
                </div>
                
                <!-- AFFICHAGE DU LIVRE D'OR -->
<?php
// Affichage des messages
while( $row = $sql->fetch() ) {
	$sql_reponse = $connexion->prepare("SELECT * FROM livor_reponses WHERE message_id = '".$row->id."'");
	$sql_reponse->setFetchMode(PDO::FETCH_OBJ);
	$sql_reponse->execute();
	$row_reponse = $sql_reponse->fetch();

	// Si résultat est différent de zéro
	if ( $sql_reponse->rowCount() != 0 ) {		
		$reponse_admin = $row_reponse->reponse;
	}
	else {
		$reponse_admin = "";
	}

	// Instentiation de la classe
	$Classe_Livre_dor = new Livre_dor($row->nom, $row->email, $row->site, $row->ville_pays, $row->time, $row->note, $row->message, $query, $admin = 'o', $reponse_admin);
?>
                <div class="les_messages">
                
                    <!-- AFFICHAGE NOM + EMAIL + SITE -->
                    <div class="nom"><strong>
					<?php echo $Classe_Livre_dor->afficher_nom(); ?></strong>
					<?php echo $Classe_Livre_dor->afficher_email(); ?>
					<?php echo $Classe_Livre_dor->afficher_site();?>
					</div>
                    
                    <!-- Modification message -->
                    <div class="date"><a href="modifier.php?id=<?php echo $row->id; ?>
					&amp;page=<?php echo $_GET['page']; ?>"><img src="images/modifier.png" alt="Modifier le message" title="Modifier le message" width="16" height="16" /></a>

					<!-- Supprimer message -->
					&nbsp;<a onclick="return confirmsupmessage(<?php echo $row->id; ?>,<?php echo $page_en_cours ; ?>)" href="accueil.php"><img src="images/supprimer.png" alt="Supprimer le message de [<?php echo $Classe_Livre_dor->afficher_nom(); ?>]" title="Supprimer le message de [<?php echo $Classe_Livre_dor->afficher_nom(); ?>]" width="16" height="16" /></a>

					<!-- Banir IP -->
					&nbsp;<a onclick="return confirmban('<?php echo $row->ip; ?>','<?php echo $page_en_cours ; ?>')" href="accueil.php"><img src="images/bannir_ip.png" alt="Bannir l'IP [<?php echo $row->ip; ?> de <?php echo $Classe_Livre_dor->afficher_nom(); ?>]" title="Bannir l'IP [<?php echo $row->ip; ?> de <?php echo $Classe_Livre_dor->afficher_nom(); ?>]" width="16" height="16" /></a>	

					<!-- Lorsque Admin n'a pas encore répondu à un message -->
					<?php if ($reponse_admin == "") { ?> 
					&nbsp;<a href="repondre.php?id=<?php echo $row->id; ?>&amp;page=<?php echo $_GET['page']; ?>"><img src="../images/commun/admin.png" alt="Répondre à ce message" title="Répondre à ce message" width="16" height="16" /></a><?php } ?>

					<!--DATE-->
					&nbsp;<?php echo $Classe_Livre_dor->afficher_date(); ?>
					</div>
                                                    
                    <!-- VILLE/PAYS + NOTE -->
                    <div class="note"><?php echo $Classe_Livre_dor->afficher_ville_pays(); ?>
					<?php echo $Classe_Livre_dor->afficher_note(); ?>
					</div>
                                                                    
                    <!-- Modification du message Admin par celui ci -->
                    <div class="le_message">
					<?php echo $Classe_Livre_dor->afficher_message(); 
					if ($reponse_admin != "") { ?>
					<div class="reponse"><div class="droite"><a href="modifier_reponse.php?id=<?php echo $row_reponse->id_reponse; ?>
					&amp;page=<?php echo $_GET['page']; ?>"><img src="images/modifier.png" alt="Modifier la réponse" title="Modifier la réponse" width="16" height="16" /></a>&nbsp;
                     
					<!-- Suppression de la réponse de l'admi par lui même --> 
					&nbsp;<a onclick="return confirmsupreponse(<?php echo $row_reponse->id_reponse; ?><?php echo $page_en_cours ; ?>)" href="accueil.php"><img src="images/supprimer.png" alt="Supprimer la réponse" title="Supprimer la réponse" width="16" height="16" /></a></div><span class="gras">Réponse de l'administrateur : </span><?php echo $Classe_Livre_dor->afficher_reponse(); ?></div><?php } ?></div>
                         
                </div>
                
                <div class="centrer"><p><a href="#hautdepage"><img src="../images/commun/haut_page_gauche.gif" alt="Haut de page" title="Haut de page" width="16" height="13" />Haut de page<img src="../images/commun/haut_page_droite.gif" alt="Haut de page" title="Haut de page" width="16" height="13" /></a></p></div>
<?php
}
?>
                <!-- PAGINATION -->
                <div class="contour_pagination">
                  <table width="100%" border="0" cellspacing="0" cellpadding="5">
                    <tr>
                      <td class="affichage_page_X_sur_Y"><?php echo "Page " . $page_en_cours . " sur " . $nombre_de_page . "";// affichage page X sur Y ?></td>
                      <td class="page_en_cours">Page en cours : <?php echo $page_en_cours; ?></td>
                      <td class="nombre_de_sujet">Nombre de message : <?php echo $pagination->nb_datas; ?></td>
                      <td class="pagination"><?php echo $pagination->getFirstLinks() . $pagination->getLinks() . $pagination->getLastLinks(); ?></td>
                    </tr>
                  </table>
                </div>

<script>

	function confirmsupmessage(id,page) {
  
		$.prompt('ATTENTION : LA SUPPRESSION EST IRREVERSIBLE !!!\n\nEtes-vous sûr de vouloir supprimer ce message ?',{			
			show:'dropIn',
			buttons:[{title: 'Supprimer',value:true},{title: 'Annuler',value:false}], 
			submit: function(v,m,f){ 	
				if (v != false) {
					document.location.href="accueil.php?id="+id+"&page="+page+"&action=sup";
				}			
			 } 
		});
	
		return false ;	
	}
       
	function confirmsupreponse(id,page)

		$.prompt('ATTENTION : LA SUPPRESSION EST IRREVERSIBLE !!!\n\nEtes-vous sûr de vouloir supprimer cette réponse ?',{
			show:'dropIn',
			buttons:[{title: 'Supprimer',value:true},{title: 'Annuler',value:false}], 
			submit: function(v,m,f){ 	
				if (v != false) {
					document.location.href="accueil.php?id="+id+"&page="+page+"&action=suprep";
				}			
			 } 
		});
	
		return false ;	
	}
	
	function confirmban(ip,page) {

		$.prompt('Etes-vous sûr de vouloir bannir cette IP ?',{
			show:'dropIn',
			buttons:[{title: 'Bannir',value:true},{title: 'Annuler',value:false}], 
			submit: function(v,m,f){ 	
				if (v != false) {
					document.location.href="accueil.php?ip="+ip+"&page="+page+"&action=ban";
				}			
			 } 
		});
	
		return false ;	
	}
	
</script> 
                
<?php
var_dump($_GET['action']); 

require ("include/template/footer.php"); // Footer
?>

En ce qui me concerne, en prenant l'exemple de la suppression d'un message inséré dans le livre par un utilisateur, je n'y parviens plus en cliquant sur l'icône représentée par l'image ci dessus.

C'est à dire plus exactement au niveau du script à la ligne 193 par onclick

Car en fait pour supprimer ce message, il faudrait que la condition en ligne 109 soit vraie.

Mais celle ci ne peut l' être comme l'indique cette image:

crée par le script de la ligne 107 (ligne 2 ci dessous) de ce même fichier que voici:

// ********************************************* SUPPRESSION D'UN MESSAGE
var_dump($_GET['action']); 
/*exit("<br/> Stop");*/
if ( $_GET['action'] == 'sup' ) {
	$delete = $connexion->prepare("DELETE FROM livor_messages WHERE id = '" . $_GET['id'] . "'");
	$delete->execute();
	
	$optimize = $connexion->prepare("OPTIMIZE TABLE livor_messages");
	$optimize->execute();
?>
          <div class="succes">Le message a été supprimé avec succès !!! Peut être devrez vous actualiser la page... </div>
<?php 
}

Il ne m'est plus possible aussi de bannir les adresses IP indésirables ainsi que d'effacer mes réponses éventuelles à certains utilisateurs de mon livre.

Je compte sur votre aide pour résoudre au moins deux de ces problèmes. Car seul, je n'y parviens pas malgré ces quelques investigations de ma part.

Cordialement.
Windows / Firefox 107.0

23 réponses

Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024
20 nov. 2022 à 18:31

J'ai trouvé la solution que voici:

La ligne 221 doit être désormais comme ceci:

&nbsp;<a onclick="return confirmsupreponse(<?php echo $row_reponse->id_reponse;?>)" href="accueil.php"><img src="images/supprimer.png" alt="Supprimer la réponse" title="Supprimer la réponse" width="16" height="16" /></a></div><span class="gras">Réponse de l'administrateur : </span><?php echo $Classe_Livre_dor->afficher_reponse(); ?></div><?php } ?></div>

Après avoir supprimer ce script dans cette ligne:

<?php echo $page_en_cours ; ?>

Le sujet est désormais résolu.

Je vais m' ennuyer maintenant que je n'ai plus de problèmes à résoudre.

Non en fait, j'ai toujours beaucoup à faire.

Merci et à bientôt.

0
jordane45 Messages postés 38173 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mai 2024 4 665
20 nov. 2022 à 19:31

Ta fonction  JS  attend 2 paramètres

function confirmsupreponse(id,page){

Lorsque tu fais appel à cette fonction dans ton code php ( à la ligne 221 ) tu as mis les deux variables... mais tu as oublié de les séparer par une virgule

	&nbsp;<a onclick="return confirmsupreponse(<?php echo $row_reponse->id_reponse; ?><?php echo $page_en_cours ; ?>)" href="accueil.php"><img src="images/supprimer.png" alt="Supprimer la réponse" title="Supprimer la réponse" width="16" height="16" /></a></div><span class="gras">Réponse de l'administrateur : </span><?php echo $Classe_Livre_dor->afficher_reponse(); ?></div><?php } ?></div>
                    

 Comme ceci:

return confirmsupreponse(<?php echo $row_reponse->id_reponse; ?>,<?php echo $page_en_cours ; ?>)"

0
Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024
21 nov. 2022 à 09:03

Ok cela fonctionne avec cette ligne:

&nbsp;<a onclick="return confirmsupreponse(<?php echo $row_reponse->id_reponse;?>,<?php echo $page_en_cours ; ?>)" href="accueil.php"><img src="images/supprimer.png" alt="Supprimer la réponse" title="Supprimer la réponse" width="16" height="16" /></a></div><span class="gras">Réponse de l'administrateur : </span><?php echo $Classe_Livre_dor->afficher_reponse(); ?></div><?php } ?></div>

Mais je réaffirme que cela fonctionne aussi avec ce que j'avais trouvé hier:

&nbsp;<a onclick="return confirmsupreponse(<?php echo $row_reponse->id_reponse;?>)" href="accueil.php"><img src="images/supprimer.png" alt="Supprimer la réponse" title="Supprimer la réponse" width="16" height="16" /></a></div><span class="gras">Réponse de l'administrateur : </span><?php echo $Classe_Livre_dor->afficher_reponse(); ?></div><?php } ?></div>

Et cela sur toutes les pages aussi.

Cependant par respect envers les auteurs de ce livre d'or (car ils sont plusieurs), je mets en œuvre la solution que tu préconises.

Pour moi ce sujet est désormais résolu.

0