Logo du forum
 

Forum TTH-News

| Inscription | | Recherche | | FAQ | | Accueil | | Liste des membres |
| Calendrier |
 
Vous n'êtes pas identifié! [Connexion] ou [Inscription] Forum » Programmation » [HTML / CSS] » Méthode POST et construction d'une URL
Login Mot de passe

2 visiteurs sur ce topic (0 membre(s), 2 invité(s) )


Aller à la page n°  
  Mot  Pseudo  
Page : 1 2
Auteur
Sujet : Méthode POST et construction d'une URL
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 14-01-2009 @ 16:44      Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   


Bonjour,

J'utilise l'application Mydms. Je souhaiterai passer les paramètres de login (nom d'utilisateur et mot de passe) d'une autre application dans une url de type :

Code :


<input type="button" value="Connexion"
onclick="java script:openPopup('http://serveurdistant?login=<test>&pwd=<test>', 0, 0, 'menubar=no,scrollbars=yes,statusbar=no,resizable=yes')">



Cela me permettrait en quelque sorte d'avoir une "authentification unique" à travers la mise en place d'un "bridge".

L'extrait du fichier source op.login.php qui fait référence au login et utilise la méthode post est le suivant :

Code :


<form action="../op/op.Login.php" method="post" name="form1" onsubmit="return checkForm();">
<?php
if (isset($_GET["referuri"]) && strlen($_GET["referuri"])>0) {
   $refer=$_GET["referuri"];
}
else if (isset($_POST["referuri"]) && strlen($_POST["referuri"])>0) {
   $refer=$_POST["referuri"];
}
if (isset($refer) && strlen($refer)>0) {
   echo "<input type='hidden' name='referuri' value='".$refer."'/>";
}
?>
   <table border="0">
      <tr>
         <td><?php printMLText("user_login");?><td>
         <td><input name="login" id="login"><td>
      <tr>
      <tr>
         <td><?php printMLText("password");?><td>
         <td><input name="pwd" type="Password"><td>
      <tr>
      <tr>
         <td colspan="2"><input type="Submit" value="<?php printMLText("submit_login") ?>"><td>
      <tr>
   <table>
</form>



Comment puis-je construire mon url pour établir une connexion ?

Merci pour vos contributions.
----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -
icy
Administrateur
Membre # 871

 Avatar du membre
Lieu : Bxl

Messages :
23217 (3.69 par jour)


Score :

Message du 14-01-2009 @ 17:01   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

je ne suis pas un pro php, mais faire passer ca, meme en post, c'est tres tres tres dangereux, meme crypté avec un algo maison.
utiliser openId, ou un mécanisme maison du genre( soa ou clef public/privé+ssl) est fortement conseillé...


[message édité le 14-01-2009 @ 17:01 Par icy]
----------
"May He touch you with His Noodly Appendage"
- Haut de page -
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 14-01-2009 @ 17:50   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

C'est à dire que je n'ai guère le choix. L'application en question n'est pas codé pour prendre en compte du soa et son intégration serait trop complexe.
Les deux appli. restent toutefois sous https.
----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -
frednet
Vétéran
Membre # 3998

 Avatar du membre
Lieu : Lat: 49°20'24" Nord Long: 6°22'48" E

Messages :
2060 (0.36 par jour)




Message du 15-01-2009 @ 8:32   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Utiliser la variable $_SESSION ne serait pas plus simple ?

Lorsque l'utilisateur s'identifie tu remplis 2 valeurs genre $_SESSION['user'] et $_SESSION['mdp'] (pour lequel je recommende fortement de l'encoder en md5 pour au moins limiter les pb de securite

Puis dans la popup que tu vas appeler tu recuperes la variable $_SESSION.

Attention, ne pas oublier un "session_start" au debut de chaque page et lors de la deconnexion un session_close.

@+ Fred
- Haut de page -
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 15-01-2009 @ 9:13   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Mon problème n'est pas tant du choix de la variable bien que, mais surtout comment faire passer ces valeurs (application 1) dans la construction de l'URI (application 2).

http://serveurdistant?login=&pwd= --> n'est pas suffisant.

On m'a parlé également de pouvoir travailler sur les cookies.

[message édité le 15-01-2009 @ 9:13 Par zorgh]
----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -
frednet
Vétéran
Membre # 3998

 Avatar du membre
Lieu : Lat: 49°20'24" Nord Long: 6°22'48" E

Messages :
2060 (0.36 par jour)




Message du 15-01-2009 @ 13:42   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

dans la page 1 qui va ouvrir la popup (dans laquelle tu as besoin de receptionner tes parametres)

tu fais une page:
Code :


<?php
session_start;
$_SESSION['user'] = "toto";
$_SESSION['mdp'] = "titi";
?>

<input type="button" value="Connexion"
onclick="java script:openPopup('http://serveurdistant/popup.php', 0, 0, 'menubar=no,scrollbars=yes,statusbar=no,resizable=yes')">


puis dans le fichier popup.php
Code :


<?php
session_start;

if (isset($_SESSION['user'])) {
echo $_SESSION['user'];
}


if (isset($_SESSION['mdp'])) {
echo $_SESSION['mdp'];
}
?>



La variable $_SESSION est geree via un "cookie" ou via une sessionid (cela depend du parametrage dans ton php.ini). Donc elle est accessible dans n'importe quelle page pour peu que tu es demarrer la session avec session_start.

[message édité le 15-01-2009 @ 13:43 Par frednet]
- Haut de page -
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 15-01-2009 @ 21:17   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Merci frednet pour cette réponse mais la popup ne m'affiche rien.

J'ai modifié quelque peu la page d'appel :

Code :


<?php
session_start;
$_SESSION['user'] = "toto";
$_SESSION['mdp'] = "titi";
?>
<FORM>
<input type="button" value="Connexion" onclick="window.open('http://serveurdistant/popup.php','window','width=400,height=200,toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,copyhistory=yes,resizable=yes')">
</FORM>



et la popup ainsi :

Code :


...
if (isset($_SESSION['user'])) {
echo "toto";
echo $_SESSION['user'];
...


}

[message édité le 15-01-2009 @ 21:19 Par zorgh]
----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -
frednet
Vétéran
Membre # 3998

 Avatar du membre
Lieu : Lat: 49°20'24" Nord Long: 6°22'48" E

Messages :
2060 (0.36 par jour)




Message du 16-01-2009 @ 9:00   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Verifie que tu as bien mis un "session_start" au debut de ta page "popup" et de la page contenant le formulaire.
- Haut de page -
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 16-01-2009 @ 9:18   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

C'est le cas. session_start figure dans les 2 fichiers.

Code :


<?php
session_start;
if ((isset($_SESSION['login'])) && (!empty($_SESSION['login'])))
{
echo $_SESSION["login"];
}
else
{
echo 'Pas de login en session';
}

if (isset($_SESSION['pwd'])) {
echo $_SESSION['pwd'];
}
?>



Me retourne : Pas de login en session

[message édité le 16-01-2009 @ 9:19 Par zorgh]
----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -
frednet
Vétéran
Membre # 3998

 Avatar du membre
Lieu : Lat: 49°20'24" Nord Long: 6°22'48" E

Messages :
2060 (0.36 par jour)




Message du 16-01-2009 @ 11:10   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

tu peux mettre tes 2 fichiers stp ?
- Haut de page -
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 16-01-2009 @ 11:50   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Je ne suis plus sur mon lieu de test. Je t'envoie les fichiers en fin d'après-midi.
Merci encore pour l'entraide.
----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -
frednet
Vétéran
Membre # 3998

 Avatar du membre
Lieu : Lat: 49°20'24" Nord Long: 6°22'48" E

Messages :
2060 (0.36 par jour)




Message du 16-01-2009 @ 13:40   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

pas de probleme on est la pour ca :D. Je regarderai alors ce soir en rentrant chez moi parce que la je n'ai pas de serveur HTTP pour faire des tests ;-)
- Haut de page -
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 16-01-2009 @ 19:58   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Php, Zip ... dixit PM



[message édité le 16-01-2009 @ 19:58 Par zorgh]
----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -
frednet
Vétéran
Membre # 3998

 Avatar du membre
Lieu : Lat: 49°20'24" Nord Long: 6°22'48" E

Messages :
2060 (0.36 par jour)




Message du 16-01-2009 @ 21:43   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

dans mon exemple, ajoute des parentheses au session_start.

L'exemple ci-dessous fonctionne

Code :

Fichier "test.php"
<?php
session_start();

$_SESSION['user'] = "toto";
$_SESSION['mdp'] = "titi";
?>

<input type="button" value="Connexion"
onclick="java script:window.open('http://localhost/test/popup.php', 0, 0, 'menubar=no,scrollbars=yes,statusbar=no,resizable=yes');">



Code :

Fichier "popup.php"

<?php
session_start();

if (isset($_SESSION['user'])) {
echo '<pre>'. $_SESSION['user'] . '</pre>';
}


if (isset($_SESSION['mdp'])) {
echo '<pre>'. $_SESSION['mdp'] . '</pre>';
}
?>



Par ailleurs, si tu en as la possibilite, installe le Framework Zend qui dispose de classes pour la gestion des autorisations, les identifications, etc... Il y a bien sur plein d'autre chose qui pourrait etre utile :D

@+ Fred

[message édité le 16-01-2009 @ 21:45 Par frednet]
- Haut de page -
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 16-01-2009 @ 21:57   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Cela fonctionne avec session_start(); Merci frednet

Je suis obligé de placer désormais sur chaque page php session_start();
Sur une tarball avec une centaine de fichiers, c'est chaud !!
----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -
frednet
Vétéran
Membre # 3998

 Avatar du membre
Lieu : Lat: 49°20'24" Nord Long: 6°22'48" E

Messages :
2060 (0.36 par jour)




Message du 16-01-2009 @ 21:59   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

oui c'est malheureusement une des contraintes... tu pourrais creer un petit script qui parcourerait tous les fichiers d'un repertoire et y ajouterai cette fonction :D Remarque tu en as besoin uniquement sur les pages qui sont finalement appellees (pas besoin de le faire dans les includes par exemple).

Bon courage ;-)


- Haut de page -
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 17-01-2009 @ 19:23   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

frednet a écrit



Attention, ne pas oublier un "session_start" au debut de chaque page et lors de la deconnexion un session_close.

@+ Fred



D'ailleurs pourquoi un session_start(); sur chaque page. Dans le test effectué, je parviens à naviguer sans problème sur la deuxième appli alors que j'ai mis un session_start(); uniquement dans popup.php ?


[message édité le 17-01-2009 @ 19:23 Par zorgh]
----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -
frednet
Vétéran
Membre # 3998

 Avatar du membre
Lieu : Lat: 49°20'24" Nord Long: 6°22'48" E

Messages :
2060 (0.36 par jour)




Message du 17-01-2009 @ 20:48   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

En fait, tu as besoin de mettre un "session_start" partout ou tu vas vouloir utiliser la variable $_SESSION. je pense que si tu ne le fait pas, alors $_SESSION sera une super variable (comme $GLOBALS) mais ne sera pas gere via une session (cookie ou session id).

plus d'info
http://fr2.php.net/manual/fr/session.idpassing.php
http://fr2.php.net/manual/fr/session.examples.basic.php

- Haut de page -
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 21-01-2009 @ 17:11   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Bon je suis à nouveau coincé lorsque j'essaye de passer mes variables de session d'un site à un autre (les deux sites étant hébergés sur le même serveur et à la racine du serveur web). Je précise que site1 et sote2 sont sur un même domaine.

Depuis le site1 :

session_start();
global $db;
$res=$db->db_query("select nickname, password from ".tab_users." where id='1'");
$arruser = $GLOBALS['db']->db_fetch_array($res);
$_SESSION['login'] = $arruser['nickname'];
$_SESSION['pwd'] = $arruser['password'];
header("Location: http://192.168.1..2/site2/Login.php");
exit();
?>

Depuis le site2 (Login.php :

session_start();
if ((isset($_SESSION['login'])) && (!empty($_SESSION['login']))) { //on vérifie que la session est ouverte
$login = $_SESSION['login'];
}
else {
echo "identifiant manquant";
exit;
}

J'ai vérifié le résultat de ma requête par un affichage $arruser['nickname'] et $arruser['password']. Le résultat est bon.

On m'a suggéré de placer site1 et site2 à des niveaux différents dans l'espace web mais rien ne passe.

Tout idée est la bienvenue. Je continue mes recherches.
L'utilisation de la méthode GET quant à elle fonctionne mais ce n'est pas optimal au niveau sécurité. N'importe qui peut placer une requête http avec les variables qui vont bien &login=... etc. Derrière l'application tierce (site2) contrôle le login parsé en consultant sa bdr. Si le login n'apparaît pas dans la base, un utilisateur est créé. C'est mon application 1 (site1) qui gère donc l'authentification.


[message édité le 21-01-2009 @ 17:27 Par zorgh]
----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 21-01-2009 @ 18:52   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Le problème ne serait-il pas lié à ceci ? :



http://es2.php.net/header
----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -
frednet
Vétéran
Membre # 3998

 Avatar du membre
Lieu : Lat: 49°20'24" Nord Long: 6°22'48" E

Messages :
2060 (0.36 par jour)




Message du 21-01-2009 @ 19:25   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

dans le site 2 a la page login.php peux tu faire un :
Code :


<?php
session_start();

echo '<pre>';
print_r($_SESSION);
echo '</pre>';
?>



est ce que session contient quelque chose ?
- Haut de page -
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 21-01-2009 @ 19:50   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

J'ai ajouté à mes virtualhost php_value session.save_path /var/www/phpsessions

Lorsque je me connecte sur le premier site un identifiant de session est créé sous phpsessions :

sess_85e3a41db848c9ac45d880fbdc88d45f

Lorsque j'appelle le site2 (header ...), un autre identifiant est créé :

sess_fb93a42b04412e914d80bdd7a6de2dcc --> celui-ci est vide

par contre sess_85e3a41db848c9ac45d880fbdc88d45f a été complété avec le contenu des variables login et pwd.

Sur site2 :

if (session_id() == "") session_start(); // si session non active
echo session_name();

---> me retourne PHPSESSID

Je vais tester :

Code :


<?php
session_start();
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
?>



entre temps, j'ai modifié la page d'appel par :

...
$url = "http://192.168.1..2/site2/Login.php".SID;
header("Location: $url");
...


[message édité le 21-01-2009 @ 19:51 Par zorgh]
----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 21-01-2009 @ 20:32   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Code :


<?php
session_start();
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
?>



me retourne :

Array
(
)


----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 21-01-2009 @ 21:09   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Je lis en bas de cette page :

http://doc.domainepublic.net/php/doc.php.court/session.idpassing.html

Les URL non-relatives sont considérées comme externes au site, et ne recevront pas le SID , car c'est une fuite d'information vers un autre site (envoi d'informations importantes).

C'est l'histoire du chien qui se mord la queue. Je suis donc coincé.

[message édité le 21-01-2009 @ 21:11 Par zorgh]
----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -
frednet
Vétéran
Membre # 3998

 Avatar du membre
Lieu : Lat: 49°20'24" Nord Long: 6°22'48" E

Messages :
2060 (0.36 par jour)




Message du 22-01-2009 @ 8:03   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

dans la fonction header("location:") j'enleverai la partie "http://192.168.1..2/"
- Haut de page -
Aller à la page n°  
  Mot  Pseudo  
Page : 1 2


Aller dans le forum :  

Plan du forum | Contacter l'administrateur

Powered by SoulBB 3.0.1
© Soulmanto, 2003-2010

Valid XHTML 1.0 Transitional

Page générée en 0.074 secondes