Ne pas répétez un script en cas de reload

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 : Ne pas répétez un script en cas de reload

par VaN » 22 sept. 2005, 15:20

ok : ) merci

par Truc » 22 sept. 2005, 15:16

Salut, ben quand tu fait un simple = c'est pour affecter une valeur à une variable. Lorsque tu fait un double = (==) c'est pour comparer les valeurs de deux variables. Donc effectivement a ne pas confondre :wink:

par VaN » 22 sept. 2005, 15:00

roh lol tu dechires. je peux avoir une explication par contre ? que je ne reproduise pas cette erreur par la suite ?

par rami » 22 sept. 2005, 14:09

Ligne 17:
$_SESSION['install']=0;  //au lieu de $_SESSION['install']==0; 
;)

Ne pas répétez un script en cas de reload

par VaN » 22 sept. 2005, 13:59

Bonjour à tous,

je me lance dans le développement d'un forum (un peu sur le même modèle que phpBB). J'ai un problème dans mon script qui va me permettre d'installer la base de données.

J'aimerais que lorsque la base a été installée, si l'utilisateur recharge la page, le script ne se relance pas. j'ai essayé de définir une variable $_SESSIOn['install'] une fois la base installée, mais cela ne marche pas.
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans nom</title>
<link href="css_green.css" rel="stylesheet" type="text/css" />
</head>

<body>
<?php
// initialisation de la variable $_SESSION['install']
if (!isset($_SESSION['install']))
{
	$_SESSION['install']==0;
}

// Si formulaire envoyé :
if (isset ($_POST['sub']) && $_POST['sub']=="Install")
{	
	//récuperation des données du formulaire
	if (isset ($_POST['host'])) 		{ 	$host = $_POST['host']; } 				else { echo "Host vide"; }
	if (isset ($_POST['login'])) 		{ 	$login = $_POST['login']; } 			else { echo "Login vide"; }
	if (isset ($_POST['pass'])) 		{ 	$pass = $_POST['pass']; }				else { echo "Pass vide"; }
	if (isset ($_POST['db'])) 			{ 	$db = $_POST['db']; }					else { echo "Nom de la base de données vide"; }
	if (isset ($_POST['suffixe'])) 		{ 	$suffixe = $_POST['suffixe']; }			else { $suffixe = ""; }
	if (isset ($_POST['admin_login'])) 	{ 	$admin_login = $_POST['admin_login']; } else { echo "Login admin vide"; }
	if (isset ($_POST['admin_pass'])) 	{ 	$admin_pass = $_POST['admin_pass']; }	else { echo "Pass admin vide"; }
	if (isset ($_POST['admin_pass2'])) 	{ 	$admin_pass2 = $_POST['admin_pass2']; }	else { echo "Pass admin vide"; }
	if (isset ($_POST['admin_mail'])) 	{ 	$admin_mail = $_POST['admin_mail']; }	else { echo "Mail admin vide"; }

	if (isset($_SESSION['install']) && $_SESSION['install']!=1)
	{
		// vérification du pass admin
		if ($admin_pass != $admin_pass2)
		{
			echo "<center><span class=\"warning\">** Les pass admin ne concordent pas. **</span></center><br />";
		}
		else
		{	
			// cryptage du pass admin et création des tables
			$admin_pass = md5($admin_pass);
	
			$connexion=mysql_connect($host,$login,$pass);
			mysql_select_db($db,$connexion);
	
			$sql01 = "CREATE TABLE `".$suffixe."users` (
					`id_user` int(11) NOT NULL auto_increment,
  					`login` text NOT NULL,
  					`pass` text NOT NULL,
					`mail` text NOT NULL,
					`acces` int(11) NOT NULL,
  					PRIMARY KEY  (`id_user`)
					) TYPE=MyISAM AUTO_INCREMENT=1";
			$query01 = mysql_query($sql01) OR die ("Erreur 01 : ".mysql_error());
		
			// insertions des données admin dans la table user
			$sql02 = "INSERT INTO ".$suffixe."users VALUES ('01','".$admin_login."','".$admin_pass."','".$admin_mail."','0')";
			$query02 = mysql_query($sql02) OR die ("Erreur 02 : ".mysql_error());
		
			// forum installé !
			echo "<center><span class=\"warning\">** Le forum a été correctement installé !</span></center><br />";
			$_SESSION['install'] = 1;
		
		}
	}
	//ouverture de session admin	
	$_SESSION['login'] = $admin_login;
	$_SESSION['pass'] = $admin_pass;
	?>
<center>
Bienvenue, <?php echo $admin_login; ?>.<br />
<a href="admin/index.php" class="link-install">Administration</a> - 
<a href="index.php" class="link-install">Forum</a>
</center>
<?php
}
?>
<?php
// Si le forum n'est pas encore installé
if ($_SESSION['install']!=1) {
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" name="install" method="POST">
<table width="50%"  align="center">
  <tr>
    <td colspan="2"><b>Ce fichier va vous aider &agrave; installer ce forum. 
	Remplissez les champs-ci dessous.</b><br /><br /></td>
  </tr>
  <tr>
    <td width="40%">Host :</td>
    <td><input type="text" name="host" /></td>
  </tr>
  <tr>
    <td>Login :</td>
    <td><input type="text" name="login" /></td>
  </tr>
  <tr>
    <td>Pass :</td>
    <td><input type="password" name="pass" /></td>
  </tr>
  <tr>
    <td>DataBase name :</td>
    <td><input type="text" name="db" /></td>
  </tr>
  <tr>
    <td>Suffixe pour les tables :</td>
    <td><input type="text" name="suffixe" value="forum_" /></td>
  </tr>
  <tr>
    <td height="20"></td>
    <td></td>
  </tr>
  <tr>
    <td>Login admin :</td>
    <td><input type="text" name="admin_login" /></td>
  </tr>
  <tr>
    <td>Pass admin :</td>
    <td><input type="text" name="admin_pass" /></td>
  </tr>
  <tr>
    <td>Validez pass admin :</td>
    <td><input type="text" name="admin_pass2" /></td>
  </tr>
  <tr>
    <td>E-mail admin :</td>
    <td><input type="text" name="admin_mail" /></td>
  </tr>
  <tr>
    <td height="20"></td>
    <td></td>
  </tr>
  <tr>
   	<td></td>
    <td><input type="submit" name="sub" value="Install" class="submit" /></td>
  </tr>
</table>
</form>
<?php
}
?>
</body>
</html>
les erreurs :
Notice: Undefined index: install aux lignes 17,20, 80, 86.
pourquoi ça ?