Accéder à une page par variable

Icha[Last Round]
Invité n'ayant pas de compte PHPfrance

01 juil. 2005, 10:01

Aller le dernier pour la route ;)
J'espère que je vais être claire parce que c'est pas évident à expliquer
Alors voila,
En fais j'ai un menu de fais de ce style sur chaque page :
  echo "<a href='bioArt.php?id=$a'>Biographie</a>&nbsp;&nbsp;&nbsp;";
Vous voyez le genre, mais en fait dans ce menu j'ai plusieurs parties protégées pour des audio et des videos par exemple, donc j'ai dans le menu : audio et video, vous me suivez ? jusque la ça va


MAIS (et oui le problème arrive) vu que j'ai une page de login qui apparait, je dois faire passer la page que je voulais accéder de ma page de menu, jusqu'a ma page de vérifcation (double loginpseudo et cies) pour qu'il m'anène finallement à ma page que je souahitais a depart si le login est reussit

Alors j'ai fais quelques chose du genre (qui ne marche pas vous l'aurez compris pour cette redirection)

page menu :
$rep="SELECT id_artiste FROM users WHERE id_artiste='$a'";
$requet=mysql_query($rep);

 if((mysql_num_rows($requet))>0)// retourne le nombre de ligne affecte donc si il y a plus d'1 ligne c'est que la personne existe
           {
									$pagesuiv='FicheTechArt.php';
                                    echo "<a href='authentification.htm?pg=$pagesuiv&id=$a' target='_blank' >Fiches techniques</a>&nbsp;&nbsp;&nbsp;";
                                    
									
                                
          }
         else
        echo "<a href='FicheTechArt.php?id=$a'>Fiches techniques</a>&nbsp;&nbsp;&nbsp;";

Et dans ma page de vérification :
if (isset ($_GET['pg']))
{
$pg=$_GET['pg'];
}



 $req="SELECT * FROM users WHERE user_name='$pseudo' AND PASSWORD='$motdepasse'";
	  $requet=mysql_query($req)or die("encore une erreur" . mysql_error());
   

	  if(mysql_num_rows($requet)>0) 
      {
            // initialisation de la session
            session_start();
            $_SESSION['pseudo']=$pseudo;
			//mot de passe valide, passage à la page
            $message = "Bienvenue <b> ".$pseudo."</b>,  vous êtes correctement identifié<br><br>";
			
			//test avec la page de l'équipe festival
            $message .='<a href="$pg?id=$a" class="ex1">Aller à la page</a>';
			$url='$pg';
			
      }
      else
      {
	        //mot de passe non valide, >Retapez
            $message ="Mot de Passe/Identifiant incorrect ou vide <br><br>";
            $message .='<a href="authentification.htm" class="ex1">Reesayer</a>';
			$url='authentification.htm';
			//redirectionrelong("authentification.htm");
			
      }           
} 

echo $message;
redirectionrelong($url);

Mammouth du PHP | 19672 Messages

01 juil. 2005, 10:14

Dans le premier script, il y a deux choses. Personne ne le fait, néanmoins, une séparation correcte du PHP des autres langages serait souhaitable; d'autre part, tu as un lien vers une page .htm et non .php ? Est-ce normal ? Sinon, ça donnerait ceci:
$rep="SELECT id_artiste FROM users WHERE id_artiste=". $a .";";
$requet=mysql_query($rep);

if((mysql_num_rows($requet))>0)// retourne le nombre de ligne affecte donc si il y a au moins 1 ligne, c'est que la personne existe
{
    $pagesuiv='FicheTechArt.php';
    echo "<a href=\"authentification.php?pg=". $pagesuiv ."&id=". $a ."\" target=\"_blank\" >Fiches techniques</a>&nbsp;&nbsp;&nbsp;";
}
else
{
    echo "<a href=\"FicheTechArt.php?id=".$a."\">Fiches techniques</a>&nbsp;&nbsp;&nbsp;";
}
Pour le second script, soit il est incomplet, soit il y a une erreur, j'ai ajouté un commentaire sur une des dernières lignes pour que tu voies toi-même le problème;
if (isset ($_GET['pg']))
{
    $pg=$_GET['pg'];
}

    $req="SELECT * FROM users WHERE user_name='$pseudo' AND PASSWORD='$motdepasse'";
    $requet=mysql_query($req)or die("encore une erreur" . mysql_error());

    if(mysql_num_rows($requet)>0)
    {
        // initialisation de la session
        session_start();
        $_SESSION['pseudo']=$pseudo;
        //mot de passe valide, passage à la page
        $message = "Bienvenue <b> ".$pseudo."</b>,  vous êtes correctement identifié<br><br>";

        //test avec la page de l'équipe festival
        $message .='<a href="$pg?id=$a" class="ex1">Aller à la page</a>';
        $url='$pg';
    }
    else
    {
        //mot de passe non valide, >Retapez
        $message ="Mot de Passe/Identifiant incorrect ou vide <br><br>";
        $message .='<a href="authentification.htm" class="ex1">Reesayer</a>';
        $url='authentification.htm';
        //redirectionrelong("authentification.htm");
    }
} // <== cette accolade ferme quelle accollade ouvrante ??
echo $message;
redirectionrelong($url);
Petite règle de base: correctement indenter ton code te permettra de visualiser beaucoup plus facilement la symétrie des accollades ouvrantes et fermantes.

Quand tu auras corrigé ça, reviens nous voir si tu as encore des difficultés identifiées :)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

01 juil. 2005, 10:45

Cette accolade viens de ceci
if(isset($_POST['pseudo']) && isset($_POST['motdepasse']))
Désolé j'avais pas fais attentions qu'il avait pas collé cette partie :?

Bon je vais essayer tout ça

Invité
Invité n'ayant pas de compte PHPfrance

01 juil. 2005, 11:00

Il ne me passe pas à la page dont je souhaitais accéder à la base en cliquant sur mon menu, une fois que j'ai effectuer mon login correctement

Impossible d'afficher la page..l'url qui s'affiche si ça peut vous aider
http://blabla/$pagesuiv?id=$a

Mammouth du PHP | 19672 Messages

01 juil. 2005, 13:09

Si cette variable est dans une page en .html, c'est normal, ça se passe coté client et le navigateur ne sait pas lire le PHP, donc il envoie la variable telle quelle. Change ton extension et fais une concaténation proprement:
<a href="http://blabla/<?php echo($pagesuiv); ?>?id=<?php echo($a); ?>">ton lien </a>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Icha
Invité n'ayant pas de compte PHPfrance

01 juil. 2005, 13:41

Si cette variable est dans une page en .html, c'est normal, ça se passe coté client et le navigateur ne sait pas lire le PHP, donc il envoie la variable telle quelle. Change ton extension et fais une concaténation proprement:
<a href="http://blabla/<?php echo($pagesuiv); ?>?id=<?php echo($a); ?>">ton lien </a>
Ma page est une page php

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

01 juil. 2005, 13:49

Juste avant de continuer si tu t'inscrivais Icha en tant que membre ça serait plus simple pour toi de suivre ton post (et en plus tu perds rien)

Maintenant ton problème, on va le gérer petit à petit :

1. le problème de l'authentification avant l'accès à la fiche technique d'un artiste peut être vu comme suit :

Un utilisateur qui souhaite consulter une fiche technique d'artiste doit s'identifier. Ta requête

Code : Tout sélectionner

$req="SELECT * FROM users WHERE user_name='$pseudo' AND PASSWORD='$motdepasse'";
le précise bien. On comprend par là que t'as un formulaire d'identification des utilisateurs qui poste le $pseudo et $motdepasse
Dans ce cas il faut d'abord recevoir ces paramètres postés avant d'exécuter la requête.
Une fois cette dernière retourne un resultat positif : utilisateur connu, tu dois faire une redirection vers la fiche technique de l'article.

Je remarque aussi que ton utilisateur doit toujours être authentifié à chaque nouveau choix d'un artiste.
To script effectue toujours la requête et met à jour une session qui n'est pas utilisée dans le bout de code que tu fournis.
if(mysql_num_rows($requet)>0)
{
// initialisation de la session
session_start();
$_SESSION['pseudo']=$pseudo;
A ta place, je ferai l'authentification d'un utilisateur une fois par chargement de la page. Pour cela j'ouvrirai la session au début de chaque page (session_start()) et je vérifierai si l'identité du client correspond d'abord aux valeurs stockée dans sa session une première fois.
Par contre, je donnerai la mais à un utilisateur athentifié de choisir des artistes et d'accèder à leurs fiches techniques tant qu'une session valide existe (sans refaire de requêtage SQL)

Je ne te demande pas de changer ton programme mais de l'organiser.
Il faut suivre cet enchainement :
1. ouvrir une session_start()

2. si les variables pseudo/motdepasse de la session n'existent pas ou non compatibles avec l'identité postée : faire la requête SQL pour athentifier l'utilisateur et enregistrer le membre dans la session si ok.
Ici : je te propose de mémoriser dans la session un id de membre et de le transmettre dans le postage client pour reconnaitre un membre authentifié par la suite sans devoir trimbaler les pseudo/motdepasse

3. si l'étape 2 a répondu que le membre est connu : afficher la(les) fiche(s) technique(s) de(s) l'article(s) que l'utilisateur aura choisi.
sinon rester sur la liste des fiches techniques pour d'autres tentatives.

La redirection n'est pas un problème sauf que je remarque que tu achoisi d'utiliser des Hyper-liens pour rediriger manuellement alors que c'est possible de rediriger automatiquement soit en bien plaçant un include ou un header de la page ciblée.

PS: Toutefois je ne comprends pas cette requête $rep="SELECT id_artiste FROM users WHERE id_artiste=". $a .";"; Quel relation entre id_artiste et la table users ?? va falloir explique l'objectif de ton programme.
Modifié en dernier par sadeq le 01 juil. 2005, 14:22, modifié 2 fois.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Icha
Invité n'ayant pas de compte PHPfrance

01 juil. 2005, 14:19


PS: Toutefois je ne comprends pas cette requête $rep="SELECT id_artiste FROM users WHERE id_artiste=". $a .";"; Quel relation entre id_artiste et la table users ?? va falloir explique l'objectif de ton programme.
Je m'explique parce que j'ai pas du être assez clair
En fait, ma table se présente ainsi :
USERS
user_name
id_artiste
pass
email
En fait j'ai une table artiste a part, mais j'en ai pas grande uilité (a part pour récupérer le nom artiste) puisque si tu veux, pour chaque utilisateur il aura accès qu'a un seul artiste (c'est assez restreint j'en conviens) donc j'ai juste récupéré l'id dont j'avais besoin pas besoin de faire un lien avec la table artiste.
Pour ce qui est du formulaire pour voir si il a été logué pass et pseudo, c'est déja fai ça marche impec, mon seul soucis qui reste c'est pour amener à la page souhaité dans le menu avant d'avoir a passer par le login, c'est cette redirection la qui coince

Je ne fais pas de header, parce que je veux que la redirection ce fasse au bout d'un certain temps si l'user n'a toujours pas cliqué donc jai utilisé un meta taf refresh que j'ai mis dans une fonction pour pouvoir l'utiliser sur tout mon site.


C'est juste en rapport avec les parties que j'ai mis dans mon premier post que ça coince, la partie login /enregitrement de l'user marche nikel
Ce qui ne marche pas c'est pour amener celui qui navigue sur le site, du point ou il clic sur le menu pour accéder à l'un des parties sécurisé jusqu'au moment ou il y accède après son login

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

01 juil. 2005, 14:41

Icha a dit :
C'est juste en rapport avec les parties que j'ai mis dans mon premier post que ça coince, la partie login /enregitrement de l'user marche nikel
Ce qui ne marche pas c'est pour amener celui qui navigue sur le site, du point ou il clic sur le menu pour accéder à l'un des parties sécurisé jusqu'au moment ou il y accède après son login
J'avoue que ton programme présenté ne correspond pas à ce que tu dis et dans la citation tu parle de login déjà fait alors que tu avances qu'un deuxième login est nécessaire avant de rediriger l'utilisateur qui clique sur le menu.

Mais bon, sans parler de ton programme qui ne correspond pas à ce que tu dis : car si on voit bien que tu refais le login deux fois même :
1. avec la requête select id_artiste from users where id_article...
2. avec la requête select * from uses where pseudo = ....

Puisqu'un pseudo/motdepasse correspond à un artiste id_artiste (selon toi) je ne vois pas pourquoi tu passes les deux requêtes

Enfin bon, je reformule ma réponse de tout à l'heure sous forme d'exemple :
<?
   //session
   session_start();
   //récupérer l'identité du user par id ou pseudo/motdepasse
   $id_user = null;
   if (isset($_GET["id_user"]) && isset($_SESSION["id_user"]) ) 
          $id_user = $_SESSION["id_user"]; 
   else {
           //nouvelle authentification
          if (isset($_GET["pseudo"]) && isset($_GET["motdepasse"]) ) {
                  //Authentifier 
                  //votre requête de recherche du pseudo et mot de passe
                   .....
                  if (mysql_num_rows($res) >0) {
                        //membre trouvé: mémoriser son id
                        $user = mysql_fetch_assoc($res);
                        $id_user = $user["id_user"]; //si t'as un champs comme ça dans la tables users
                        $_SESSION["id_user"] = $id_user;
                  }//fin if membre trouvé
            }//fin if pseudo/motdepasse
        }//fin else nouvelle authentification

   //A ce niveau t'as un id_user qui est soit connu soit null
   //Tu dois rediriger alors vers la page fiche technique d'artiste si membre connu
   if ($id_user != null && isset($_GET["a"]) {
          $a = $_GET["a"];
          header ("Location: FicheTechArt.php?id=$a");
    }
   //sinon on reste sur cette page supposée être FichesTechniques.PHP
?>
Modifié en dernier par sadeq le 01 juil. 2005, 14:51, modifié 1 fois.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Invité
Invité n'ayant pas de compte PHPfrance

01 juil. 2005, 14:51

A mon avis je vais passer pas mal de temps ici pendants ses grandes vacances pour bosser alors j'me suis enregistré ;)
On s'est pas compris
J'avoue que ton programme présenté ne correspond pas à ce que tu dis et dans la citation tu parle de login déjà fait alors que tu avances qu'un deuxième login est nécessaire avant de rediriger l'utilisateur qui clique sur le menu.
Bien,
J'ai la page ou je suis normal, j'ai mon menu verticale en haut comme sur toutes mes pages, quand je veux cliquer sur audio par exemple, il m'amène à ma page de login ou je dois entrer mon pass et mon pseudo, et la il m'amène sur ma page audio, ce que je veux faire c'est faire passer l'info de ma page ou j'ai le menu et je clic à la vérification de l'indentification que c'est sur la page audio que je voulais aller en cliquant, et donc qu'elle m'anène à celle la.Tout le reste est fais, j'arrive juste pasà faire passer cette info
Puisqu'un pseudo/motdepasse correspond à un artiste id_artiste (selon toi) je ne vois pas pourquoi tu passes les deux requêtes
Toutes mes pages sont en php, donc pour l'artiste machin faut bien qu je recupère son id pour amener a sa page audio et pas cele du voisin

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

01 juil. 2005, 15:01

d'accord, alors peux tu m'expliquer pourquoi $a et d'où vient elle ?
En fait c'est ce $a qui me perturbe le plus à la fois dans ta page Menu et vérif.
$rep="SELECT id_artiste FROM users WHERE id_artiste='$a'";
$requet=mysql_query($rep);

if((mysql_num_rows($requet))>0)// retourne le nombre de ligne affecte donc si il y a plus d'1 ligne c'est que la personne existe
{
$pagesuiv='FicheTechArt.php';
echo "<a href='authentification.htm?pg=$pagesuiv&id=$a' target='_blank' >Fiches techniques</a>&nbsp;&nbsp;&nbsp;";



}
else
echo "<a href='FicheTechArt.php?id=$a'>Fiches techniques</a>&nbsp;&nbsp;&nbsp;";
Modifié en dernier par sadeq le 01 juil. 2005, 15:07, modifié 1 fois.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 26 Messages

01 juil. 2005, 15:04

mon $a c'est l'id de l'artiste que je récupère pour afficher par exemple le dossier presse de cet artiste la :
DossierPresseArt.php?id=$a
Je fais un
$a=$_GET["id"];
pour les récupérer d'une page à l'autres, mais le même systèm en fesant passer le nom de la page suivante à afficher dans une variable et la faire passer par l'url pour la resortir sur la page de vérif marche pas, je sais pas du tout comment proceder quand c'est le nom d'un fichier que tu veux faire passer pour qu'il t'amène a lui après

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

01 juil. 2005, 15:19

Je veux dire quand est-ce que tu lui donne une valeur avant de le passer par GET entre tes pages.
Je ne vois nullement d'affectation de valeur à $a dans tes pages Menu ou vérif.

Si j'ai bien compri son rôle, $a sert à transmettre l'id_artiste qui correspond à l'utilisateur authentifié.
Une idée : pourquoi ne pas donner la valeur de $a après la requête d'athentification et virer la 1° requête dans la page Menu.
$req="SELECT * FROM users WHERE user_name='$pseudo' AND PASSWORD='$motdepasse'"; 
      $requet=mysql_query($req)or die("encore une erreur" . mysql_error()); 
    

      if(mysql_num_rows($requet)>0) 
      { 
            // initialisation de la session 
            session_start(); 
            $_SESSION['pseudo']=$pseudo; 
             
             //valeur de $a
            $user = mysql_fetch_assoc($requet);
           $a = $user["id_artiste"];

            ...

      } 
      else 
      { 
           ...
      }            
 
Modifié en dernier par sadeq le 01 juil. 2005, 15:23, modifié 1 fois.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 26 Messages

01 juil. 2005, 15:23

Si j'ai bien compri son rôle, $a sert à transmettre l'id_article qui correspond à l'utilisateur authentifié.
Non mon $a, correspond à mon id_artiste, donc à ce que me donnera le contenu des pages pour qu'elles correspondent à l'artiste

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

01 juil. 2005, 15:25

pardon je voulais dire id artiste et non article désolé prière de relire mon ex-post
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène