Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rozdzielczość ekranu
Forum PHP.pl > Forum > PHP
shpaque
Witam, mam taki wpis:

  1. <?
  2. $width = "<script>document.write(screen.width); </script>";
  3. if ($width < 1000)
  4. {
  5. header("Location: "."/mobile/index-mobile.php");
  6. }
  7. ?>


Dość prosty i chyba bez błędów, ale dziwne jest to, że nawte kiedy $width jest większe niż 1000 - przerzuca mnie na mobile...
pyro
Ahahahah, a to dobre thumbsupsmileyanim.gif

Nie widzisz róznicy pomiędzy PHP a JS?
shpaque
Oczywiście, że widzę różnicę - przecież poprzez skrypt pobiera mi zmienną o wartości szerokości ekranu... Tyle że dlaczego skoro pobiera mi zmienną i ZNA jej wartość - nie wykonuje IF'a prawidłowo?

wiem, jak w JS to brzmi - tak z ciekawości chciałem wiedzieć dlaczego php tego nie wykonuje...
pyro
Dam Ci podpowiedź:

To:

  1. $width = "<script>document.write(screen.width); </script>";
  2. if ($width < 1000) {
  3. // ....
  4. }


To dokładnie to samo co to:

  1. if ("<script>document.write(screen.width); </script>" < 1000) {
  2. // ....
  3. }
mstraczkowski
Dla php poniższe wyrażenie jest zwykłym przypisaniem stringa do zmiennej:

  1. $width = "<script>document.write(screen.width); </script>";

Jest to tyle warte co przykładowo:

  1. $width = 'ala ma kota';

Później porównujesz sobie:

  1. if ($width < 1000)

PHP rzutuje sobie string na int, podczas tego porównywania co daje mu w wyniku 0 < 1000
Więc zawsze wykona się przekierowanie

W taki sposób tego nie zrobisz, kod JS nie wykona się w PHP wink.gif
Nie otrzymasz w zmiennej rozdzielczości tylko zwyczajnie string("<script>document.write(screen.width); </script>");
Co możesz zobaczyć sprawdzając sobie:

  1. var_dump($width);


Jeżeli chcesz to zrobić w taki sposób możesz pobawić się ajaxem i wysłać pobraną przez javascript szerokość do skryptu PHP za pomocą metody POST / GET
PrinceOfPersia
Cytat
Nie widzisz róznicy pomiędzy PHP a JS?

Nie ma co się śmiać, bo to jeden z najczęstszych błędów tutaj, w pytaniach o komunikację PHP-JavaScript.

Ludzie nie rozumieją czym się różni przeglądarka od serwera, czym frontend od backendu, i piszą stronę jakby wszystko się wywowyłało w tym samym miejscu.
!*!
@shpaque - zainteresuj się @media w CSS, bo to tak wykonuje się detekcję rozdzielczości, a nie jakieś fiu bździu z index-mobile.
ssstrz
Można także dodać wpis do .htaccess
http://stackoverflow.com/questions/3680463...-using-htaccess
grywalny
ja sie nie znam NIC ale troche mu dziwnie tlumaczycie wedlug mnie. Najlatwiej to sobie wyobrazic w ten sposob ze PHP zawsze wykona sie pierwszy. Nawet jezeli to jest ostatnia linijka php na koncu strony to i tak wykona sie przed najwczesniejszym javascriptem. Javascript dopiero bedzie "pracowal" na wykonanym kodzie PHP.
!*!
@grywalny
PHP działa po stronie serwera.
JavaScript po stronie użytkownika.

Czego tu nie rozumiesz?
grywalny
Ja wszystko w tym rozumiem. Ale wiele ludzi nie rozumie do konca co to znaczy dlatego masz pytanie takie jak tu.
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.