IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

syntaxe curieuse pour passer des paramètres à une page PHP


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 459
    Points : 5 823
    Points
    5 823
    Billets dans le blog
    1
    Par défaut syntaxe curieuse pour passer des paramètres à une page PHP
    Bonjour,

    je suis en train de modifier un code, donc la première étape est de comprendre l'existant ! Or, j'ai à faire à une syntaxe que je ne comprends pas :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="index.php?page=administration?passwd">Changer de mot de passe</a>
    autant je comprends bien qu'à la page index.php, on passe le paramètre "page" avec la valeur "administration" (qu'on récupère dans index.php par $page=$_GET['page'];), autant je ne comprends pas la suite (?passwd) ; peut-on me l'expliquer ?

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Hum... c'est pas trop orthodoxe comme syntaxe. Il ya probablement de la réécriture d'url par dessous.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    @Celira
    Tant qu'à faire de l'URL Rewriting, on aurait plutôt vu/espéré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="administration.php?passwd">
    Donc, à priori, ce n'est pas ça.

    index.php?page=administration?passwd :
    Perso, je pencherais pour une... erreur : "?" au lieu de "&" ou "#"

    @laurentSc
    1/ As-tu vu quelque part dans index.php :
    • une utilisation/récupération d'une variable "passwd" ?? (ou dans un fichier en include ?)
    • une ancre id="passwd" ? (moins probable)

    2/ As-tu testé en enlevant ?passwd du code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="index.php?page=administration">
    Il se passe quoi ?

    2/ Ou en ajoutant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="index.php?page=administration?passwd=blabla">
    Il se passe quoi ?

    Bref : à toi aussi d'être CURIEUX

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 459
    Points : 5 823
    Points
    5 823
    Billets dans le blog
    1
    Par défaut
    Désolé, mais depuis lundi après-midi, pas pu regarder ; d'ailleurs, je n'ai vu qu'aujourd'hui que jreaux62 était intervenu. Bon je suis dans un contexte différent, sachant que lundi, le code tournait sur un serveur (qui lui-même contient Wampserver et c'est grâce à ça qu'il exécute le PHP (j'étais au boulot)) et là, je suis chez moi, donc exécute le code depuis un Wampserver qui tourne sur mon PC (car l'accès à distance fonctionne mais rame) et là, c'est un peu différent de lundi ; le lien marche mais je ne comprends pas.

    Voilà ce que j'ai vu : la page "administration.php", en gros est un gros switch :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <?php
    error_reporting(E_ALL ^ (E_NOTICE|E_WARNING|E_DEPRECATED));
    include (dirname(dirname(__DIR__)).'\pdo\config\config.php');
     
    include_once dirname(dirname(__DIR__))."\pdo\connect_mysql.php";
     
    if ((!isset($bdd)))
    	$bdd=connect_mysql();
     
    echo "<font face=lucida size=+1 color=#FF0000><b>Tâches d'Administration</b></font><br><br>";
     
     
    switch ($id)
    {
     
    case "changepasswd":
    ...
    break;
     
    case "passwd" : 
    ...
    break;
     
    et encore 3 cases et :
    default :
    echo "<br>
    	<ul>
      	<li><font face=lucida><a href=\"indexpage.php?page=administration?passwd\">Changer de mot de passe</a></font></li>
      	<li><font face=lucida><a href=\"indexpage.php?page=administration?musers\">Membres de l'équipe</a></font></li>
    	</ul>";
     
    break;
    }
    (le font face, pas encore corrigé...)
    donc la première fois qu'on va sur la page "administration.php", la variable $id ne valant rien, on passe dans le default, ce qui affiche 2 liens dont celui que j'avais montré et si on clique par exemple sur le premier, la variable $id prend la valeur "passwd" : quel le mécanisme ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    ..., la variable $id ne valant rien, ... quel le mécanisme ?...
    Encore une fois : A TOI d'être curieux !

    Il y a 2 includes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    include (dirname(dirname(__DIR__)).'\pdo\config\config.php');
     
    include_once dirname(dirname(__DIR__))."\pdo\connect_mysql.php";
    As-tu regardé dedans ???

    $id doit bien être défini à un endroit ou un autre.

    A toi de trouver le bout de code...

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 459
    Points : 5 823
    Points
    5 823
    Billets dans le blog
    1
    Par défaut
    Je viens de m'apercevoir que ce matin, j'ai oublié de répondre : donc rien à voir avec ces 2 includes (que j'avais créés moi-même suite à tes explications), mais c'est quand même lié à un include car ce qu'on ne peut pas voir ici, c'est que la page administration.php est elle-même incluse dans la page principale (que j'ai renommée "indexpage.php") et que dans cette page, il y a en tête le code $id=$_GET['id']mais ça expliquerait bien si le lien était de la forme indexpage.php?page=administration&id=psswd or il n'est que indexpage.php?page=administration?psswd et ça fonctionne quand même à savoir que si on clique dessus et que dans administration.php (rappel : cette page est incluse dans indexpage.php) je place un echo "id=".$id;, celui-ci vaut bien "passwd". Quelqu'un comprend pourquoi ? (J'ai beau être curieux, je ne vois pas...)

  7. #7
    Invité
    Invité(e)
    Par défaut
    Celira était peut-être sur la bonne piste :

    Montre-nous le contenu de .htaccess....

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 459
    Points : 5 823
    Points
    5 823
    Billets dans le blog
    1
    Par défaut
    Il n'y a pas de tel fichier...

  9. #9
    Invité
    Invité(e)
    Par défaut
    Alors... il ne reste plus qu'à prier................

  10. #10
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 459
    Points : 5 823
    Points
    5 823
    Billets dans le blog
    1
    Par défaut
    et c'est qui le dieu de l'informatique pour lui mettre un cierge ?

  11. #11
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 459
    Points : 5 823
    Points
    5 823
    Billets dans le blog
    1
    Par défaut
    D'abord, ce code date de 2005, donc si ça se trouve, cette syntaxe était valable à cette époque et plus aujourd'hui...J'aimerais la comprendre pour la mettre au goût du jour...

    Sinon, je suis tombé sur du code du même style :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    if ($filtre != "") {
    	$page1=	"index.php?page=lire?nom?1?$filtre";
    	$page2=	"index.php?page=lire?nom?2?$filtre";
    	$page3=	"index.php?page=lire?nom?3?$filtre";
    	$page4=	"index.php?page=lire?nom?4?$filtre";
    	$page5=	"index.php?page=lire?nom?5?$filtre";
    } else {
    	$page1=	"index.php?page=lire?nom?1";
    	$page2=	"index.php?page=lire?nom?2";
    	$page3=	"index.php?page=lire?nom?3";
    	$page4=	"index.php?page=lire?nom?4";
    	$page5=	"index.php?page=lire?nom?5";	
    }
    Et inutile de me parler d'URL rewriting car il n'y a pas de fichier .htaccess et comme ça tourne avec Wamp, j'ai regardé php.ini et rien non plus.

    Sinon, je viens aussi de tomber sur un code de index.php qui semble lié (y a 5') :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $args = explode("?",$page,10);
    $page=$args[0];
    $id =(isset($args[1])) ? $args[1]:"";
    $lt =(isset($args[2])) ? $args[2]:"";
    $filtre =(isset($args[3])) ? $args[3]:"";
    $argsn4 =(isset($args[4])) ? $args[4]:"";

    Si je comprends bien ce code, si je reprends $page1="index.php?page=lire?nom?1?$filtre"; vu que au début de index.page, on a $page =(isset($_GET['page'])) ? $_GET['page']:"";, j'en déduis que $page ="index.php?page=lire?nom?1?$filtre"; et donc que $page ="lire", $id="nom", $lt=1 et $filtre=$filtre.

    La conception est hyper tordue, mais ça semble être ça...

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    même si c'est tordu, ça n'en reste pas moins une utilisation normale de $_GET :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="index.php?page=lire?nom?1?blabla">xxx</a>
    $_GET['page'] vaut lire?nom?1?blabla.

    La seule chose qui soit "tordue", ou plutôt "mal-heureuse", est l'utilisation de "?" comme séparateur... dans l'URL

    N.B. Si tu veux réutiliser ce code, je te conseille quand même de CREER un .htaccess et de faire de l'URL rewriting.
    Car là... d'un point de vue "référencement"... c'est zéro.

    N.B. En tout cas, je te félicite pour ta curiosité et ta ténacité !
    Tu as fini par trouver "le bout qui va devant" !
    Dernière modification par Invité ; 08/02/2015 à 22h30.

  13. #13
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 459
    Points : 5 823
    Points
    5 823
    Billets dans le blog
    1
    Par défaut
    Oui, je suis très content d'avoir trouvé mais ça aurait mérité d'être un peu documenté alors que pas du tout . En réalité, quand je disais "J'aimerais la comprendre", j'avais pas encore trouvé le code qui m'a expliqué...

    Toi, tu dis que c'est une utilisation normale, mais je ne connaissais pas donc découvre, et le choix du séparateur ? m'a induit en erreur car j'ai pensé à une syntaxe...

    Et le référencement, vu que la cible est un site intranet, on s'en fiche par contre, effectivement, si je veux m'en resservir...

    Mais je peux cocher

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 16/10/2014, 00h25
  2. Envoyer des paramètres à une page PHP en POST
    Par Skima dans le forum Services Web
    Réponses: 1
    Dernier message: 01/10/2013, 13h37
  3. Passer un paramètre à une page php
    Par inf007 dans le forum Dynamique
    Réponses: 1
    Dernier message: 23/08/2007, 12h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo