Rating |
Autor |
Wiadomość |
roberto266
Początkujący
![Początkujący](templates/subSilver/images/ranks/00.gif)
Dołączył: 26 Kwi 2012 Posty: 7 Skąd: Gdańsk
|
Wysłany: Czw 26 Kwi, 2012 20:21 Rating
|
|
|
Panowie proszę o pomoc
Nie jestem zbyt dobry swish, męczę się już z problemem od tygodnia.
Mam zmodyfikowany licznik który zlicza po kliknięciu w button, coś na styl(Star Rating) z tym że zamiast gwiazdek swi zlicza kliknięcia. Wszystko jest ok. , ale po odswierzeniu strony nie wyświetla stanu dotychczasowej punktacji dopiero następuje to po kliknięciu w button.
Na skrypcie buttona jest
kod
on (press) {
this.loadVariables("main.php?rn=" add Math.randomInt(1000));
}
Jaki kod ma byś na scenie aby po wejściu na stroną wyświetlił się aktualny stan licznika ?
Jeśli umieszczę kod na scenę
onSelfEvent (load) {
this.loadVariables("main.php?rn=" add Math.randomInt(1000));
}
wyświetli się aktualny stan plus jeden punkt. Niestety nie potrafię tego wyeliminować
scrypt php wygląda tak/
<?php
$filename = "main.txt";
$fp = fopen($filename,"r");
$data = fread($fp, 25);
fclose( $fp );
$data = explode("=", $data);
$info = $data[0];
$hits = $data[1];
$hits++;
$new_info = $info . "=" . $hits;
$fp = fopen($filename,"w+");
fwrite($fp, $new_info);
fclose( $fp );
print "&hit_counter=$hits";
?>
PANOWIE POMOCY ! |
|
|
|
![](templates/subSilver/images/spacer.gif) |
espe1
Profesjonalista
![Profesjonalista](templates/subSilver/images/ranks/90.gif)
Pomógł: 16 razy Dołączył: 02 Lis 2011 Posty: 175 Skąd: łódzkie
|
|
|
|
![](templates/subSilver/images/spacer.gif) |
roberto266
Początkujący
![Początkujący](templates/subSilver/images/ranks/00.gif)
Dołączył: 26 Kwi 2012 Posty: 7 Skąd: Gdańsk
|
Wysłany: Czw 26 Kwi, 2012 21:22
|
|
|
dzięki za linka, ale nie wspomniałem ze potrzebuję około 20 niezależnych od siebie paneli zliczających punktację... wolałbym stwrzyc go sam, potrzebny mi jest tylko ten kod na scenę aby po zkomunikował się z notatnikiem i wyswitlił aktualny stan który został wpisany do notatnika a po kliknięciu przypiał nową wartość
[ Dodano: Pią 27 Kwi, 2012 12:22 ]
Może ktoś pomoc |
|
|
|
![](templates/subSilver/images/spacer.gif) |
krzywy105
Doradca
![Doradca](templates/subSilver/images/ranks/40.gif)
Pomógł: 1 raz Dołączył: 09 Kwi 2011 Posty: 68 Skąd: Małopolska
|
Wysłany: Pią 27 Kwi, 2012 12:13
|
|
|
Może utwórz drugi bliźniaczy skrypt który będzie tylko odczytywał wartość z pliku txt (pomiń $hits++; ) i ten skrypt wywołuj na onSelfEvent (load).
Natomiast on (press) pozostaw jak jest. |
|
|
|
![](templates/subSilver/images/spacer.gif) |
roberto266
Początkujący
![Początkujący](templates/subSilver/images/ranks/00.gif)
Dołączył: 26 Kwi 2012 Posty: 7 Skąd: Gdańsk
|
Wysłany: Pią 27 Kwi, 2012 13:14
|
|
|
Nie zła myśl...... spróbuję tak zrobić. Dzięki za sugestię, napiszę co z tego wyszło
[ Dodano: Pią 27 Kwi, 2012 14:48 ]
Jesteś wielki, proste ale skuteczne, mnie raczej do głowy by nie przyszło, wszystko działa poprawnie. W każdym bądź razie wielkie dzięki oto mi chodziło, natomiast czeka mnie jeszcze jedna przeszkoda – jak zablokować IP na jakiś okres czasu tak aby ktoś mógł dodać punkt raz na kilka godz. np. 12h. Możesz coś doradzić. Mógł byś coś doradzić ?, Będę wdzięczny.
Pozdrawiam
[ Dodano: Sob 28 Kwi, 2012 07:59 ]
Jest jakaś szansa na pomoc ? blokada IP na licznik przez kilka godzin z jednego IP |
|
|
|
![](templates/subSilver/images/spacer.gif) |
krzywy105
Doradca
![Doradca](templates/subSilver/images/ranks/40.gif)
Pomógł: 1 raz Dołączył: 09 Kwi 2011 Posty: 68 Skąd: Małopolska
|
Wysłany: Sob 28 Kwi, 2012 07:58
|
|
|
Nie wiem czy jest możliwość uzyskania ip klienta bezpośrednio w flashu. Jeśli nie to musiał byś wykorzystać do tego php. Takie dane powinieneś raczej trzymać w cookies a nie u siebie na serwerze bo blokując jakieś ip po stronie serwera zablokujesz np. całą sieć lokalną.
Ja raczej zamiast blokować ip to blokował bym konkretny komputer poprzez zapis danych w jego ciasteczkach. Prawdopodobnie zrobił bym tak że zapisywał bym czas kliknięcia w Shared Object i następnie sprawdzał różnice między aktualnym czasem a tym zapisanym i na tej podstawie blokował lub nie zliczanie. Wykorzystując Shared Object uzyskasz blokadę na konkretną instalacje Flash Playera. |
|
|
|
![](templates/subSilver/images/spacer.gif) |
roberto266
Początkujący
![Początkujący](templates/subSilver/images/ranks/00.gif)
Dołączył: 26 Kwi 2012 Posty: 7 Skąd: Gdańsk
|
Wysłany: Sob 28 Kwi, 2012 09:53
|
|
|
Krzywy105, napisałem do Ciebie PW
[ Dodano: Pon 30 Kwi, 2012 07:54 ]
zaczynam kumać temat ale dowiedziałem się ze ciasteczka można wyłączyć prawie w każdej przeglądarce, zablokować IP odpada bo zablokuję całą sieć, nie ma jakiegoś sposobu na taki licznik ? ciekawe jak to robią Star Rating System ?
Może ktoś coś doradzi |
|
|
|
![](templates/subSilver/images/spacer.gif) |
krzywy105
Doradca
![Doradca](templates/subSilver/images/ranks/40.gif)
Pomógł: 1 raz Dołączył: 09 Kwi 2011 Posty: 68 Skąd: Małopolska
|
Wysłany: Czw 03 Maj, 2012 09:57
|
|
|
Dopisałem poniższy kod do sceny:
Kod: |
onSelfEvent (load) {
this.loadVariables("http://localhost/~licznik/infoL1.php?rn=" add Math.randomInt(1000));
mySharedObject=SharedObject.getLocal("blokada_licznika", "/");
if (mySharedObject.data.czas_kliku==null)
{
mySharedObject.data.czas_kliku=0;
trace(mySharedObject.data.czas_kliku);
mySharedObject.flush();
}
else
{
trace(mySharedObject.data.czas_kliku);
}
}
|
Oraz do przycisku:
Kod: | on (press) {
var my_date:Date = new Date();
trace("Aktualny czas: "+my_date.getTime());
trace("Czas poprzedniego kliku: "+mySharedObject.data.czas_kliku);
roznica = my_date.getTime()-mySharedObject.data.czas_kliku;
trace("Roznica "+roznica);
if (roznica > 10000){ // 10000 to 10 sekund, czyli jeśli od ostatniego kliku mineło więcej niż 10 sekund to zliczyć
this.loadVariables("http://localhost/~licznik/L1.php?rn=" add Math.randomInt(1000));
mySharedObject.data.czas_kliku=my_date.getTime();
mySharedObject.flush();
}
} |
Nie jest to blokada na IP po stronie serwera tylko prosta blokada po stronie przeglądającego. Do usunięcia oczywiście trace które wstawiłem dla testu.
Jeśli chciałbyś blokadę IP to w php musisz sprawdzić ip ($_SERVER['REMOTE_ADDR'])odwiedzającego i np. czas serwera i na tej podstawie blokować (wysłać do swisha albo blokować w samym php).
[ Dodano: Czw 03 Maj, 2012 20:12 ]
roberto266 napisał/a: |
[ Dodano: Pon 30 Kwi, 2012 07:54 ]
zaczynam kumać temat ale dowiedziałem się ze ciasteczka można wyłączyć prawie w każdej przeglądarce, zablokować IP odpada bo zablokuję całą sieć, nie ma jakiegoś sposobu na taki licznik ? ciekawe jak to robią Star Rating System ?
Może ktoś coś doradzi |
Wykorzystując shared object nie korzystasz z ciasteczek przeglądarki tylko z "ciasteczek" flash playera. Nie ma chyba 100% metody (ewentualnie jakieś konta użytkowników i rozbudowany system z rejestracja itp ale to bezsensu). Niemniej każdy system da się obejść jeśli dysponuje się pewną wiedzą. |
|
|
|
![](templates/subSilver/images/spacer.gif) |
roberto266
Początkujący
![Początkujący](templates/subSilver/images/ranks/00.gif)
Dołączył: 26 Kwi 2012 Posty: 7 Skąd: Gdańsk
|
Wysłany: Czw 03 Maj, 2012 19:30
|
|
|
Wielkie dzięki. Wszystko gada... spotęgowałem tylko ten czas kliknięcia ponieważ musi być ustawione na min 3godz, . Nie wiem czy dobrze zrobiłem, widziałem gdzieś w scrypcie mniejszą liczbę z znakiem plus, ale ważne że działa. Jeszcze raz dziękuję i czuję się Twoim dłużnikiem.
Pozdrawiam |
|
|
|
![](templates/subSilver/images/spacer.gif) |
|