problème raffraichissement de page et mysql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problème raffraichissement de page et mysql

Re: problème raffraichissement de page et mysql

par nico63800 » 27 nov. 2013, 09:37

j'ai déjà eu ce problème et je l'ai réglé de la manière suivante:

page 1 :
- formulaire + saisie des données par l'utilisateur
- déclaration d'une variable de session par ex
$_SESSION['autorise_query'] = TRUE
page 2 :
- réception des données du formulaire
- test sur $_SESSION['autorise_query']
si $_SESSION['autorise_query'] == TRUE on execute le SQL ET ENSUITE on met la variable à FALSE
si $_SESSION['autorise_query'] == FALSE c'est que la page a déjà été appelée précédement
if($_SESSION['autorise_query'] )
{
    // requetes SQL ....

    $_SESSION['autorise_query'] = FALSE ;
}
else
{
    // message utilisateur du style vos données ont déjà été prises en compte 
    // retourner page accueil (ou autre) en cliquant sur ce lien
}
comme çà même si on rappelle la page avec F5 les instructions SQL ne sont pas exécutées à nouveau
et ca évite de faire une redirection
voilà si ca peut t'être utile ... :D

Re: problème raffraichissement de page et mysql

par xTG » 26 nov. 2013, 19:29

Non, et c'est pour cela qu'on différencie toujours le traitement de l'affichage.
Car header() et affichage ça fait mauvais ménage. ^^

Re: problème raffraichissement de page et mysql

par noobphp » 26 nov. 2013, 15:12

Jai lu sur un forum que la seule solution pour régler ca c'était de faire une redirection via un header(location). Il n y a pas d'autres solutions ?

Re: problème raffraichissement de page et mysql

par noobphp » 26 nov. 2013, 15:10

Merci de ta réponse, aurais tu une solution pour palier à ce problème.

Re: problème raffraichissement de page et mysql

par franckm » 26 nov. 2013, 14:58

Ben si tu fais F5 c'est normal car tu renvoies dans l'entête les données fournies dans le formulaire donc tu envoies à chaque fois le tableau $_REQUEST avec ces valeurs.

problème raffraichissement de page et mysql

par noobphp » 26 nov. 2013, 14:49

Bonjour à tous

J'ai un problème sur mon site PHP fait sur notepad++


Dans le back office de mon site, lorsque je remplis le formulaire pour ajouter des données dans ma BDD(mysql), si je raffraichi la page, les données que je viens d'intégrer s'ajoutent à nouveau et ce à chaque fois que j'appuie sur F5.

Voici le code PHP de ma page

if(isset($_POST['enregistrement']))
	{
			if(empty($msg))
			{
				execute_requete("REPLACE INTO avis(id_avis, id_membre, id_salle, commentaire, note, date_avis) VALUES ( '$_POST[id_avis]', '$_POST[id_membre]', '$_POST[id_salle]', '$_POST[commentaire]', '$_POST[note]','$_POST[date_avis]')");
				$_GET['action'] = "affichage";
			}			
				
	}	
	

//::::::::::::::::::::::::::::::::::::::::::::::::::::://
//::::::::::::::  Suppression article ::::::::::::::::://
if(isset($_GET['action']) && $_GET['action'] == "suppression" )
	{
		// $msg .= "test suppression";
		$resultat = information_sur_un_avis_backoffice($_GET['id']);
		$article_a_supprimer = $resultat->fetch_assoc();
		execute_requete("DELETE FROM avis WHERE id_avis=$_GET[id]");
		$_GET['action'] = "affichage";
	}

require_once("../inc/header_inc.php");
?>
<div id="conteneur">
<?php
require_once("../inc/nav_inc.php");
echo $msg;
echo "<div id='menu_gestion'>";
include("../inc/menu_gestion_inc.php");
echo "<h1>Gestion avis</h1>";
echo "<a href='?action=ajout'>Ajouter un avis</a><br />";
echo "<a href='?action=affichage'>Afficher les avis</a><br/>";

//:::::::::::::::::::::::::::::::::::::::::::::::::::://
//::::::::::::::  Affichage boutique ::::::::::::::::://
if(isset($_GET['action']) && $_GET['action'] == "affichage" )
{
	echo "<h1>Affichage des Avis</h1>";
	$resultat = execute_requete("SELECT * FROM avis");
	echo "Nombre de membre: " .$resultat->num_rows;
	$nbcol = $resultat->field_count;	
	echo "<table border=5><tr>";
	for($i=0; $i<$nbcol; $i++)
	{
		$colonne = $resultat->fetch_field();
		echo "<th>". $colonne->name ."</th>";
	}
	echo "<th>Modification</th>";
	echo "<th>Suppression</th>";
	echo "</tr>";
	while($ligne = $resultat->fetch_assoc())
		{
			echo "<tr>";	
			foreach($ligne as $indice => $valeur)
				{
						echo "<td>" . $valeur . "</td>";
				}			
echo "<td><a href='?action=modification&id=" . $ligne['id_avis'] . "'>---</a></td>"; 	
echo "<td><a href='?action=suppression&id=" . $ligne['id_avis'] ."' onClick=\"return(confirm('En etes vous certain?'));\">x</a></td>"; 	
echo "</tr>";
		}

	echo "</table>";
}
//:::::::::::::::::::::::::::::::::::::::::::::::::::://
//:::::::::::::  Affichage / Modification formulaire :::::::::::::::://
if(isset($_GET['action']) && ($_GET['action'] == "ajout" || $_GET['action'] == "modification"))
{
	if(isset($_GET['id']))
		{
			 echo "test modification";
			$resultat = information_sur_un_avis_backoffice($_GET['id']);
			$article_actuel = $resultat -> fetch_assoc();
		
		}
?>