[JS][PHP] kontrola treści przez javascripta

0

Witam,
Mój problem polega na tym, że wprowadzając ajax'a do mojej strony mam problem z rozdzieleniem sytuacji gdy JS jest włączony u klienta i gdy jest wyłączony. Z tego co wiem można to sprawdzić tylko po stronie klienta po prostu wywołując jakiś skrypt który albo się uruchomi (js enabled) albo zostanie zignorowany. Czy da się jakoś sprawdzić po stronie serwera czy js jest włączony? szukałem w zmiennych globalnych php ale chyba nie ma takiej informacji tam ..
Czy taki (to jest schemat) kod może zadziałać? - chodzi o to że gdy js jest włączony to to co wygeneruje php nie zostanie wyświetlone, a jeżeli jest wyłączony to zostanie.

<script type="text/javascript">
   if(1==2) // absurd
   {
</script>
<?php
   echo 'JS jest wyłączony skoro to widzisz';
?>
<script type="text/javascript">
   }
</script>


Ma ktoś jakiś pomysł na to inny? Bo ten mój nie działa jak powinien :/

0

http://pl2.php.net/get_browser

Tyle tylko że trzeba konfiguracje serwera zmienic :/ .

Jesli natomiast masz dostep, to podsylam ci browscapa dla php
http://odsiebie.com/pokaz/427201---4590.html

0

A Twoj sposob nie dziala, bo kolejnosc wykonywania dzialan to serwer -> klient, czyli php -> js, nigdy na odwrot.

Mozesz zrobic tak, ze na dzien dobry wyswietlasz strone bez js, na koncu dokladasz skrypt js, ktory dodaje, np. cookie ze js istnieje. Po ponownym przeladowaniu juz php wie, ze js dziala. JS moze tez uzyc AJAX'a, zeby wywolac odpowiedni skrypt php, ktory zapisze informacje do sesji (bo ciastka moga byc wylaczone).

0

Może gdy przedstawie sprawę z innej strony będą jakieś inne pomysły bo dostepu do serwera nie mam takiego niestety.
Chodzi o to przede wszystkim, że żeby podpiąć ajax'a musiałem przechwytywanie treści (GET'owski stuff) przenieść do odmiennego pliku bo gdy ajax uruchamial 'index.php?p=1' to strona ladowala się sama w sobie 2 raz. wiec teraz linki wyglądają 'load.php?p=2' więc po kliknięciu czegoś 'load.php' obsługuje wszystko a tam z kolei: jezeli js jest włączony to powinna się tylko treść pojawić która będzie wczytana do strony, a jak jest wyłączony js to powinno się wszystko pojawić to co w index'ie plus jeszcze treść.

macie jakiś pomysł jak można by w normalnej sytuacji, gdy js jest wyłączony, wczytywać w odpowiednie miejsce dane z 'load.php' ?

0

Nie rozumiem nic z tego co napisales.

Zrob tak: przechowuj w zmiennej sesyjnej informacje czy jest js. Jezeli strona uruchamia sie pierwszy raz to dopisz do strony AJAX'owe wywolanie skrypta, ktory ustawi zmienna sesyjna.

A zawsze robisz tak (bez znaczenia czy pierwszy raz czy nie):
Jezeli zmienna sesyjna jest ustawiona (wiesz to juz w php) to wyswietlasz strone z js. Jezeli nie, to strone przygotowana dla klienta bez js.

0
johny_bravo napisał(a)

Zrob tak: przechowuj w zmiennej sesyjnej informacje czy jest js. Jezeli strona uruchamia sie pierwszy raz to dopisz do strony AJAX'owe wywolanie skrypta, ktory ustawi zmienna sesyjna.

A zawsze robisz tak (bez znaczenia czy pierwszy raz czy nie):
Jezeli zmienna sesyjna jest ustawiona (wiesz to juz w php) to wyswietlasz strone z js. Jezeli nie, to strone przygotowana dla klienta bez js.

Więc z tego co rozumiem pierwsze wywołanie strony będzie zawsze normalne, nie z js'em tak?
Zależy mi na tym, żeby strona tak samo się zachowywała za każdym razem ..
Jeszcze coś: czy zadziała to tak, że przy pierwszym wywołaniu tworze info w sesji ajax'em i od razu wygeneruje się ta strona dla javascriptu czy stanie się to dopiero (czego nie chcę) po przeładowaniu?

0

Dopiero po przeładowaniu, chyba, że ustawisz dla sesji odległy expire, to wtedy ktoś kto wróci następnego dnia dostanie od razu stronę w ajaxie (chyba, ze usunie cookies sesji).

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