probleme de rang

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 : probleme de rang

Re: probleme de rang

par Aureusms » 10 nov. 2009, 00:19

Bonjour,

Tu as deux choix :
Faire l'inverse :
<?php
$requete = "SELECT pseudo FROM membres WHERE rang = '"3"'";
$resultat_sql = mysql_query($requete);
$tab_admin = array();
while ($resultat = mysql_fetch_row($resultat_sql))
{
  $tab_admin[] = $resultat[0];
}

$requete = "SELECT pseudo FROM membres WHERE rang = '"2"'";
$resultat_sql = mysql_query($requete);
$tab_membre = array();
while ($resultat = mysql_fetch_row($resultat_sql))
{
  $tab_membre[] = $resultat[0];
}

if (in_array($pseudo,$tab_admin))
{
  //admin
}

if (in_array($pseudo,$tab_membre))
{
  //membre
}
if (!in_array($pseudo,$tab_admin) && !in_array($pseudo,$tab_membre))
{
  //rien du tout
}
?>
Te faire comme te dis Ryle mais avec un switch pour être sûr de tester toute les valeurs
$sql = "SELECT rang, pseudo FROM membres WHERE pseudo = '".$pseudo."' LIMIT 1";    
$reponses = mysql_query($sql);
if (mysql_num_rows($reponses) != 0)
{
  $donnees = mysql_fetch_rows($reponses)
  switch ($donnees[0])
  {
  default :
  //en cas de rang != de 2 ou 3 on sait jamais
  break;

  case 2:
  $direction = "Location:../membre.php?pseudo=".donnees[1];
  break;

  case 3:
  $direction = "Location:../admin.php?pseudo=".donnees[1];
  break;
  }
}
else
{
  $direction =  "Location:../pas_de_pseudo.php";
}

Re: probleme de rang

par Ryle » 08 nov. 2009, 12:07

Tu fais appel successivement à mysql_fetch_array et mysql_fetch_assoc alors que ces deux fonctions ont la même utilité et c'est ce double appel qui t'empêche de faire ton test correctement... De plus, tu as une erreur dans ta requête SQL. Si tu ne sors pas ta variable de la chaine, il ne faut pas mettre de "." pour la concaténation, sans quoi ton script cherchera un pseudo commençant et terminant par un point ;)

A noter par ailleurs qu'il n'est pas utile d'ouvrir/fermer les balises php si tu ne mets pas de code html entre les deux, ni de définir un else si tu n'as pas besoin de gérer cette condition. Il n'est pas utile non plus de mettre un while si ta requête ne retourne au maximum qu'un seul enregistrement. (par contre faudra peut être un test si le pseudo n'est pas trouvé)

Enfin, plutôt qu'une redirection en javascript, je te recommande de la faire en php avec un header :)
<?php
                                    
	$sql = "SELECT rang, pseudo FROM membres WHERE pseudo = '".$pseudo."'";    
	$reponses = mysql_query($sql);

	if ($donnees = mysql_fetch_assoc($reponses)) {
		
		$rang = $donnees['rang'];

		if ($rang == 2) {
			header('Location:../interdit.php');
			exit;
		}
	}
	else { // pseudo non trouvé
		header('Location:../interdit.php');
		exit;
	}


	// si l'on arrive ici, c'est que le pseudo existe et le rang différent de 2
	....
?>

probleme de rang

par graffx » 07 nov. 2009, 21:29

bonjour a tous!

j' ai un petit souci, aujourd' hui j' arrive a rien!

les rangs:
membres = 2
admin = 3

J' aimerai juste que les membres allant dans l' admin soit redirigés vers interdit.php, voici ce que j' ai fait, mais admin comme membres y ont accés:

<?php
session_start();
include '../config.php';

$pseudo = $_SESSION['pseudo'];
?>

						<?php
					
						$reponses = mysql_query("SELECT rang, pseudo FROM membres WHERE pseudo = '.$pseudo.'");

						while ($donnees = mysql_fetch_array($reponses) )
						
						$data = mysql_fetch_assoc($donnees);
						{
						?>
						<?php
						$rang = $data['rang'];
?>
						<?php
						
					if ($rang == 2)
					
					
					{
echo '<SCRIPT LANGUAGE="JavaScript">
     document.location.href="../interdit.php"
</SCRIPT>';
exit;


}
else					
					
					?>
					<?php
					}
					?>