Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wykres do staytystyk
Forum PHP.pl > Forum > PHP
fiasko
Witam


Chcę zrobić wykres statystyk. Odwiedziłem kilka stron z wykresami takich jak amCharts . Niestety nie podoba mi się to bo każą umieszczać link zwrotny do nich, a po za tym licencja jest płatna przy wykorzystaniu komercyjnym.

Stąd też moje pytanie czy znacie jakieś darmowe skrypty do tworzenia wykresów, które podłącze pod bazę ? Głównie w javascript lub flash czegoś szukam. Chcę aby wykres ładnie się prezentował i wyglądał podobnie jak te w Piwiku.

Wykres ma służyć do przedstawiania wyników monitoringu pozycji Google.

Może być jakiś przykładowy kod tak żebym zobaczył jak to się wykonuje , bo jeszcze nie pisałem nic podobnego.
Wicepsik
http://pchart.sourceforge.net/index.php
kiler129
Skoro już monitorujesz pozycję w google to użyj do wykresów googli! smile.gif
Przyjemne a zarazem zaawansowane API mają: http://code.google.com/apis/chart/
fiasko
Cytat


No tak ale to jest płatne :

A co do Gogola to nie podobają mi się te wykresy ani troszkę.

A ja szukam darmowej biblioteki.

Znalazłem coś takiego jak phplot - ale troszkę ma słabe możliwości. Jednak pobawię się tym.

Jak znacie jeszcze coś darmowego do tworzenia wykresów to proszę o info.

////////////////////////

Ciąg dalszy zmagań

No mam w końcu to czego szukałem : guitar.gif


open_flash_chart



Odpaliłem to ale pojawiły mi się problemy z kodowaniem.

Tak wygląda tablica - miesiące
Kod
$miesiace = array( 'styczeń' , 'luty' , 'marzec' , 'kwiecień' , 'maj' , 'czerwiec' , 'lipiec' , 'sierpień' , 'wrzesień' , 'październik' , 'listopad' , 'grudzień' );


konwertuje ją na UTF-8 bo zakładam, że dane przelatują przez ajax który obsługuje utf-8

Kod
$miesiace = array( 'styczeń' , 'luty' , 'marzec' , 'kwiecień' , 'maj' , 'czerwiec' , 'lipiec' , 'sierpień' , 'wrzesień' , 'październik' , 'listopad' , 'grudzień' );
for($m=0; $m <= count($miesiace); $m++){
$miesiace2[$m] = iconv('UTF-8', 'ISO-8859-2', $miesiace[$m]);
}



Potem wywalam te miesiące do tablicy.

Kod
$g -> set_x_labels ( $miesiace2 );


No i efektem jest to, że nie ma polskich znaków.

Strona wyświetlana jest w utf-8 i dla testów zrobiłem

Kod
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">


Ktoś wie jak to obejść ? Bo chcę mieć polskie miesiące .
//////////////////////////////////////////////////////////////////////////////////////////
CIĄG DALSZY

Z kodowaniem sobie poradziłem.


Miałem jeszcze problem z przekazywaniem danych do pliku php, z który generuje dane do wykresu. Zmuszony byłem użyć $_GET co nie bardzo mi się podoba. Jednak stwierdziłem, że będę filtrował dane i problem bezpieczeństwa raczej z głowy.

Ostatnia sprawa bezpieczeństwa to to, że plik danych należy zabezpieczyć przed bezpośrednim wywołaniem, bo ktoś niepowołany będzie oglądał nasze dane.

Pytanie tylko jak ? Bo dane są zaczytywane tak jak z zewnętrznego źródła .


w zasadzie mamy plik dane.php

do pliku przekazujemy wszystkie zmienne przez $_GET np. dane.php?limit=1&okres=tydzien

Normalnie do takich danych można wykluczyć dostęp stosując coś takiego :

Kod
$p = strrpos($_SERVER['PHP_SELF'],'/');
//określa pozycję ostatniego wystąpienia ciągu
$akualna_strona = substr($_SERVER['PHP_SELF'], $p+1 );

if ("dane.php" == $akualna_strona ) {
// dane do których ma być dostęp
}
else {
echo "brak dostępu";
}


Powyższy kod chroni przed bezpośrednim wywołaniem kodu php.

Problem jednak w tym, że z tą statystyką tak nie można zrobić bo ona wczytuje dane w sposób bezpośredni i to ona przeczyta napis brak dostępu.


Można jeszcze generować w zmiennej $_GET tak zwany akceskey, ale to już jest mało bespieczne rozwiązanie.
Przykładowo mogę wygenerować do pliku dane.php?akces=19201345654kda&limit=1&okres=tydzien

dostęp do danych mógłby być wtedy ograniczony.
Kod
if ($_GET[akces]  == '19201345654kda' ) {
// dane do których ma być dostęp
}
else {
echo "brak dostępu";
}



W taki sposób mogę wywołać stronę podając stosowny klucz przez $_GET. Problem jest w tym , że to mało bezpieczne.

Ma ktoś inny pomysł jak zabezpieczyć dane ?

/////////////////////////

Część dalsza

No to już rozwiązałem problem z niepowołanym dostępem . Generuję 2 klucze identyczne w obu skryptach. Czas przekazuję zmienną superglobalną $_GET do drugiego skryptu, który generuje dane i który posiada drugą identyczną sumę kontrolną dla funkcji md5(). W efekcie nie można zobaczyć już tych danych, a oba skrypty mają za każdym razem inny klucz.


Kod
$time_pare_key = microtime();
$key =md5('1456refasdfasdfgasdfasda5'.$time_pare_key.'sdfasdfasdfasdt557ujhfdgt');
echo $key;


Jeśli ktoś sądzi , że nie trzeba zabezpieczyć danych przekazywanych w tle przez $_GET to się myli. Wystarczy ściągnąć sobie pod firefox wtyczkę friebug i elegancko widać wszystkie dane przekazywane w tle za pośrednictwem ajax.


Jak widać udało się wcielić ładne statystyki. A przy okazji dane są bezpieczne (jeśli nie liczyć dziur , które posiada flash i które są w samym skrycpice).

Storna projektu http://teethgrinder.co.uk/open-flash-chart/
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.