![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 711 Pomógł: 127 Dołączył: 5.07.2008 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam, w jaki sposób mogę pobrać rozdzielczość ekranu użytkownika odwiedzającego mój skrypt php i przekazać ją do zmiennej php?
Wiem że pobieranie takiej info można zrobić w javascript, i potrafię pobrać rozdzielczość dopiero za drugim razem jak odwiedza ją ten sam gość (cookies), ale jak zrobić by od razu javascript przekazał tą wartość do zmiennej $rozdzielczość, bo potem chcę ją zapisać do mysql. Ten post edytował cycofiasz 29.07.2008, 16:32:46 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 875 Pomógł: 122 Dołączył: 2.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Za pomocą javascript odczytujesz tą rozdzielczość a potem przekierowujesz usera na strone np. index.php?x=1024&y=768 a w index.php już sobie spokojnie te wartości obrabiasz...
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 711 Pomógł: 127 Dołączył: 5.07.2008 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
A nie znacie jakiegoś lepszego rozwiązania, bez przekierowania? Musi być takowe, skoro w statystykach stat4u widnieją rozdzielczości odwiedzających.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 333 Pomógł: 137 Dołączył: 25.03.2008 Skąd: jesteś?? Ostrzeżenie: (0%) ![]() ![]() |
Zawsze możesz pobrać za pomocą Js i ajaxem jakoś wysłać...
![]() -------------------- Mój blog - o wszystkim i niczym ale zazwyczaj związane z informatyką! ;-)
Githube Usługi spawalnicze i monterskie | Park linowy Lublin i Okunince |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Tudzież wygenerować skrypt js za pomocą php zapisując go oczywiście jako php i wysyłając odpowiedni nagłówek.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 711 Pomógł: 127 Dołączył: 5.07.2008 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Na ten czas onegdaj żadne z rozwiązań nie spełnia moich oczekiwań...
chodzi mi o to: gość wchodzi na moją stronkę, w bazie zapisują się dane o nim (czas, ip, referer itp...) i jednocześnie w tym samym rekordzie jego rozdzielczość. Nie da się tego tak łatwo zrobić, bo trzeba ją odczytać przez js po stronie przeglądarki, czyli po wykonaniu skryptu... padły propozycje: przekierowania url, ale to odpada, bo wygladało by to nieprofesionalnie, AJAX, za pewne dało by radę, ale nic nie potrafię napisać samemu w ajaxie... |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 492 Pomógł: 33 Dołączył: 16.08.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Plik http_request.js:
Kod var request = null; /* Funkcja opakowująca do skonstruowania obiektu żądania. Parametry: reqType: typ żądania HTTP, na przykład GET lub POST. url: adres URL programu serwerowego. asynch: czy żądanie będzie wysyłane asynchronicznie, czy też nie respHandle: nazwa funkcji, która będzie obsługiwała odpowiedź. Każde pięć parametrów przedstawione przez arguments[4] stanowią dane żądania POST przeznaczonego do wysłania. */ function httpRequest(reqType,url,asynch,respHandle,optional){ // Przeglądarki na bazie Mozilli. if(window.XMLHttpRequest){ request = new XMLHttpRequest(); } else if (window.ActiveXObject){ request=new ActiveXObject("Msxml2.XMLHTTP"); if (! request){ request=new ActiveXObject("Microsoft.XMLHTTP"); } } // Bardzo mało prawdopodobne, ale sprawdzamy, czy występują żądania null, // jeśli także obiekt ActiveXObject nie został zainicjalizowany. if(request) { // Jeżeli parametr reqType jest typu POST, wówczas // piąty argument funkcji stanowią dane przesyłane metodą POST. if(reqType.toLowerCase() != "post") { initReq(reqType,url,asynch,respHandle); } else { // Dane przekazywane metodą POST. var args = arguments[4]; if(args !=null && args.length > 0){ initReq(reqType,url,asynch,respHandle,args); } } } else { alert("Używana przeglądarka nie pozwala na wykorzystanie "+ "wszystkich funkcji tej aplikacji!"); } } /* Inicjalizacja obiektu żądania, który został już skonstruowany. */ function initReq(reqType,url,bool,respHandle,args){ try{ /* Określamy funkcję, która bedzie obsługiwała odpowiedź HTTP */ request.onreadystatechange=respHandle; request.open(reqType,url,bool); // Jeżeli parametr reqType jest typu POST, wówczas // piąty argument funkcji stanowią dane przesyłane metodą POST. if(reqType.toLowerCase() == "post") { request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-2"); request.send(arguments[4]); } else { request.send(null); } } catch (errv) { alert( "W tym momencie aplikacja "+ "nie może połączyć się z serwerem. "+ "Proszę spróbować ponownie w ciągu kilku sekund.\n"+ "Szczegółowe informacje o błędzie: "+errv.message); } } Plik script.js: Kod var url="ajax.php"; var str="x=" + screen.width + "&y=" + screen.height; httpRequest("POST",url,true,handleResponse,str); function handleResponse(){ try{ if(request.readyState == 4){ if(request.status == 200){ alert(request.responseText); } else { // Wartość właściwości request.status wynosi 503, // jeżeli aplikacja jest niedostępna, oraz // wartość 500, jeśli aplikacja zawiera błąd. alert( "Wystąpił problem z komunikacją między obiektem XMLHttpRequest, "+ "a programem serwera."); } }// Koniec zewnętrznej pętli if. } catch (err) { alert("Serwer nie jest dostępny "+ "dla tej aplikacji. Proszę wkrótce spróbować"+ " ponownie. \nBłąd: "+err.message); } } Plik index.php:
Plik ajax.php:
Pisane z palca, więc mogą być błędy, chociaż nie powinny wystąpić. Użyłem kodu napisanego przez autorów książki `80 sposobów na AJAX`, wszelkie prawa zapewne zastrzeżone. Przekierowanie rzeczywiście nie jest najlepszym sposobem, najlepsze wydaje się użycie właśnie obiektu żądania, nie da się tego zrobić w inny sposób. Nie można z JS przekazać zmiennej do PHP bez użycia XMLHttpRequest, albo bez przekierowywania. No a w PHP nie odczytasz nijak właściwości ekranu, bo to działa po stronie serwera - więc to jedyna opcja. Mam nadzieję, ze trochę Ci się rozjaśni po tym kodzie, są tam komentarze w pliku http_request.js (nie moje, ale są), wiec powinieneś zrozumieć, jak to działa. Ten post edytował Hazel 29.07.2008, 17:53:43 -------------------- ![]() |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 711 Pomógł: 127 Dołączył: 5.07.2008 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Utworzyłem takie pliki jak napisałeś, w ajax.php zamiast bazy danych dałem zapis do pliku, zapis działa, ale skrypt ajax.php nie otrzymuje żadnych zmiennych POST.
Zapodam tu te pliki Kod http://www.speedyshare.com/921477604.html
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 492 Pomógł: 33 Dołączył: 16.08.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Ściągnałem tę paczkę, ale staraj się tak nie robić na forum, bo nie każdy chce ściągac nieznaną zawartość do siebie na komputer.
Pierwsze co mi się rzuciło w oczy: Kod var str='x=' + screen.width + '&y=' + screen.height; Zwróć uwagę na apostrofy (mogą być cudzysłowy), bo w tamtym pliku script.js tego nie masz. Pod tym umieść linijkę alert(str); odpal to i zobacz co Ci wyświetli, to bedzie zawartość zmiennej str. edit: Kod var url='ajax.php'; Ten sam błąd. Więcej nie widzę, powinno zapisywać. A jak nie to sprawdzaj alertem zawartość poszczególnych zmiennych i do czegoś dojdziesz. Ten post edytował Hazel 29.07.2008, 18:43:20 -------------------- ![]() |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 711 Pomógł: 127 Dołączył: 5.07.2008 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Pozmieniałem to co zauważyłeś, ale nadal fiasko. Nie znam się na js i ajaxie, więc nie za bardzo wiem co jest źle w kodzie...
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 492 Pomógł: 33 Dołączył: 16.08.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Napisałem Ci co masz zrobić, debugowanie kodu JS polega na wstawianie alertów w różnych miejscach i patrzeniu co wyświetlają.
Nie mogę Ci bardziej pomóc, bo błędów składni raczej więcej tam nie ma, więc polega to na tym, że coś jest nie tak z komunikacją przeglądarka-serwer pewnie. Uruchom konsolę błędów (FF lub Opera) i już. -------------------- ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 3.07.2025 - 13:55 |