[RESOLU] Restreindre l'acces a une page en fonction d'une donnée sql

Ancien Utilisateur
Invité n'ayant pas de compte PHPfrance

26 oct. 2015, 01:17

Bonjour,

Je suis en train de creer une application web qui permet aux utilisateur de donner leur non disponibilité.
La personne accède a une page pour y entrer les horaires etc... Ensuite je souhaiterais que l'utilisateur ne puisse pas avoir accès a cette page tant qu'il n'a pas rendu sa disponibilité.
Lors de l'envois du formulaire j'incrémente ma table:
"actif=1" L'utilisateur n'est pas disponible et n'aura pas acces a la page formulaire
"actif=0" L'utilisateur est libre et a accès a la page formulaire.

Le site dispose deja d'une table "membre" qui reference les utilisateurs "login, mdp, email etc..."
et d'une autre table "historique" qui reference toutes les données du formulaire + la valeur "actif".

J'ai passé l'après midi a essayer mainte et mainte façon je n'y arrive pas. Mon code doit être bien crade avec tout ces essais... :oops:
Merci de m'aider :P
<?php
session_start();
if (!isset($_SESSION['login'])) {
	header ('Location: login.php');
	exit();
}
?>
<?php
	mysql_connect("*****", "*****", "*****") or die (mysql_error ());
	mysql_select_db("*****") or die(mysql_error());
	$strSQL  = 'SELECT actif FROM historique ';
	$rs = mysql_query($strSQL);
	if ($rs[actif] == 'A') {
	$sql =	header('Location: index.php'); 
	}
?> 
<?php
	mysql_connect("*****", "*****", "*****") or die (mysql_error ());
	mysql_select_db("*****") or die(mysql_error());
	$strSQL = "SELECT * FROM membre WHERE login = '$_SESSION[login]'";
	$rs = mysql_query($strSQL);
?>	
<?php
$annee = date("Y");
$mois = date("m");
$jour = date("d");
 
$heure = date("H");
$minute = date("i");
 ?>
<?php
if(isset($_POST['guide']))      $guide=$_POST['guide'];
else      $guide="";

if(isset($_POST['accompagnants']))      $accompagnants=$_POST['accompagnants'];
else      $accompagnants="";

if(isset($_POST['lieu']))      $lieu=$_POST['lieu'];
else      $lieu="";

if(isset($_POST['date_entree']))      $date_entree=$_POST['date_entree'];
else      $date_entree="";

if(isset($_POST['heure_entree']))      $heure_entree=$_POST['heure_entree'];
else      $heure_entree="";

if(isset($_POST['date_sortie']))      $date_sortie=$_POST['date_sortie'];
else      $date_sortie="";

if(isset($_POST['heure_sortie']))      $heure_sortie=$_POST['heure_sortie'];
else      $heure_sortie="";

if(isset($_POST['contact']))      $contact=$_POST['contact'];
else      $contact="";

if(isset($_POST['commentaire']))      $commentaire=$_POST['commentaire'];
else      $commentaire="";

if (isset($_POST['Valider']) && $_POST['Valider'] == 'Valider') {
	if ((isset($_POST['guide'])) && (isset($_POST['accompagnants'])) && (isset($_POST['lieu']) && !empty($_POST['lieu'])) && (isset($_POST['date_entree'])) && (isset($_POST['heure_entree'])) && (isset($_POST['date_sortie'])) && (isset($_POST['heure_sortie'])) && (isset($_POST['contact'])) && (isset($_POST['commentaire'])) ) {    
	if ($_POST['pass'] != $_POST['pass_confirm']) {
		$erreur = 'Les 2 mots de passe sont differents.';
	}
		else {
			$base = mysql_connect ('*****', '*****', '*****');
			mysql_select_db ('*****', $base);	
			if ($data[0] == 0) {			
			$sql ="INSERT INTO historique VALUES('', '$guide', '$accompagnants', '$lieu', '$date_entree', '$heure_entree', '$date_sortie', '$heure_sortie', '$contact', '$commentaire', 'o')";
			mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
			$validation = "Programme envoye.";
			header('Location: sortie.php');
			exit();
		}
		}
	}
	else {
	$erreur = 'Au moins un des champs nest pas remplis.';
	}	
	
}
?>
<html>
<head>
	<title>Ariane | Visite</title>
	<style type="text/css"></style></head>
	<link href="css/index.css" rel="stylesheet" type="text/css">
	<link rel="icon" type="image/png" href="images/logo.png" />
	<link rel="icon" href="images/favicon.ico" />
</head>
<body>
	<div id="divLogo">
		<a href="http://orguerra.com/ariane">
			<img src="images/logojaune.png" style="width: 550px; height: 250px; max-width: 100%; height: auto;"; alt=""><br>
		</a>
	</div>
	<div>
		<form class="form-4" action="visite.php" method="post">
			<H1> Saisie du programme :<br /> </h1>		
			Guide: <input type="text" name="guide" value="<?php $rs = mysql_query($strSQL); while($row = mysql_fetch_array($rs)) {echo $row['login'];} ?>" READONLY><br />
			Accompagnants: <input type="text" name="accompagnants" value="" ><br />
			Lieu de visite : <input type="text" name="lieu" value="<?php if (isset($_POST['lieu'])) echo htmlentities(trim($_POST['lieu'])); ?>" ><br />
			Date d'entree : <input type="datetime" name="date_entree" value="<?php echo '' .$jour. '/' .$mois. '/' .$annee. '';?>"><br />
			Heure d'entree : <input type="datetime" name="heure_entree" value="<?php echo '' .$heure. ':' .$minute. '';?>"><br /> 
			Date de sortie : <input type="datetime" name="date_sortie" value="<?php echo '' .$jour. '/' .$mois. '/' .$annee. '';?>"><br />
			Heure de sortie : <input type="datetime" name="heure_sortie" value="<?php echo '' .$heure. ':' .$minute. '';?>"><br />
			Contact principal: <input type="number" name="contact" value="<?php $rs = mysql_query($strSQL); while($row = mysql_fetch_array($rs)) {echo $row['numero1'];}?>"><br />
			Commentaires : <input type="text" name="commentaire" value="<?php if (isset($_POST['commentaire'])) echo htmlentities(trim($_POST['commentaire'])); ?>"><br />
			<center>
				<?php
				if (isset($erreur)) echo '<br />',$erreur;
				if (isset($validation)) echo '<br />',$validation;
				?><br><br>
			</center>
			<input type="submit" name="Valider" value="Valider">
		</form>
		<form class="form-4" action="index.php">
			<input type="submit" name="Accueil" value="Accueil">
		</form>
	</div>
</body>
<footer>
	<div id="footer">
		<?php include("include/footer.php"); ?>
	</div>
</footer>
</html>

Ancien Utilisateur
Invité n'ayant pas de compte PHPfrance

26 oct. 2015, 18:03

Voici ce que j'ai essayé pour rejeter la connexion a une personne active :
<?php
	mysql_connect("perso", "log", "**") or die (mysql_error ());
	mysql_select_db("yable") or die(mysql_error());
	$strSQL  = 'SELECT actif FROM historique WHERE login = '$_SESSION[login] ';
	$rs = mysql_query($strSQL);
	if ($rs[actif] == 'A') {
	$sql =	header('Location: index.php'); 
	}
?>
Je demande a ma page d'aller dans la base de donnée sonder toutes les lignes contenant le login de la personne logué ensuite si une ligne contient A dans la colonne actif l'utilisateur est renvoyé a la page SORTIE.php sinon l'utilisateur peut remplir le formulaire.
Ensuite pareil pour la page sortie, qui ne sera accessible seulement si la valeur dans actif est null ou N

Je pense avoir été plus clair ici.

Mammouth du PHP | 2703 Messages

26 oct. 2015, 18:11

autant dans la requete tester aussi actif='A' et voir si la requete retourne des résultats ou non.
$strSQL = 'SELECT actif FROM historique WHERE actif='A' and login = "'$_SESSION[login] '"';

Ancien Utilisateur
Invité n'ayant pas de compte PHPfrance

26 oct. 2015, 19:32

Merci de ta réponse mais ca ne va toujours pas.
<?php
	mysql_connect("333", "333", "333") or die (mysql_error ());
	mysql_select_db("333") or die(mysql_error());
	$strSQL ="SELECT actif FROM historique WHERE actif='A' and guide='$_SESSION[login]'";
	$rs = mysql_query($strSQL);
	$rs =	header ('Location: index.php'); 	
?>
Ca me renvois direct a index, j'ai plus acces a la page, meme si je vide ou met autre chose que A dans actif.

Ancien Utilisateur
Invité n'ayant pas de compte PHPfrance

26 oct. 2015, 22:20

Bon apres deux jours j'ai enfin trouvé seul en bidouillant, voici mon code pour ceux qui auront le même soucis :
<?php
	mysql_connect("****", "****", "******") or die (mysql_error ());
	mysql_select_db("****") or die(mysql_error());
	$strSQL = "SELECT * FROM historique WHERE guide = '$_SESSION[login]' AND actif = 'A' ";
	$rs = mysql_query($strSQL);	
	$rs = mysql_query($strSQL); while($row = mysql_fetch_array($rs)) {echo $row['actif'];
	$row = 	header('Location: sortie.php'); 
	}
	mysql_connect("****", "*****", "****") or die (mysql_error ());
	mysql_select_db("****") or die(mysql_error());
	$strSQL = "SELECT * FROM membre WHERE login = '$_SESSION[login]'";
	$rs = mysql_query($strSQL);
?>