Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przekazanie zmiennej php do pliku js
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
zdebol
Witam.
Mam coś takiego
plik.php
Kod
<?php
session_start();
?>
<script type="text/javascript">
var sessID = '<?=session_id();?>';  
</script>
<script type="text/javascript" src="plik.js"></script>


plik.js
Kod
alert(sessID);


i działa plik.js ma dostęp do identyfikatora sesji, który mogę przekazać gdzieś dalej ajaxem nie istotne, chodzi o to że jeżeli zrobię to w ten sposób to każdy może sobie dać pokaż źródło strony i ma dostęp do zmiennej sessID a tego nie chce, pytanie jak inaczej można to rozwiązać?Chciałem instrukcje
Kod
var sessID = '<?=session_id();?>';
przenieść do plik.js ale wtedy zamiast identyfikatora sesji mam string '<?=session_id();?>'

nospor
Cytat
, chodzi o to że jeżeli zrobię to w ten sposób to każdy może sobie dać pokaż źródło strony i ma dostęp do zmiennej sessID
To straszne... przeciez to jego sesja to chyba moze znac jej identyfikator smile.gif

Zwracaj ten plik js poprzez plik php, wowczas bedziesz mogl wygenerowac ten plik js z sesją. Ale nadal bedzie mozna to odczytac. Za bardzo kombinujesz kolego winksmiley.jpg
zdebol
Może nie potrzebnie dałem przykład z sesją i kolega się na tej zmiennej skupił więc spróbujmy po kolei tak mam plik.php
Kod
<?php
//coś tam się dzieje nie istotne
?>
<script type="text/javascript">
var important = "zmienna";
alert(important);
</script>
jeżeli dam pokaż źródło strony to dostane
Kod
<script type="text/javascript">
var important = "zmienna";
alert(important);
</script>
, ale może nie chce żeby każdy kto wejdzie na stronę widział jak nazwałem sobie zmienną co tam jeszcze robiłem z nią itp chodzi o to żeby użytkownik dostał tylko alerta, więc prosta sprawa robię tak:
Kod
<?php
//coś tam się dzieje nie istotne
?>
<script type="text/javascript" src="java.js"></script>

java.js:
Kod
var important = "zmienna";
alert(important);
i ktoś dostaje takiego samego alerta ale dając podgląd strony dostanie jedynie
Kod
<script type="text/javascript" src="java.js"></script>
już nie wie jak się nazywała zmienna i w jaki sposób ją uzyskałem okay.
Teraz przejdę do sedna sprawy
Kod
<?php
$str = 'zmienna';
?>
<script type="text/javascript">
var important = '<?=$str;?>';
alert(important);
</script>
otrzymam to co na początku czyli, że ktoś widzi jak nazywałem zmienna itd więc chciałbym zrobić tak jak przedtem,
Kod
<?php
$str = 'zmienna';
?>
<script type="text/javascript" src="java.js"></script>

java.js:
Kod
var important = '<?=$str;?>';
alert(important);

Niestety tak nie mogę zrobić bo w rezultacie alert wykrzyczy <?=$str;?>, noi moje pytanie w jaki sposób odwołać się do tej zmiennej by efekt był taki jak poprzednio, ale ktoś zaglądając do źródła nie widział nic oprócz tego, że dołączam plik.
Mam nadzieję, że jasno się wyraziłem smile.gif

kamil4u
Musisz włączyć obsługę interpretacji PHP w plikach *.js(pliki konfiguracyjne PHP, bodajże php.ini) i jeszcze przekazać zmienną PHP jakoś do tego pliku js. Możesz to zrobić albo za pomocą sesji, albo przekazując ją za pomocą zmiennej supereglobalnej GET np. <script type="text/javascript" src="java.js?zmiennaGET=tu_kod_z_php_echo"></script>

--edit--
Możesz też zrobić coś takiego
Kod
<script>
var zmienaGlobalnaJs = '<?php echo($zmienna); ?>';
</script>
<script type="text/javascript" src="java.js"></script>

W tym wypadku w pliku java.js(swoją drogą nie myl javy z JavaScript) masz do dyspozycji zmienną globalną zmienaGlobalnaJs.

W sumie to możesz jeszcze wykorzystać ciasteczka.
#luq
@zdebol musisz zrozumieć, że w ogóle to co zakładasz z ukrywaniem treści plików *.js jest bezsensowne.

Cytat
Kod
<script type="text/javascript" src="java.js"></script>

i myślisz, że nic nie widać?
A co jak wpiszesz adres: www.example.com/java.js ? ;>

Można też zrobić taki myk, że wpisując adres www.example.com/java.js, nie widać źródła.
1. Edytujesz plik httpd.conf, dodając do AddType " .js"
2. index.html
Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script type="text/javascript" src="./file.js"></script>
</head>
<body>
    
</body>
</html>

3. file.js
  1. <?php
  2. if( $_SERVER[ 'HTTP_REFERER' ] ){
  3. echo 'alert(123)';
  4. }
  5. ?>

Ale to na nic, bo wchodząc na index.html plik file.js jest pobrany z serwera, zawiera źródło i przeglądarka go dostała w nagłówku zwrotnym na pytanie o właśnie ten plik...
Wchodząc w Firebug`a w zakładkę Skrypty, wybierając file.js zobaczysz jaki plik .js został wygenerowany.

Tego nie da się ominąć bo zawsze do przeglądarki musi trafić nagłowek z danymi, co zawierał ten plik, jeśli trafią to są one do zobaczenia. Amen.
zdebol
Faktycznie trochę się zamotałem z tym ukrywaniem .js, każdy skrypt tak jak kolega wyżej napisał można sobie firebugiem oglądnąć, swoją drogą korzystam z niego chyba biometr nie korzystny winksmiley.jpg.
A wracając jeszcze po części do tematu to można to zrobić tak jak kolega kamil4u napisał, włączyć by pliki z rozszerzeniem .js były parsowane jako php(ale to nie w pliku php.ini ). Można to zrobić na kilka sposobów, dla zainteresowanych
- albo jeżeli ma się dostęp do pliku konfiguracyjnego apacha httpd.conf dołożyć linijkę AddType application/x-httpd-php .js
- albo tą samą linijkę wrzucić do .htaccess

Mam jeszcze jedno pytanie ten manewr z dorzuceniem do .htaccess linijki kodu działa mi na localhoscie, działa również na hostingu nazwa.pl, ale nie wiem czemu na hostingu cba.pl nie, myślałem, że może nie dają możliwości korzystania z .htaccess ale dają i działa. Czy ktoś wie czym to może być spowodowane?
kamil4u
Cytat
Mam jeszcze jedno pytanie ten manewr z dorzuceniem do .htaccess linijki kodu działa mi na localhoscie, działa również na hostingu nazwa.pl, ale nie wiem czemu na hostingu cba.pl nie, myślałem, że może nie dają możliwości korzystania z .htaccess ale dają i działa. Czy ktoś wie czym to może być spowodowane?

Domyślam się, że to błąd...

Najlepiej zadzwoń/napisz do nich i zapytaj się jak sprawa wygląda, bo nie możesz sobie poradzić...

--EDIT--
Cytat
ale to nie w pliku php.ini

Nigdy nie miałem tej przyjemności, żeby dłużej pobawić się w konfigurację, stąd ten błąd smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.