Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rozdzielczość ekranu, ZAWSZE wykonuje! Dziwne...
shpaque
post
Post #1





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


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...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
pyro
post
Post #2





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


Ahahahah, a to dobre (IMG:style_emoticons/default/thumbsupsmileyanim.gif)

Nie widzisz róznicy pomiędzy PHP a JS?
Go to the top of the page
+Quote Post
shpaque
post
Post #3





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


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...
Go to the top of the page
+Quote Post
pyro
post
Post #4





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


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. }
Go to the top of the page
+Quote Post
mstraczkowski
post
Post #5





Grupa: Zarejestrowani
Postów: 273
Pomógł: 52
Dołączył: 3.02.2013
Skąd: Przemyśl

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


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 (IMG:style_emoticons/default/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

Ten post edytował mstraczkowski 1.05.2013, 12:18:05
Go to the top of the page
+Quote Post
PrinceOfPersia
post
Post #6





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

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


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.
Go to the top of the page
+Quote Post
!*!
post
Post #7





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


@shpaque - zainteresuj się @media w CSS, bo to tak wykonuje się detekcję rozdzielczości, a nie jakieś fiu bździu z index-mobile.
Go to the top of the page
+Quote Post
ssstrz
post
Post #8





Grupa: Zarejestrowani
Postów: 103
Pomógł: 17
Dołączył: 15.12.2012

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


Można także dodać wpis do .htaccess
http://stackoverflow.com/questions/3680463...-using-htaccess
Go to the top of the page
+Quote Post
grywalny
post
Post #9





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 20.07.2011

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


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.

Ten post edytował grywalny 3.05.2013, 22:44:49
Go to the top of the page
+Quote Post
!*!
post
Post #10





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


@grywalny
PHP działa po stronie serwera.
JavaScript po stronie użytkownika.

Czego tu nie rozumiesz?
Go to the top of the page
+Quote Post
grywalny
post
Post #11





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 20.07.2011

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


Ja wszystko w tym rozumiem. Ale wiele ludzi nie rozumie do konca co to znaczy dlatego masz pytanie takie jak tu.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 8.08.2026 - 19:09