Zmienne z JS w PHP

0

Mam taki kodzik

<APPLET CODE="MyAddress.class" NAME="script" MAYSCRIPT WIDTH=0 HEIGHT=0></APPLET>
<SCRIPT>
var addr = document.script.ip();
document.write(addr);
</SCRIPT>

Zmienna addr przechowuje adres ip, ale to nie jest wazne... pytanie jest jak przekazać wartość tej zmiennej do zmiennej php. Myślałem już nad róznymi sposobami. Najłatwiej byłoby przekazac przez adres url, ale to wiaze sie z przeladowaniem stronki, a chcialbym tego uniknac. Myslalem tez nad cookie ale to tez wymaga przeladowania, mozna by jeszcze zapisac to do pliku jakiegos a pozniej odczytac przez php ale za bardzo nie wiem jak to wykonac. Moze znacie jakas dobra i latwa metode?

0

najpierw na serwerze wykonuje sie skrypt PHP a dopiero później na kompie klienta JS więc nie da się przekazać zmiennej z JS na serwer bez przeładowania stronki

0

Nie wiem do czego ma to potem posłużyć, bo jeżeli jakiś skrypt PHP na podstawie tej zmiennej coś wykona i zwróci wynik o koniec to można to zrobić. Poczytaj sobie o technologii AJAX.

BTW: Ostatnio dzięki (między innymi) właśnie tej technologii JavaScript przeżywa renesans, więc warto się troszkę w nią zagłębić, zwłaszcza że nie jest ona trudna w zrozumieniu a i ma krótką reprezentację w kodzie.

Pospowiedź jak to działa i jak należy to wykonać:

  • JS pobiera adres IP
  • JS nawiązuje połączenie z plikiem PHP przekazując adres IP np. poprzez GET
  • PHP wykonuje operację korzystając z tej zmiennej i zwraca wynik
  • JS otrzymuje wynik działania skryptu PHP i na podstawie wyniku podejmuje dalsze decyzje o swoim działaniu

Ale wszystko zależy co chcesz zrobić, bo może się okazać że i AJAX nie pomoże, więc napisz dokładniej co chcesz zrobić.

0

...mozesz dynamicznie stworzyc elementy img lub script (przez funkcje DOM) i w tym momencie przegladarka wykona zapytanie zeby sciagnac zawartosc tych elemntow lub w bardziej zaawansowany sposob skorzystac z obiektu XMLHttpRequest...

0

Jak na razie w zadne AJAX'y nie zamierzam sie bawic... jesli sie nie da sie tego zrobic normalnie bez przeladowania to coz trzeba przeladowac :) Jeszcze jedno pytanko... Nie chcialbym przekazywac tego ip metoda GET, wolalbym zapisac to gdzie w pliku na serwerze, dla kazdego usera oddzielny plik... Moglby ktos rzucic jakims prostym kodem ktory zapisywalby do pliku?

0

w PHP:

$file = fopen("sciezka/plik", "w");
fwrite($file, $tresc);
fclose($file);

dodaj tylko sobie do tego jakas kontrole bledow

0

A czy ja mowie o PHP? :) mi chodzilo o JS, w php to ja smigam :P ale JS to czarna magia :)... (no prawie czarna magia :P)

0
jagi napisał(a)

A czy ja mowie o PHP? :) mi chodzilo o JS, w php to ja smigam :P ale JS to czarna magia :)... (no prawie czarna magia :P)

napisalem w PHP bo przy pomocy JS nie da rady zapisac plik na serwer...
JS uruchamia sie i wykonuje po stronie klienta (Client side)...
jedyne co mozesz zrobic to wywolac w JS jakis skrypt PHP ale wtedy mamy przeladowanie stronki...

0
ssnake napisał(a)
jagi napisał(a)

A czy ja mowie o PHP? :) mi chodzilo o JS, w php to ja smigam :P ale JS to czarna magia :)... (no prawie czarna magia :P)

napisalem w PHP bo przy pomocy JS nie da rady zapisac plik na serwer...
JS uruchamia sie i wykonuje po stronie klienta (Client side)...
jedyne co mozesz zrobic to wywolac w JS jakis skrypt PHP ale wtedy mamy przeladowanie stronki...

//Kawałek tekstu usunięty - wygłupiłem się, przepraszam ;P

Tak jak pisałem: AJAX na obiekcie XMLHttpRequest lub tak jak pisał kolega piechnat - dynamiczne stworzenie jakiegoś elementu (opierając się na Document Object Model), choć moim zdaniem AJAX daje większe możliwości i jego implementacja jest bardziej intuicyjna niż tworzenie elementów bazując na DOM.

0
jagi napisał(a)

Jak na razie w zadne AJAX'y nie zamierzam sie bawic... jesli sie nie da sie tego zrobic normalnie bez przeladowania to coz trzeba przeladowac :) Jeszcze jedno pytanko... Nie chcialbym przekazywac tego ip metoda GET, wolalbym zapisac to gdzie w pliku na serwerze, dla kazdego usera oddzielny plik... Moglby ktos rzucic jakims prostym kodem ktory zapisywalby do pliku?

dobra prgtw możesz mi powiedzieć o co chodzi w wyboldowanym zdaniu, bo ja myślałem, że o zapis pliku na serwerze no ale widze, że się myliłem... :-/

0

ssnake mial racje, że chodziło mi o zapis pliku na serwer :) Myślałem, że jest to możliwe z poziomu JS. No cóż w takim razie pozostaje mi tylko przeslac metoda GET lub POST, bo AJAX odpada. Dzieki za pomoc :)

0

a dlaczego musisz przekazać to przez JS, nie możesz zrobić tego w PHP ?

0

Wiesz moglbym to zrobic w PHP, a nawet jest tak zrobione. Tyle ze stronka, ktora zrobilem to stronka wewnatrz sieciowa czyli nie moge wykorzystac $_SERVER['REMOTE_ADDR'], a zmienna $_SERVER['HTTP_X_FORWARDED_FOR'] też nie zawsze zwraca ip, gdyz trzeba miec ustawiony serwer proxy, aby zawierala ona ip. Tak wiec pozostaje tylko skrypt JS.

1 użytkowników online, w tym zalogowanych: 0, gości: 1