PDA

Zobacz pełną wersję : Potrzebna pomoc z PHP, HTML lub czymś innym:)



kh29228
21-08-2011, 14:15
Witam,
czy możliwe jest zrobienie skryptu, który w zależności czy strona jest otwierana na komputerze czy na smartfonie będzie otwierała się inna podstrona. Chodzi o to, żeby ułatwić przeglądanie danej strony na smartfonie, dla którego przygotowana byłaby specjalna galeria, optymalizowana pod kątem przeglądania właśnie na telefonie.
Pozdrawiam

Krzysiek

Boryszuk
21-08-2011, 14:56
Dac sie pewnie da, wiele stron jest tak zrobiona. Ale jak to juz nie wiem. Strona musialaby chyba wysylac zapytanie do przegladarki. Wnioskuje po tym, ze np. Dolphin browser (inne tez) maja mozliwosc przelaczania pomiedzy wersja mobilna a stacjonarna, co wiecej jest tez opcja iPhone (nie wiem czym sie rozni)

dusoft
21-08-2011, 15:10
Każda przeglądarka się przedstawia:
https://secure.wikimedia.org/wikipedia/pl/wiki/User_agent

kh29228
21-08-2011, 16:09
kurcze, tak to jest jak nie-informatyk zabiera się za robienie strony internetowej:) nie wiele kumam z powyższego linka:( czy mógłbyś w dwóch słowach napisać co i jak trzeba zrobić? z góry wielkie dzięki:)

2pompony
21-08-2011, 17:38
NA chłopski rozum trzeba zrobić tak - oczywiście za pomocą jakiegoś skryptu, czy to na serwerze, czy wprost na stronie (w javascripcie), choć to będzie pewnie troszkę dłużej trwało.

1. skrypt wykrywa agenta (brzmi szpiegowsko, ale wykrywanie tylko user-agenta, czyli jaki program chce obejrzeć stronę, przy okazji wykrywa też OS)
2. w skrypcie będzie seria pytań i warunków, ale efekt tego będzie następujący: serwer będzie wiedział, jaki program na jakim OSie pyta o stronę
3. musisz (jako autor) zrobić szereg stron: osobno dla pecetów, osobno dla smartfonów, pewnie jakąś inną dla i-pada, itd
4. serwer, jak będzie wiedzieć co się pyta o stronę (co, tzn. jaki system i jaka przeglądarka) wysyła odpowiednią stronę.

Brzmi skomplikowanie, ale jest w sumie dość proste. Trzeba tylko albo umieć napisać skrypty w javascripcie, albo odpowiednio w jakimś PH oprogramować serwer.

dusoft
21-08-2011, 17:50
Żeby to miało sens to wszystko musi sie odbywać po stronie serwera.
Najprościej to w zależności od UA podmieniać plik CSS.
Jak wszystko dobrze zaplanujesz, to wystarczy stworzyć minimum dwa pliki CSS - styl dla "normalnej" przeglądarki, i drugi dla mobilnej.

A jak wykryć przeglądarkę masz opisane w manualu PHP:
http://php.net/manual/en/function.get-browser.php

2pompony
21-08-2011, 17:59
Żeby to miało sens to wszystko musi sie odbywać po stronie serwera.


Tak by było najprościej i najbardziej elegancko. Ale w antycznych czasach internetu takie historie rozwiązywało się javascriptem wprost na stronie, która reagowała różnie w zależności od agenta. Stosunkowo niedawno nawet, bodaj na stronie banku, której źródło przeglądałem z nudów też natrafiłem na takie historie.

Wydaje mi się, że bankowi informatycy bronią się tym sposobem przed różnymi pluginami typu 'user agent switcher' badając możliwości przeglądarki javascriptem.

konopia
22-08-2011, 16:07
Dla strony trzeba zrobić dwa arkusze ze stylami css jeden normalny,
drugi komórkowy, to jest dokładnie taka sama sytuacja jak z css'em do drukowania.

tu jest o tym, tyle, że po obcemu:
http://www.howtocreate.co.uk/tutorials/css/mediatypes

kh29228
22-08-2011, 22:37
no właśnie czytałem w wielu miejscach, że sposób ze stylami CSS nie działa i obecne telefony go ignorują i że niestety sposób pierwszy jest jedynym, który faktycznie działa. tylko za cholerę nie wiem, jak do niego podejść:( nie znam się na programowaniu php, więc chyba sobie odpuszczę. myślałem, że całość można ogarnąć jakimś prostym skryptem, który wrzucę do kodu stronki i tyle:(

RobertMiernik
22-08-2011, 23:35
Jeśli się nie znasz to sprawa może się okazać mocno skomplikowana, gdybyś jednak chciał powalczyć:

Same przekierowania to w php kod:


header("Location: http://www.domena.pl/");
Ta funkcja musi być zawsze na samym początku pliku HTML (przed nią nie może znajdować się żaden znacznik HTML), więc albo wykrywanie przeglądarki będzie czysto PHPowe albo będzie wymagało przeładowania strony i przekazania parametru do funkcji przy drugim wywołaniu dopiero.

Wykrywanie:
Najprostsze w PHP


<?php
$known = array('firefox', 'dolphin', 'opera');
preg_match_all( '#(?<browser>' . join('|', $known) .
')[/ ]+(?<version>[0-9]+(?:\.[0-9]+)?)#', strtolower( $_SERVER[ 'HTTP_USER_AGENT ' ]), $browser );
if($browser['browser'][0]=='dolphin') header("Location: http://www.domena.pl/");;
?>

Jeśli wolisz w JS:


<script type="text/javascript">
function rozmiar(){
tabela = document.getElementById('tabela_center');
wys = document.body.clientHeight;
//window.status = wys;
if(wys < rozdzielczosc_komorek){
_przekierowanie_na_komorkowa_strone
}else{
_przekierowanie_na_komputerowa_strone
}}}
</script>

Wystarczy? Jeśli nie, możesz podesłać jakieś konkretniejsze pytania.

Powodzenia.

rychu_cmg
22-08-2011, 23:38
Jak się nie znasz na programowaniu zainstaluj Wordpress-a i wtyczkę WordPress Mobile Edition
http://www.piotrsajnog.pl/1569/wordpress-mobile-edition-czyli-moj-blog-w-wersji-mobilnej/

kiemlo
22-08-2011, 23:42
Wypróbuj CSS media queries - pozwalają na wybór stylu w zależności od wielkości i położenia urządzenia.

kh29228
23-08-2011, 01:53
dzięki wszystkim za pomoc. jutro będę próbował:)