problème condition

Eléphanteau du PHP | 28 Messages

05 févr. 2011, 23:40

bonsoir,

ma condition beug ci la personne à le numero 1 qui est 'utilisateur' des fois il à acces à la page alors que normalement non que faire,
et donc la personne devrait avoir le numero 2 'administrateur' sous mysql voici le code :
<fieldset>
<?php

// je me connecte sous mysql.
require('include/mysql.php');

			  // je déclare la variable que je vais me servir dans le champ droit de mysql.
			  $droit = '2';
			  
			  // je crée la requête qui va regarder que la personne à bien les doit require pour accéder à la page.
			  $verifdroit = $bdd->prepare('SELECT droit FROM menbre WHERE droit = 2');
			  $verifdroit->execute(array('droit' => $droit));
			  $verification = $verifdroit->fetch();
			  
			  
// je vérifie que la personne est bien connecté	et que il à les droit require.		  
if(!isset($_SESSION['login'])) {
	echo '<center><h3><font color="#ff0000"><< Vous devez être connecté pour voir cette page. >></font></h3></center>';
			} elseif ($verification) { // je fait la condition pour vérifier que la personne à les droit require.
?>
<?php

// je verifie que les variable existe.
if (isset($_POST['titre']) && isset($_POST['autheur']) && isset($_POST['texte_news']))
	{// je verifie que les champs sont pas vides.
	if (!empty($_POST['titre']) && !empty($_POST['autheur']) && !empty($_POST['texte_news']))
				{// je crée les variable et je les protege avec des fonction.
						$titre = nl2br(htmlentities(trim($_POST['titre'])));
								$autheur = nl2br(htmlentities(trim($_POST['autheur'])));
									$texte_news = nl2br(htmlentities(trim($_POST['texte_news'])));
	
									// je renvoie le requête si les champs sont remplies. et je les protege avec une fonction mysql.
									$verifnews = $bdd->prepare('INSERT INTO news(titre, autheur, date, texte_news) VALUES(:titre, :autheur, :date, :texte_news)');
									$verifnews->execute(array(
											'titre' => $titre,
											'autheur' => $autheur,
											'date' => date("Y-m-d H:i:s"),
											'texte_news' => $texte_news));
		
											$verifnews->CloseCursor();
	
										// je fait la condition php pour verifier ci la news est bien postée.
									if ($verifnews){
								echo '<br /><b><h3>&nbsp;votre news a bien été posté</h3></b>';
							} else {
						echo '<br /><u>&nbsp;erreur : la news n\'a pas plus etre posté</u>';
					}

				// je renvoie cette erreur si les champs sont vides.
			} else {
		echo '<br /><p><h3><font color="#ff0000">&nbsp;ERREUR : les champs sont vides</h3></font></p>';
		}
}
?>
<center><h2><u>Ajouter une news :</u></h2></center>
<form action="index.php?page=add-news" method="post" />
<label>Autheur :</label><br />
<input type="text" name="autheur" value=""/><br />
<label>Titre de la news :</label><br />                            
<input type="text" name="titre" value=""/><br />
<label>texte de la news :</label><br />
<textarea name="texte_news" cols="57" rows="10">
</textarea>
<input type="submit" value="    Poster la news     " />
<input type="reset" value="    réecrire la news    " />
</form>
<?php
        // si il à pas les droit require pour accéder à cette page j'affiche cette erreur.
		} else {
	echo '<center><h3><font color="#ff0000"><< Vous avez pas les droit require pour accéder à cette page ! >></font></h3></center>';
}
?>
</fieldset>

ViPHP
xTG
ViPHP | 7331 Messages

05 févr. 2011, 23:52

Un petit coup d'oeil à la documentation de la fonction fetch te répondra aisément. :)

Eléphanteau du PHP | 28 Messages

05 févr. 2011, 23:53

pourquoi mon erreur vien de ceci?

ViPHP
xTG
ViPHP | 7331 Messages

05 févr. 2011, 23:56

Ton erreur vient du fait que tu ne sais pas ce que renvoie la fonction, et donc tu utilises son retour n'importe comment.

Eléphanteau du PHP | 28 Messages

06 févr. 2011, 00:01

je vien de trouvé l'erreur enfaite ci une personne à le numéro 2 ben tout le monde à acces a la page comment faire pour que sa soit une personne precise?

par exemple par sont id unique ou encore son pseudo mais je trouve pas comment faire :(

ViPHP
xTG
ViPHP | 7331 Messages

06 févr. 2011, 01:10

C'était pas à celà que je pensais mais en effet c'est aussi un problème.
Pour le résoudre il suffit de compléter la condition WHERE : AND idMembre = $id

PS: le paramètre que tu passes à la fonction execute() ne sert à rien vu que tu n'as aucune valeur paramétrée dans ta requête.

Eléphanteau du PHP | 28 Messages

06 févr. 2011, 01:29

tu pencait a quoi et surtout comment mêttre ton code dans une requête préparé ^^
hésite pas de me donner se que tu pencait car la j'avoue que je suis complétement perdu :p

un peut comme ça?

la dessu pour ajouter id je trouve pas comment faire.
<fieldset>
<?php

// je me connecte sous mysql.
require('include/mysql.php');

			  // je déclare la variable que je vais me servir dans le champ droit de mysql.
			  $droit = '1';
			  $id = '4';
			  
			  // je crée la requête qui va regarder que la personne à bien les doit require pour accéder à la page.
			  $verifdroit = $bdd->prepare('SELECT droit FROM menbre WHERE droit = 2 AND id = 4');
			  $verifdroit->execute(array('droit' => $droit,
										 'id' => $id));
			  $verification = $verifdroit->fetch();

			  
// je vérifie que la personne est bien connecté	et que il à les droit require.		  
if(!isset($_SESSION['login'])) {
	echo '<center><h3><font color="#ff0000"><< Vous devez être connecté pour voir cette page. >></font></h3></center>';
			} elseif ($verification) { // je fait la condition pour vérifier que la personne à les droit require.
			
// je verifie que les variable existe.
if (isset($_POST['titre']) && isset($_POST['autheur']) && isset($_POST['texte_news']))
	{// je verifie que les champs sont pas vides.
	if (!empty($_POST['titre']) && !empty($_POST['autheur']) && !empty($_POST['texte_news']))
				{// je crée les variable et je les protege avec des fonction.
						$titre = nl2br(htmlentities(trim($_POST['titre'])));
								$autheur = nl2br(htmlentities(trim($_POST['autheur'])));
									$texte_news = nl2br(htmlentities(trim($_POST['texte_news'])));
	
									// je renvoie le requête si les champs sont remplies. et je les protege avec une fonction mysql.
									$verifnews = $bdd->prepare('INSERT INTO news(titre, autheur, date, texte_news) VALUES(:titre, :autheur, :date, :texte_news)');
									$verifnews->execute(array(
											'titre' => $titre,
											'autheur' => $autheur,
											'date' => date("Y-m-d H:i:s"),
											'texte_news' => $texte_news));
		
											$verifnews->CloseCursor();
	
										// je fait la condition php pour verifier ci la news est bien postée.
									if ($verifnews){
								echo '<br /><b><h3>&nbsp;votre news a bien été posté</h3></b>';
							} else {
						echo '<br /><u>&nbsp;erreur : la news n\'a pas plus etre posté</u>';
					}

				// je renvoie cette erreur si les champs sont vides.
			} else {
		echo '<br /><p><h3><font color="#ff0000">&nbsp;ERREUR : les champs sont vides</h3></font></p>';
		}
}
?>
<center><h2><u>Ajouter une news :</u></h2></center>
<form action="index.php?page=add-news" method="post" />
<label>Autheur :</label><br />
<input type="text" name="autheur" value=""/><br />
<label>Titre de la news :</label><br />                            
<input type="text" name="titre" value=""/><br />
<label>texte de la news :</label><br />
<textarea name="texte_news" cols="57" rows="10">
</textarea>
<input type="submit" value="    Poster la news     " />
<input type="reset" value="    réecrire la news    " />
</form>
<?php
        // si il à pas les droit require pour accéder à cette page j'affiche cette erreur.
		} else {
	echo '<center><h3><font color="#ff0000"><< Vous avez pas les droit require pour accéder à cette page ! >></font></h3></center>';
}
?>
</fieldset>