Passage d'infos de JS vers PHP

Pour toutes les discussions javascript, jQuery et autres frameworks
Répondre
richaz
Messages : 12
Enregistré le : 30 nov. 2020, 14:30

Passage d'infos de JS vers PHP

Message par richaz » 07 déc. 2020, 10:01

Bonjour,
J'ai utilisé votre module de géolocalisation.
Il fonctionne parfaitement.
Je voulais récupéré la latitude / longitude coté PHP.
Pour un autre programme, je l'avais passé par un cookie, mais j'ai l'impression que cela n'est pas très orthodoxe.
Je ne veux pas non plus le passer par GET ou POST.
Y a t'il une autre méthode ?
Merci de votre aide.

Avatar du membre
webmaster
Administrateur du site
Messages : 563
Enregistré le : 28 févr. 2017, 15:19

Re: Passage d'infos de JS vers PHP

Message par webmaster » 07 déc. 2020, 10:40

Bonjour,

Le passage par cookie est déconseillé car les cookies peuvent être désactivé par l'utilisateur.

La meilleure solution est d'utiliser GET ou POST, idéalement avec un appel AJAX de manière transparente pour l'utilisateur. En quoi c'est gênant pour vous ?
TJS : 25 ans et mon livre Tout JavaScript chez Dunod
https://www.toutjavascript.com/livre/index.php

richaz
Messages : 12
Enregistré le : 30 nov. 2020, 14:30

Re: Passage d'infos de JS vers PHP

Message par richaz » 07 déc. 2020, 12:50

Merci pour votre réponse.
J'avais un a priori pour POST ou GET.
Je vais donc travailler sur cela.
Richaz

richaz
Messages : 12
Enregistré le : 30 nov. 2020, 14:30

Re: Passage d'infos de JS vers PHP

Message par richaz » 09 déc. 2020, 14:53

Bonjour,
J'essaie d'avancer dans le passage de parametres avec GET comme vous m'avez conseillé.
Dans la fonction géolocalisation j'ai ajouté les variables res latitude et reslongitude comme indiquées ci dessous :

// *** TEST GEOLOCALISATION *********************************
function getMyPosition() {
navigator.geolocation.getCurrentPosition(function(position) {
console.log("Position trouvée : Latitude="+position.coords.latitude+" Longitude="+position.coords.longitude);
console.log(position.coords);
var reslatitude = position.coords.latitude;
var reslongitude = position.coords.longitude;
}, function(error) {
console.log("Erreur de géoloc N°"+error.code+" : "+error.message);
console.log(error);
}, {
timeout: 2000,
maximumAge: 60000
});
return reslatitude, reslongitude;
}

Dans mon instruction FORM, j'essaie de les passer en GET :
<form name="form_envoi_mail" onsubmit="return getMyPosition(this)" action="clt_env_mail_SOS3.php?lat=<script type='text/javascript'>document.getElementByName('reslatitude').innerHTML+&long=+document.getElementByName('reslongitude').innerHTML</script>" method="get">

A priori, je ne récupere pas mes 2 variables.
Qu'en pensez vous ?
Salutations
RICHAZ

richaz
Messages : 12
Enregistré le : 30 nov. 2020, 14:30

Re: Passage d'infos de JS vers PHP

Message par richaz » 09 déc. 2020, 14:59

Petite correction, je pense :
<form name="form_envoi_mail" onsubmit="return getMyPosition(this)" action="clt_env_mail_SOS3.php?lat=<script type='text/javascript'>document.getElementByName('reslatitude').innerHTML+'&long='+document.getElementByName('reslongitude').innerHTML</script>" method="get">

Il me retourne comme parametres, les autres zones du formulaire.
Je ne comprends pas.

richaz
Messages : 12
Enregistré le : 30 nov. 2020, 14:30

Re: Passage d'infos de JS vers PHP

Message par richaz » 11 déc. 2020, 14:29

Bonjour,
HELP : JE SUIS BLOQUE PAR UN PETIT PB.
J'ai simplifié au maximum, mon exemple.
Quelqu'un peut me dire par quoi remplacer les paramètres xxx et yyy de mon instruction FORM, pour que je puisse récuperer la latitude et longitude dans ma partie PHP.
J'essaie de les passer en parametres GET.
Voici mon code :
---------------------------------------
<?php
session_start();
$zlat=$_GET['lat'];
$zlong=$_GET['long'];
?>
<!DOCTYPE html>
<html>
<head>
<title>Gélocalisation de l'utilisateur</title>
<script type="text/javascript">
function getMyPosition() {
navigator.geolocation.getCurrentPosition(function(position) {
console.log("Position trouvée : Latitude="+position.coords.latitude+" Longitude="+position.coords.longitude);
console.log(position.coords);

document.getElementById("latid").innerHTML=position.coords.latitude;
document.getElementById("longid").innerHTML=position.coords.longitude;

}, function(error) {
console.log("Erreur de géoloc N°"+error.code+" : "+error.message);
console.log(error);
}, {
timeout: 2000,
maximumAge: 60000
});
}

</script>
</head>
<body>

<form onsubmit="getMyPosition()" action="test_geolocal.php?lat=xxxxx&long=yyyy" method="post">
<input type="text" name="latname" id="latid">
<input type="text" name="longname" id="longid">
<button type="submit">test</button>
</form>
</body>
</html>

Répondre