[PHP, Javascript] Variable et return ...

Fermé
azerty1 - 24 févr. 2010 à 12:07
 azerty1 - 24 févr. 2010 à 20:03
Bonjour,

j'ai une page HTML qui appelle un script php pour récupérer une variable javascript :

<script type="text/javascript" src="/javascript/lesvariables.php"></script>

dans lesvariables.php, on trouve :

$variables = "var test = [1,2,3];";
print $variables;

Et je peux ainsi utiliser la variable "test" dans un autre script javascript. Tout cela fonctionne à merveille.

Le problème c'est que $variables contient en réalité des infos que je ne souhaite pas divulger, et qui proviennent d'une base SQL. Mais le fait de faire le "print $variables;" rends visible ces données (pas directement dans mon document HTML de départ, mais dans la source (rappel : src="/javascript/lesvariables.php"), qui elle est visible.

J'ai essayer de passer par un "return $variables", mais je ne sais même pas si ça pourrait marcher et si oui, je dois m'y prendre mal (une histoire de variable global ou local il me semble ... c'est sombre pour moi)

Merci à ceux qui pourrait m'éclairer, je rappelle que le but est de ne pas divulguer les informations contenues dans $variables (qui viennent d'une table SQL, mais que je suis obligé d'utilisé dans du javascript).

Merci
A voir également:

7 réponses

nico7382 Messages postés 279 Date d'inscription lundi 6 juin 2005 Statut Membre Dernière intervention 22 décembre 2010 50
24 févr. 2010 à 12:35
Salut,

en faite le soucis c'est quand l'user regarde la source de ton fichier "lesvariables.php"

Ne cesserai-t-il pas plus simple de couper l'exécution de la page si elle n'est pas exécuté par ton serveur?

exemple : (je sais pas si mon exemple est bon, mais voilà.. j'ai faim ^^)
En début de fichier lesvariables.php

un code du style :

if (!regexp( 'filtre pour cibler ton site',$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']) ) { //je connais pas la syntaxe de regexp
header("/index.php");
exit;
}
0
merci pour ta réponse

mais je pense que le problème sera toujours le même car quelqu'un qui ira dans mon code source de la page HTML verra le lien vers "/javascript/lesvariables.php" et tapera dans sa barre de code : http://monsite.com/javascript/lesvariables.php et comme cela viendra de monsite.com, le print se fera ...

sauf si j'ai mal compris ta suggestion

(d'ailleurs, regexp n'existe pas ... y'a ereg qui existe, mais je sais pas si c'est ce que tu voulais dire, et qu'entends-tu par 'filtre pour cibler ton site' ?)

merci en tout cas ;)
0
nico7382 Messages postés 279 Date d'inscription lundi 6 juin 2005 Statut Membre Dernière intervention 22 décembre 2010 50
24 févr. 2010 à 12:59
si l'expression régulière est suffisamment précise, tu peux dire :


si l'url de la page actuelle n'est pas "http://monsite.com/javascript/lesvariables.php" mais "http://monsite.com/page_qui_appel_lesvariables.php"
alors je lis la page.
sinon je cache les sources
0
je teste, je teste ....

merci
0
Bon, ca ne marche toujours pas

voilà où j'en suis : dans lesvariables.php :

if($_SERVER{'SERVER_NAME'}.$_SERVER{'PHP_SELF'}=="www.monsite.com/la_page_appelante.php"){
print $variables;
}
else{
$test = $_SERVER{'SERVER_NAME'}.$_SERVER{'PHP_SELF'};
print 'var test = "'.$test.'" ;';
}

et avec un alert(test) dans mon javascript qui me met : www.monsite.com/javascript/lesvariables.php

j'ai du mal comprendre ce que tu voulais faire, parce qu'en fait, le 'PHP_SELF' prend la page du php où est placé $variables et non la page HTML où est le script (la page appelante)

bref, je suis perdu ...
0
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 260
24 févr. 2010 à 18:39
Salut,
il y a 2 possibilité :
- soit tu as besoin du contenu des variables que tu souhaites cacher dans un javascript (donc coté client)
- soit tu n'as besoin de ces variables que dans php (coté serveur)

Si tu transmets des données au client alors l'utilisateur y aura FORCEMENT accès (au pire en étudiant les réponses aux requêtes du navigateur). Il est donc totalement inutile de vouloir les cacher.
0
Merci de ta réponse,

la variable php devient une variable javascript par un print (ou echo) de celle-ci dans le fichier php.

La variable javascript, j'en ai donc forcement besoin. J'ai bien compris que javascript s'affichait coté client, mais par exemple, y'a un moyen de cacher ces variables javascript au moyen d'un <script type="text/javascript" src="/javascript/mesvariables.php"></script> dans la page HTML (ainsi, le visiteur qui regarde le source ne voit pas les variables directement, mais il peut les voir en allant dans /javascript/mesvariables.php, puisque ce fichier contient un print.

Bref, le moyen que j'explorais avec Nico semblait le bon, simplement, je n'arrive pas a l'implémenter dans le fichier mesvariables.php:

si la page appelante est le document HTML : alors on fait le print
sinon : on ne le fait pas

ca a l'air simple, mais ca ne l'est pas .... y'a forcement une solution ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 260
24 févr. 2010 à 19:04
Le script sera chargé dans le cache du navigateur donc lisible par l'utilisateur (essaye firebug, onglet script tu verras...).

Tes données doivent rester sur le serveur, débrouilles toi pour modifier le javascript et faire faire la partie qui a besoin des variables cachées par PHP.
0
nico7382 Messages postés 279 Date d'inscription lundi 6 juin 2005 Statut Membre Dernière intervention 22 décembre 2010 50
24 févr. 2010 à 19:33
excuse moi pour t'avoir induit en erreur plus haut sur ca : $_SERVER{'SERVER_NAME'}.$_SERVER{'PHP_SELF'}

se que je voulais, c'est l'url de la page appelé, j'ai fait vite, en tapant sous google, et j'ai trouvé ca qui semblait correspondre :
c'est ca : $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']

par contre, flachy a raison, le script est chargé et donc souvent visible par les outils des développeurs, qui permette le debuggage d'application.
0
merci Nico, c'est bien ce que je cherchais mais en fait je l'ai trouvé dans l'intervalle, mais avec la variable $_SERVER{'HTTP_REFERER'}

d'ailleurs, le test :

if($_SERVER{'HTTP_REFERER'}=="http://www.monsite.com/page_appelante.php"){
print $esvariables;
}
else{
$test = $_SERVER{'HTTP_REFERER'};
print 'var test = "'.$test.'" ;';
}

fonctionne sous safari, mais pas sous firefox !!!!!!!!!!!

une idée ??

en revanche, effectivement, flachy, mes variables sont biens visibles, mais dans l'onglets "DOM" .... :(

le problème est que je suis obligé de faire passer mes variables dans le javascript puisqu'en réalité, ce sont des points GPS que je rentre dans une base SQL et que je suis obligé d'appeler par javascript pour les afficher dans googlemap .... si vous avez une idée pour que je puisse faire ca coté serveur et afficher au client juste la carte avec les points, mais sans pouvoir les voir avec firebug ...

merci encore, je progresse
0
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 260
24 févr. 2010 à 19:56
Quel est l'intérêt de cacher les coordonnées ? A partir de la carte google l'utilisateur pourra les obtenir non ?
0
oui c'est sur, il pourra les obtenir, mais en se faisant beaucoup plus "chier" qu'en prenant simplement le tableau des points que JE me suis fait "chier" à faire ...

L'objectif est que la copie soit fastidieuse pour celui qui veut copier ...

Je crains que de le faire coté serveur semble compromis, je vais devoir me résoudre à laisser à la portée de tous mon travail, non pas que je sois contre, mais avec un minimum de délicatesse, me demander l'autorisation :D ...
0