Zmagania Suchego | Sposoby porozumiewania się JS oraz PHP
Copyright suchy dawidpanfil@gmail.com
http://free.xaa.pl/sposoby-porozumiewania-sie-js-oraz-php
Sposoby porozumiewania się JS oraz PHP
Częstą łamigłówka osób znających PHP oraz powierzchownie JS (czyli takich jak ja,
choć co do drugiego to nadrabiam, aby w końcu zabrać się za AJAX) jest
przekazanie wartości z jednego języka do drugiego.
Najpierw omówię przekazanie wartości z JS do PHP. Często widuje pytania
początkujących coderów co zrobić aby zmienne z JS były widziane w PHP.
Odpowiedz na forach jest zazwyczaj podobna czyli: "nie da się", tylko niektórzy
chociaż powierzchownie opiszą te sposoby co ja.
Pierwszy sposób, czyli ciasteczka. JavaScript i PHP korzystają właśnie wspólnie
między innymi z ciasteczek.. Uczyłem się JS bardzo dawno temu i nie wiem czy coś
się zmieniło w tworzeniu ciasteczek, ale przedstawię kod, który na pewno działa
(choć możliwe, że został zdeprecjonowany).
Zanim go wam pokażę, jeszcze parę słów o ciasteczkach. Cookie mają bardzo wiele
ograniczeń i nie są one bezpiecznie. Nie należy w nich trzymać ważnych i poufnych
danych. Oprócz tego muszą one być wysłane jako pierwsze (przynajmniej w PHP)
oprócz tego są one widziane dopiero przy ponownym przeładowaniu strony.
Minusem skorzystania z tej opcji jest to, że użytkownik może mieć wyłączone
przyjmowanie cookie. No i tyle z mojej strony o ograniczeniach ciasteczek.
W JavaScript cookie ma takową budowę:
Set-Cookie: nazwa-parametru = wartość; expires= data;
Są jeszcze inne pola, ale nie są one akurat nam potrzebne. Nazwa-parametru jest
synonimem zmiennej. Za pomocą właśnie tej nazwy będziemy się odwoływać do
informacji w cookie, expires natomiast jest odpowiedzialny za ważność ciasteczka.
Podaje się tam datę w formacie GMT np.: "Thu, 10 Jul 2010 15:25:30 GMT". Do
wygenerowania takiej daty może posłużyć funkcja ( a raczej obiekt jeśli mowa o JS)
Date.
W javascript utworzenie cookie wygląda następująco:
[sourcecode lang="javascript"]document.cookie = "tresc ="
+tresc+"; expires="+data+";";[/sourcecode]
Dla przypomnienia powiem, że w php wykorzystanie takowego ciasteczka
wyglądałoby tak:
$_COOKIE['tresc']
Drugi sposób –formularze. Tutaj sprawa może się lekko komplikować ponieważ,
page 1 / 2
Zmagania Suchego | Sposoby porozumiewania się JS oraz PHP
Copyright suchy dawidpanfil@gmail.com
http://free.xaa.pl/sposoby-porozumiewania-sie-js-oraz-php
formularz nie zawsze jest potrzebny, ale wtedy należy wykorzystać w linkach
dodatkowe parametry (no o GET mi chodzi:) ). Stworzenie takich zmiennych też się
może troszkę skomplikować, ale pomoże nam z tym mała funkcja napisana w JS:
[sourcecode lang="javascript"]function przekaz(nazwa, wartosc, gdzie){
document.getElementById(gdzie).innerHTML += '<input
type="hidden" name="'+nazwa+'"
value="'+wartosc+'" />';
}[/sourcecode]
oraz wywołanie funkcji to po pierwsze wstawienie przed przyciskiem do wysłania
jakiegoś diva. Oraz w jakimkolwiek miejscu wywołanie funkcji czyli:
[sourcecode lang="javascript"]przekaz('IP', document.hostname,
'przekaz_informacje');.[/sourcecode]
Teraz troszeczkę inna bajka, a mianowicie przekazywanie informacji z PHP do JS.
Tutaj widzę 3 sposoby. Pierwszy to cookie, który już opisałem. W tym miejscu
dodam, że odwołanie się do cookie w JS jest trudniejsze niż w PHP, aby ułatwić
korzystanie z tego podam gotową funkcję:
[sourcecode lang="javascript"]function getCookie(searchString){
var c= document.cookie;
point=c.indexof(searchString);
if(point != -1{
endAt=c.indexof(";", point +searchString.lenght);
if(endAt == -1) endAt= c.lenght;
var temp = c.substring('point + searchString.lenght, endAt);
return temp;
}[/sourcecode]
Co do jej wywołania w miejscu, w którym byśmy napisali (w PHP)
$_COOKIE['nazwa'] piszemy:
[sourcecode lang="javascript"]var
cos=getCookie('nazwa_zmiennej=');[/sourcecode]
Bardzo ważny jest znak = ponieważ inaczej trafi on do wartości zmiennej i będą
podane mylne dane.
Następnie opisałem w JS wysyłanie danych przez formularz. No to teraz odczyt ich
wygląda następująco:
[sourcecode lang="javascript"]var nazwa = document.[atrybut name
formularza].[name pola].value;[/sourcecode]
I ostatni sposób, chyba najbardziej prymitywny jaki może być to wykorzystanie
funkcji echo w PHP:[php]
echo '<script type="text/javascript">
var '. Nazwa_zmiennej .'= "'.wartosc_wartosc'";
</script>'; [/php]
To tyle na dzisiaj, sposoby te są bardzo ograniczone funkcjonalnie, ale do drobnych
rzeczy sądzę że wystarczy. Jak wygląda wymiana zmiennych w AJAX to jeszcze nie
wiem, ale mam małą nadzieję, że o wiele łatwiej to wszystko będzie można zrobić.
Co do mojej notki, pojawiła się ona tak późno bo mi Internet padł :)
page 2 / 2