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

PHP & Base de données Discussion :

Récupération variables [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2017
    Messages : 26
    Par défaut Récupération variables
    Bonsoir,

    J'ai pris un hébergement gratuit chez webhost avec php 5.3.

    La page d'accueil doit afficher un contenu différent en fonction de variables d'environnement

    J'utilise notamment des cookies avec la variable paramlog, dans une autre page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setcookie("paramlog","/index.php?erreur_msg=$erreur_msg_param");
    Sur la page d'accueil, j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php if (empty($erreur_msg)) { ?>
    Cela marche très bien en dev avec wampserver et php 5.2.6.

    Par contre, en ligne cela ne fonctionne pas auriez-vous une idée. SVP. Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ton serveur de dev utilise une mécanique totalement obsolète.
    Il faut spécifier $_GET, $_POST, $_COOKIE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php if (empty($_GET['erreur_msg'))) { ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2017
    Messages : 26
    Par défaut
    Je te remercie de ta réponse.

    Je sais que c'est obsolète comme moteur PHP mais je ne peux pas utiliser autre chose. De plus même en passant en PHP 5.2 sur le serveur de prod, cela ne marche tout de même pas.

    Je viens d'essayer ce que tu préconise mais avec empty, cela ne fonctionne pas et avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php if ($_GET['erreur_msg']!="") { ?>
    , cela ne marche pas non plus.

    Néanmoins, avec l'ancien code, si je définis manuellement dans la page d'accueil, . Cela la variable et bien pris en compte.

    Je pense qu'il y a peut-être un paramétrage à ajouter dans le htaccess afin de prendre en compte les paramètres à moins que cela soit autre chose ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je sais que c'est obsolète comme moteur PHP
    Je ne parle pas de la version de PHP mais le fait de ne pas utiliser $_GET.

    Pour ton problème, ça serait bien de nous le décrire parce que pour l'instant on a juste deux bouts de code et "ça marche pas".
    Parce que tu nous parles de cookies, de variables d'environnement, de redirection, d'un $erreur_msg qu'on ne sait pas trop d'ou il vient ...
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2017
    Messages : 26
    Par défaut
    Désolé, je précise un peu.

    J'ai une page protégée par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    needs_login($paramlog,"/index.php?erreur_msg=$erreur_msg_param");
    Elle fait appel à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	function needs_login($cookie,$error_url) 	{
     
    			if ($cookie != 1) {
     
    				if ($error_url=="") {
    					$error_url="/index.php";
    				} 
    				Header("Location: $error_url");
     
    			} else {
     
    				setcookie("redirect","/index.php",0,"/");
    			}
    		}
    La vérification se fait si le cookie existe, sinon il renvoie vers la page d'accueil avec le message d'erreur, ce qui affiche un formulaire de connexion

    Le paramétre $erreur_msg est bien passé car je vois dans la barre d'url :

    https://Monsite/index.php?erreur_msg...ous+identifier

    Mais il n'affiche pas le formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?	if (empty($erreur_msg)) { ?>
    le contenu de ma page d'accueil sans message d'erreur
    <? } else { ?>
    mon formulaire de connexion
    <? } ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php_flag short_open_tag
    est activé dans le fichier htaccess.

    Je vois en écrivant le message que le site est en https. Est-ce que cela interdit le passage de paramétres par url ? Faut-il activer une autre option dans le htaccess ?

    Merci de vos réponses.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Plutôt que de t’embêter à activer short_open_tag dans ton htaccess, écrit les tags entier dans ton code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php if (empty($_GET['erreur_msg'])) { ?>
    Tu peux contrôler ce que tu reçois de l'url :
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre averti
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2017
    Messages : 26
    Par défaut
    Bonjour,

    Merci de ta réponse, cela semble marcher avec ta méthode. Mais, il semble que je sois obligé de redévelopper tout mon site avec les $_GET et $_POST.
    C'est un très très gros travail. N'y aurait-il pas un paramétrage à utiliser pour le faire fonctionner sans cela, le temps que petit à petit je repasse sur toutes les pages ?

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut activer register_globals, mais c'est une très mauvaise pratique.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre averti
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2017
    Messages : 26
    Par défaut
    En fait, j'ai essayé mais cela ne donne rien. De plus ta méthode fonctionne avec une page qui passe les paramètres en clair mais si j'utilise un frameset comme c'était le cas avant (que j'essaye ton code avec une page en directe).

    En fait, il semble que les variables passées dans l'url ne fonctionnent pas. J'obtiens le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Undefined variable: erreur_msg in /monchemin/index.php on line 11
    Comment pourrais-je passez les paramètres vers la page d'accueil, sans avoir ce message d'erreur.

    Ci-dessous le code de la page d'index.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <html>
    <HEAD>
     
     
    <title>Gestion du service de location</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     
     
    </HEAD>
    <frameset rows="*" border="0">
    <frame name="main" src="/accueil.php?erreur_msg=<? echo $erreur_msg ?>">
    </frameset>
     
    </html>

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pour remettre les choses dans le contexte tout de même, ce n'est pas "ma méthode" c'est la façon dont fonctionne PHP depuis 10 ans.
    C'est comme les frame qui ont disparu des usages depuis 15 ans.

    As-tu mis un
    dans ta page accueil.php comme je t'ai indiqué ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre averti
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2017
    Messages : 26
    Par défaut
    Oui, en fait, je suis un dinosaure...

    J'ai fait du développement web de 2000 à 2010. C'est pourquoi, je capitalise sur cette expérience pour réaliser un extranet en php, pour une asso.

    J'utilisais des frames pour cacher les variables transmissent dans les url.

    J'ai bien mis le var_dump, c'est d'ailleurs ce qui m'a permis de comprendre que le problème vient entre-autre du frameset. j'obtiens le message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(1) { ["erreur_msg"]=> string(100) "Notice: Undefined variable: erreur_msg in /storage/ssd5/672/2049672/public_html/index.php on line 11" }
    Alors qu'en dev, j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(1) { ["erreur_msg"]=> string(0) "" }
    ce qui me convient plus.

  12. #12
    Membre averti
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2017
    Messages : 26
    Par défaut
    Grace aux pistes que tu m'as donné et des recherches sur le web, je pense avoir trouvé la solution, ajouter à mon fichier de connexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    extract($_GET,EXTR_OVERWRITE);
    extract($_POST,EXTR_OVERWRITE);
    extract($_COOKIE,EXTR_OVERWRITE);
    Cela semble résoudre une partie de mes problèmes, à condition que j'utilise une page qui passe en clair les variables. Si tu as une piste pour le frameset, je suis preneur, cela permettrait de cacher ces url.

  13. #13
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ou est défini $erreur_msg_param ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  14. #14
    Membre averti
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2017
    Messages : 26
    Par défaut
    Il est défini dans la page protégée avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    needs_login($paramlog,"/index.php?erreur_msg=$erreur_msg_param");
    Dans le fichier de config, il est défini en tant que variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (($row[1]=="erreur_msg_client") || ($row[1]=="erreur_msg_it") || ($row[1]=="erreur_msg_param")) {
     
    $$row[1]=urlencode($row[2]);
     
    }

    Dans la page sans frameset, cela fonctionne correctement.

  15. #15
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Et $row[2] c'est quoi ?
    Je serai curieux de savoir comment on se retrouve avec un message d'erreur écrit dans une variable.

    Sinon pourquoi veux-tu cacher les url ?
    La méthode extract() pose le même problème que "register_global", c'est des trous de sécurité. Pour un extranet un peu ancien, c'est préocupant.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  16. #16
    Membre averti
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2017
    Messages : 26
    Par défaut
    Et voila comment on fait :

    Code : 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
    $sSQL200="SELECT fjs_param_id, fjs_param_nom, fjs_param_valeur, fjs_param_comment, fjs_param_taillechamps FROM tjs_param WHERE fjs_param_actif=1 ORDER BY fjs_param_id";
    	$q->query($DB,$sSQL200);
    				if ($q->numrows()) {
    				$row=$q->getrow();
    				while ($row) { 
     
    				if (($row[1]=="erreur_msg_client") || ($row[1]=="erreur_msg_it") || ($row[1]=="erreur_msg_param")) {
     
    					$$row[1]=urlencode($row[2]);
     
     
    				} else {
    					$$row[1]=$row[2];
    				}
    					$row=$q->getrow();
    							}
    					}
    Sinon, cacher les paramétres dans l'url, c'est simplement pour faire plus propre.

    De plus, il s'agit d'une solution de dépannage, le temps que je redéveloppe le site.

    Enfin, il s'agit d'une toute petite asso et l'adresse ne sera connu que de quelques personnes

  17. #17
    Membre averti
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2017
    Messages : 26
    Par défaut
    J'ai rajouté avant la déclaration html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (empty($erreur_msg)) {
    $erreur_msg="";
    }
    en plus de l'extract dans le fichier de config.

    Merci en tout cas de ton aide, qui m'a permis de voir les choses différemment.

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

Discussions similaires

  1. appel de fonction sans récupération variable
    Par mussara dans le forum Langage
    Réponses: 2
    Dernier message: 22/06/2006, 12h10
  2. Problèmes récupération variable
    Par bouchette63 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 15/06/2006, 11h44
  3. PHP récupération variables
    Par marie4449 dans le forum Langage
    Réponses: 3
    Dernier message: 08/06/2006, 21h14
  4. [MySQL] Problème récupération variable pour requête SQL !!
    Par mLk92 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/06/2006, 17h08
  5. Réponses: 9
    Dernier message: 15/03/2006, 11h46

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