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

JavaScript Discussion :

Passer variable PHP en argument d'une fonction JS


Sujet :

JavaScript

  1. #1
    Membre expérimenté Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Par défaut Passer variable PHP en argument d'une fonction JS
    Bonjour à tous,

    Tout d'abord, sachez que j'ai écumé les forums, vu des tas des sujets à ce propos, mais aucune des solutions ne fonctionne pour mon cas, et je ne saisis pas pourquoi. En désespoir de cause, je crée un nouveau topic.

    J'aimerais passer deux variables de sessions (login et password) à une page, lors d'un clic sur un lien.

    Voici mon code avec le lien:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <li><span class="grr_dijon"></span><a href="grr/planning_dijon/login.php"  onClick="openWithPostData('grr/planning_dijon/login.php','<?php echo $coupleUsrPwd; ?>')">GRR Dijon</a></li>

    Ou $coupleUsrPwd est une simple chaine de caractère dans laquelle j'ai concaténée les identifiants.

    Puis ma fonction JS :
    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
    18
    19
    20
    21
    22
    23
    24
    function openWithPostData(page,data)
    {
    	var posSeparateur = data.indexOf(':');
    	var password = data.substr(posSeparateur, data.length);
            var login = // ici mon traitement pour récuperer le login
    	alert(password);
            tab[0]=password;
            tab[1]=login;
            /* le traitement des chaines n'est pas fini, mais jai testé en envoyant la chaine en dur */
    	var n = 0;
    	var form = document.createElement('form');
    	form.setAttribute('action', page);
    	form.setAttribute('method', 'post');
    	for (n in tab)
    	{
    		var inputvar = document.createElement('input');
    		inputvar.setAttribute('type', 'hidden');
    		inputvar.setAttribute('name', 'pdata'+n);
    		inputvar.setAttribute('value', tab[n]);
    		form.appendChild(inputvar);
    	}
    	document.body.appendChild(form);
    	form.submit(); 
    }
    En résumé, j'ai joué avec les ", ' et les \ pour tenter des faire passer cette variable PHP : rien à faire ! Des fois la page s'ouvre, mais les données POST ne sont pas transmises, des fois la page ne s'ouvre pas car la syntaxe est fausse ...

    quelqu'un aurait-il une piste au niveau de la syntaxe à utiliser ?
    je vous remercie d'avance !

    Cdt,
    Vespiras

  2. #2
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    Si j'ai bien compris ..

    Au clic sur un lien, tu crées un formulaire à la volée qui post un login mot de passe vers une autre page. Données qui sont contenues dans la session ?

    Pourquoi ne pas récupérer les données de la session (login / mot de passe) directement dans la page login.php ?

  3. #3
    Membre expérimenté Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Par défaut
    Merci de porter de l’intérêt à mon problème,
    la réponse est tout simplement que la page à laquelle j'envoie les POST est une page qui est indépendante et à été créée par quelqu'un d'autre. Qui utilise déjà les sessions, je ne peux donc pas récupérer mes variables de session à l'ouverture de la page.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Autant faire un ajax non ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Tu ne peux pas récupérer les variables de session parce que la page utilise les sessions ?
    Je suis pas sûr de comprendre le concept...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre expérimenté Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Par défaut
    La page cible, détruit toute session existante avant de recréer la sienne, et appelle des tas de fonctions relatives aux sessions que je comprend pas, sur plus de 500 lignes ^^

    Pour moi, j'ai repéré ou se fait l'authentification.
    Sinon, je pensais réussir à passer les variables POST, et à remplir dynamiquement le formulaire grâce à du jQuery

    Mais je ne comprend vraiment pas pourquoi je n'arrive pas à passer en argument ma variable php. J'ai essayé une fonction des plus simples :

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function openWithPostData(page, data)
    {
        alert(data);
    }

    Que j’appelle de la même manière que dans mon premier POST, mais il ne m'affiche pas l'alerte

  7. #7
    Membre expérimenté Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Par défaut
    J'ai trouvé la solution. Merci à vous pour votre aide.
    Je la poste ca pourra peut être servir :

    Cela ne fonctionnant pas avec l’événement "onClick" j’exécute la fonction javascript dans l'URL comme suit :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="javascript:openWithPostData('grr/planning_dijon/login.php','<?php echo $_SESSION['login'].':'.$_SESSION['password']; ?>')" >GRR Dijon</a>

    Je concatène le login et le mot de passe, séparés du caractère ':' pour pouvoir les découper dans ma fonction.
    Ma fonction openWithPostData :

    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
    18
    19
    20
    21
    function openWithPostData(page,data)
    { 
    	var id = new Array;
    	var posSeparateur = data.indexOf(':');
    	id[0] = data.substring( 0, posSeparateur);
    	id[1] = data.substr(posSeparateur+1, data.length);
    	var n = 0; 
    	var form = document.createElement('form');
    	form.setAttribute('action', page);
    	form.setAttribute('method', 'post');
    	for (n in id)
    	{
    		var inputvar = document.createElement('input');
    		inputvar.setAttribute('type', 'hidden');
    		inputvar.setAttribute('name', 'pdata'+n);
    		inputvar.setAttribute('value', id[n]);
    		form.appendChild(inputvar);
    	}
    	document.body.appendChild(form);
    	form.submit(); 
    }
    Et dans ma page login.php, au lieu de prendre les variables $_POST['login'] et $_POST['password'], je prend $_POST['pdata0'] et $_POST['pdata1'], pour la sécurité et l'authentification.

    Résolu !

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    il n'y a aucune raison que cela ne fonctionne pas avec un onclick si ce
    n'est que tu n'aies pas inhibé le href ...

    Sinon c'est cool d'avoir les logins et mot de passe dans le source
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre expérimenté Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Par défaut
    Inhibé ? C'est à dire ?
    Si on parle de mettre un href="#" c'était fait. J'ai aussi essayé avec "", "lurl", etc ...

    Et je n'ai pas mis le login et mot de passe, enfin il y'a le nom des variables mais c'est tout ?

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    un return false dans le onclick après la fonction ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#" onlick=openWithPostData('grr/planning_dijon/login.php','<?php echo $_SESSION['login'].':'.$_SESSION['password']; ?>;return false;')" >GRR Dijon</a>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Membre expérimenté Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Par défaut
    J'avais fait une recherche Google après avoir posé la question inutilement ^^
    Mais j'ai essayé ça ne fonctionne pas. L'authentification échoue si je procède ainsi.

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Désolé erreur de syntaxe
    je n'avais pas placé le return false au bon endroit ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a href="#" onlick=openWithPostData('grr/planning_dijon
    /login.php','<?php echo $_SESSION['login'].':'.$_SESSION['password']; ?>');return false;" >GRR Dijon</a>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  13. #13
    Membre expérimenté Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Par défaut
    Ah oui effectivement ça marche !
    Je suppose que c'est plus propre de laisser l'appel de fonction dans le onClick.

    Juste une précision, quand tu dis que les login/mot de passe sont dispo dans le code source, tu veux juste dire par la que je passe pas par une bdd pour les stocker ?

    Merci beaucoup pour les infos !

  14. #14
    Membre expérimenté Avatar de MaitreKaio
    Profil pro
    Freelance Java / Web / Mobile
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance Java / Web / Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Par défaut
    Si quelqu'un va voir le code source de la page HTML générée, il verra le login / mot de passe de l'utilisateur.

  15. #15
    Membre expérimenté Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Par défaut
    Un grand merci pour cette aberration, on vois bien que je ne suis pas habitué au dev web ...

    Quelle serait la meilleur méthode pour cacher ces variables aux yeux de tous ?
    Merci !

  16. #16
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    ne pas les faire apparaitre coté client...
    ne les utiliser que coté serveur
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  17. #17
    Membre expérimenté Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Par défaut Désolé, c'est plus du JS, mais c'est dans la suite de mon probleme
    Bonjour à tous,

    En fait mon problème n'est pas vraiment résolu, je me suis rendu compte qu'en vidant le cache, dès la connexion sur mon site, les variables de sessions que j'utilise dans mon scripts ne sont pas définies

    Et je ne comprend pas pourquoi selon le code que j'ai.

    1- Si l'utilisateur n'est pas loggé, on affiche le formulaire de connexion
    2- Si l'utilisateur entre ses identifiants, je vais faire un traitement et les comparer dans un annuaire LDAP.
    3- Si ça match, je démarre la session, je copie les identifiants dans les variables de session 'login' et 'password' et je cache le formulaire.
    4- Une fois loggé, si l'utilisateur clique sur mon lien qui appelle openWithPostData(), il me dit que les deux variables ne sont pas définies.

    Pourtant, dès le chargement de la page index.php après le submit du formulaire, je peux afficher a ma guise les variables de session, c'est du délire !

    Les quelques lignes de code concernées, au cas ou :
    index.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     <?php
    if(!isset($_POST["login"]) && !isset($_POST["password"]))	// si on vient d'arriver sur la page
    {
    	include("login.php");
    }
     
    if(isset($_POST["login"]) && isset($_POST["password"]))		// si on est loggé
    {
    	echo("<div class='user_frame' >");
    	 include("portail.php"); 
    	 include("user_ok.php"); ?>

    Le login.php est un simple formulaire dont l'action est le chargement de index.php.

    Et portail.php:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     <?php
    if($connexion_user=@ldap_bind($connexion_serveur, $user_ou, $passwd))	//on se lie, renvoie une valeur !NULL si user authentifié dans LDAP
    {
    	session_start(); 
    	$_SESSION['login'] = $_POST['login'];
    	$_SESSION['password'] = $_POST['password'];
    ?>

    Et il faut que je conserve le cache, et que je recharge index, pour que mes variables de sessions soient prises en compte dans ma fonction Js.
    Quelqu'un a-t'il une idée d'ou cela provient ?

    Un grand merci !

Discussions similaires

  1. Passage de variable php en parametre d'une fonction javascript
    Par alex7532 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 26/01/2010, 19h46
  2. Réponses: 1
    Dernier message: 05/10/2009, 03h50
  3. passer un iterator en argument d'une fonction
    Par manitor dans le forum SL & STL
    Réponses: 3
    Dernier message: 13/09/2009, 14h42
  4. passer un tableau en argument dans une fonction
    Par rogerio dans le forum Débuter
    Réponses: 6
    Dernier message: 30/10/2008, 12h15
  5. Passer un tableau PHP en argument dans une fonction javascript ?
    Par The Molo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/05/2007, 12h31

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