Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przekazanie zmiennej php do pliku js
zdebol
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 28.04.2010

Ostrzeżenie: (0%)
-----


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();?>'

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
zdebol
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 28.04.2010

Ostrzeżenie: (0%)
-----


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

Go to the top of the page
+Quote Post
kamil4u
post
Post #4





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


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.

Ten post edytował kamil4u 6.05.2010, 16:34:07


--------------------
Go to the top of the page
+Quote Post
#luq
post
Post #5





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


@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.


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
zdebol
post
Post #6





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 28.04.2010

Ostrzeżenie: (0%)
-----


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?

Ten post edytował zdebol 6.05.2010, 22:02:16
Go to the top of the page
+Quote Post
kamil4u
post
Post #7





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


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

Ten post edytował kamil4u 7.05.2010, 11:44:59


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 10:16