Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Blokada kliknięcia w link, Blokada kliknięcia w link wysyłania formularza po paru klikach.
smrodek11
post
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 27.12.2010

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


A więc moja wiedza jest początkująca na temat php, html (IMG:style_emoticons/default/winksmiley.jpg)
Chodzi mi o to żeby przycisk "Zamow Nagrode" na stronie: http://timetoplay.org.pl/kamil18239restock.php można było kliknąć np. 5 razy przez dowolnego użytkownika, po czym zmieniał by się on nieosiągalny (nie do kliknięcia). Jak się za to zabrać? (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 38)
potreb
post
Post #2





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Zapisujesz cookies lub do bazy jego ip i sprawdzasz czy już nie może zamawiać. Cookies będzie lepsze. Wtedy np wysyłasz raz cookie później sprawdzasz czy istnieje jeżeli tak to dodajesz +1 aż wynik będzie = 5. I wtedy prosty if dla dezaktywacji przycisku (IMG:style_emoticons/default/smile.gif)

Ten post edytował potreb 27.12.2010, 21:58:30
Go to the top of the page
+Quote Post
smrodek11
post
Post #3





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 27.12.2010

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


Ale chodzi o to że kilka osób kliknie w ten przycisk i już nikt nie będzie mógł go kliknąć (IMG:style_emoticons/default/worriedsmiley.gif)
Go to the top of the page
+Quote Post
potreb
post
Post #4





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Jeżeli wysyłasz cookie to tylko do tego użytkownika, który kliknął w przycisk.
  1. if(isset($_GET['przycisk'])) {
  2. if(!isset($_COOKIE["TestCookie"])) {
  3. setcookie("TestCookie", 1, time()+3600);
  4. } else {
  5. $value = $_COOKIE["TestCookie"]+1;
  6. setcookie("TestCookie", $value, time()+3600);
  7. }
  8.  
  9. }
  10.  
  11. if($_COOKIE["TestCookie"] > 5) echo "<a href='#'>Przycisk nie aktywny</a>"; else echo "<a href='index.php?przycisk=1'>Przycisk jest aktywny</a>";



Ten post edytował potreb 27.12.2010, 22:06:35
Go to the top of the page
+Quote Post
smrodek11
post
Post #5





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 27.12.2010

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


No to właśnie mi chodzi co trzeba by byłi zrobić, żeby przycisk był do kliknięcia tylko pare razy, ogólnie? (IMG:style_emoticons/default/worriedsmiley.gif)
Go to the top of the page
+Quote Post
PanGuzol
post
Post #6





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

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


Musisz sobie zapisać na serwerze gdzieś, w pliku lub w bazie ile razy został kliknięty.
Go to the top of the page
+Quote Post
tehaha
post
Post #7





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


przy kliknięciu wprowadzasz rekord do bazy, i przed każdym kliknięciem sprawdzasz ilość rekordów

  1. if(mysql_num_rows($result) > 5)
  2. {
  3. echo "przycisku nie można już kliknąć, osiągnięto max";
  4. }


Ten post edytował tehaha 27.12.2010, 22:07:31
Go to the top of the page
+Quote Post
smrodek11
post
Post #8





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 27.12.2010

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


A mógłbyś trochę opisać jak to zrobić? Specjalnie dałem to do tego działu bo oczekiwałem dokładniejszej pomocy. Jest to przycisk wysyłania formularza, i nie mam pojęcia jak to obcykać :/

Cytat(tehaha @ 27.12.2010, 22:06:55 ) *
przy kliknięciu wprowadzasz rekord do bazy, i przed każdym kliknięciem sprawdzasz ilość rekordów

  1. if(mysql_num_rows($result) > 5)
  2. {
  3. echo "przycisku nie można już kliknąć, osiągnięto max";
  4. }


a dało by się to w pliku na serwie zapisać zamiast w bazie?

Ten post edytował smrodek11 27.12.2010, 22:10:21
Go to the top of the page
+Quote Post
potreb
post
Post #9





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Dałem ci odpowiedź na tacy, to że tutaj jest napisane przedszkole nie znaczy że robimy za ciebie wszystko. Wejdź do http://www.php.net/manual/en/function.file-put-contents.php

Ten post edytował potreb 27.12.2010, 22:14:17
Go to the top of the page
+Quote Post
PanGuzol
post
Post #10





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

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


Jeśli tylko o zliczanie do 5 chodzi to niema sensu korzystac z bazy danych.
Skorzystaj z funkcji
file_get_contents
file_put_contents
Go to the top of the page
+Quote Post
potreb
post
Post #11





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


(IMG:style_emoticons/default/smile.gif)
Powód edycji: [webdice]: Brakuje Ci ostrzeżeń?
Go to the top of the page
+Quote Post
tehaha
post
Post #12





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


Cytat(PanGuzol @ 27.12.2010, 22:13:24 ) *
Jeśli tylko o zliczanie do 5 chodzi to niema sensu korzystac z bazy danych.

to jeszcze zależy ile jest tych przycisków, ale skoro autor jest nie w temacie to pewnie jest tylko jeden przycisk,

p.s. trochę Ci się pomyliło, to w żłobku jest pełna obsługa, przedszkole zakłada podstawowe umiejętności
Go to the top of the page
+Quote Post
smrodek11
post
Post #13





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 27.12.2010

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


Jakoś tego żłobka nie widzę, a skoro tam jest coś takiego, z chęcią bym zajżał.
Nie wiem za bardzo jak obsłużyć się moim przyciskiem, gdyż wysyłać on miał na maila (IMG:style_emoticons/default/worriedsmiley.gif)
  1. <input type="submit" value="Zamow nagrode!" />


Zrobiłem to tak:
  1. <input type="submit" value="Zamow nagrode!" />
  2. <?php
  3. $file = 'people.txt';
  4. $current = file_get_contents($file);
  5. $current .= "Test\n";
  6. file_put_contents($file, $current);
  7. ?>
<

Zapisuje poprawnie do pliku, tylko jak zrobić z tym blokowaniem żeby po 5 kliknięciach kliknięcie w przycisk stało się niemożliwe? (IMG:style_emoticons/default/wstydnis.gif)
Go to the top of the page
+Quote Post
tehaha
post
Post #14





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


1. przed wyświetleniem przycisku musisz odczytać z pliku jego wartość
2. sprawdzasz przy pomocy if() czy wartość nie przekracza dopuszczalnej
3. jeżeli nie przekracza to wyświetlasz przycisk submit, a jeżeli przekracza to wyświetlasz informacja np. "limit przekroczony"
Go to the top of the page
+Quote Post
smrodek11
post
Post #15





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 27.12.2010

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


Tylko ja w tym pliku mam 5 takich samych wpisów. Próbowałem z fgets

  1. <?php
  2. $uchwyt = @fopen ("people.txt", "r");
  3. if ($uchwyt) {
  4. while (!feof($uchwyt)) {
  5. $buffer = fgets($uchwyt, 4096);
  6. echo $buffer;
  7. }
  8. fclose ($uchwyt);
  9. }
  10. ?>


I teraz jak miałbym to ustawić żeby po kliknięciu 5 ciu razy tego przycisku, przycisk stawał się nieklikalny?

  1. if($file = 'people.txt';
  2. $current = file_get_contents($file);
  3. $current .= "John Smith\n";
  4. file_put_contents($file, $current);)


Próbowałem z czymś takim to kod mi się wyświetlał zamiast poprawnego skryptu (IMG:style_emoticons/default/worriedsmiley.gif)
Co źle zrobiłem?

Ten post edytował smrodek11 27.12.2010, 23:21:17
Go to the top of the page
+Quote Post
PanGuzol
post
Post #16





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

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


W pliku zapisuj liczbę kliknięć.
Korzystając z file_get_contents pobierasz tę liczbę, jeśli równa 5 to blokujesz przycisk submit.
Po kliknięciu pobierasz tą liczbę, dla pewności sprawdzasz czy jest mniejsza od 5, jeśli tak to zapisujesz do pliku powiększoną o 1 za pomocą file_put_contents oraz co tam chcesz aby się stało w innym wypadku nic nie robisz.
Go to the top of the page
+Quote Post
smrodek11
post
Post #17





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 27.12.2010

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


Zrobiłem że ma odczytywać
  1. if($file = 'people.txt')
  2. if($max = 11)
  3. echo Przycisk nie dostepny


Ale znów sam skrypt mam zamiast braku przycisku :/
I co teraz mam źle?

Mam dodany skrypt który dodaje cyfrę 1 kiedy ktoś kliknie ten przycisk, tylko jak ja mam ten skrypt ułożyć żeby blokował wczytywanie tego przycisku po 5 ciu kliknięciach? (IMG:style_emoticons/default/worriedsmiley.gif)
Próbowałem z $max ale coś mi to nie wychodził (IMG:style_emoticons/default/sad.gif)

Ten post edytował smrodek11 28.12.2010, 10:09:55
Go to the top of the page
+Quote Post
tehaha
post
Post #18





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


przed wyświetleniem przycisku odczytujesz plik i sprawdzasz jaką zawiera wartość, jeżeli większa lub równa maksymalnej to nie wyświetlasz lub blokujesz przycisk
Go to the top of the page
+Quote Post
smrodek11
post
Post #19





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 27.12.2010

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


Zdecydowałem się jednak na mysql.
  1. <input type="submit" value="Test"<?php if($klik['klikniecia'])>5 { echo disbled='disabled' } ?> />

Co tu jest źle zrobione? Wyskakuje syntax error :/
Go to the top of the page
+Quote Post
PanGuzol
post
Post #20





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

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


Za wcześnie zamknąłeś nawias ) oraz brakuje Ci średnika.
Go to the top of the page
+Quote Post
smrodek11
post
Post #21





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 27.12.2010

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


Dalej to samo
(IMG:style_emoticons/default/worriedsmiley.gif)
  1. <input type="submit" value="Zamow nagrode"<?php if($klik['klikniecia']>5){ echo disbled='disabled' } ?> />;


tręść błedu:
Parse error: syntax error, unexpected '=', expecting ',' or ';' in /homez.379/timetopl/www/pp.php on line 71

Ten post edytował smrodek11 28.12.2010, 15:16:58
Go to the top of the page
+Quote Post
PanGuzol
post
Post #22





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

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


A gdzie się wstawia średnik?

W ogóle to jak wyskakują Ci jakieś błędy to umieszczaj ich treść, wróżki tego forum nie czytają.
Go to the top of the page
+Quote Post
smrodek11
post
Post #23





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 27.12.2010

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


Po ostatniej operacji? Dodałem treść błędu w poprzednim poście
Go to the top of the page
+Quote Post
PanGuzol
post
Post #24





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

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


Ehh nie zauważyłem, daj w cudzysłowy to co chcesz wyświetlić.

Po każdej operacji.
Go to the top of the page
+Quote Post
smrodek11
post
Post #25





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 27.12.2010

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


Ok poprawiłem ale teraz to już nie wiem co robić, kolejny błąd
Cytat
Parse error: syntax error, unexpected '>' in /homez.379/timetopl/www/pp.php on line 71


kod mam taki:
  1. <input type="submit" value="Zamow nagrode"<?php if($klik['klikniecia'])>5 { echo 'disabled="disabled"'; } ?> />

A nie, wszystko w porządku (IMG:style_emoticons/default/smile.gif)

Ten post edytował smrodek11 28.12.2010, 16:27:40
Go to the top of the page
+Quote Post
Dominator
post
Post #26





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

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


Parse error: syntax error, unexpected '>' in /home/sites/p/pr/pro/promaniak.trixy.pl/account/redeemed.php on line 1

Dałem kod co kolega na górze, co teraz ?
Go to the top of the page
+Quote Post
evolucja
post
Post #27





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

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


Dominator, w tym kodzie wyżej jest błąd. Za wcześnie zamknięty nawias w instrukcji if.
Go to the top of the page
+Quote Post
Dominator
post
Post #28





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

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


dzięki, zamieniłem sobie i działa edit; kliknąłem 5 razy i dalej jest zamów nagrodę

Ten post edytował Dominator 28.12.2010, 20:20:44
Go to the top of the page
+Quote Post
evolucja
post
Post #29





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

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


Pokaż resztę kodu.
Go to the top of the page
+Quote Post
Dominator
post
Post #30





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

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


Cytat(evolucja @ 28.12.2010, 20:21:58 ) *
Pokaż resztę kodu.



Tak to podmieniłem


  1. <input type="submit" value="Zamow nagrode"<?php if($klik['klikniecia'] >5) { echo 'disabled="disabled"'; } ?> />


Zgodnie żeby po pięciu klikach było disabled
Go to the top of the page
+Quote Post
smrodek11
post
Post #31





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 27.12.2010

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


No właśnie źle robię ten skrypt co ma wstawiać do bazy rekord, nie działa i wielkie "G" robi ...
Co ja tam musiałbym dodać żeby to poprawnie w tej bazie zapisywało? :/
Go to the top of the page
+Quote Post
evolucja
post
Post #32





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

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


Pokaż to co masz bo ja nie w temacie.
Go to the top of the page
+Quote Post
Dominator
post
Post #33





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

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


Cytat(smrodek11 @ 28.12.2010, 20:24:01 ) *
No właśnie źle robię ten skrypt co ma wstawiać do bazy rekord, nie działa i wielkie "G" robi ...
Co ja tam musiałbym dodać żeby to poprawnie w tej bazie zapisywało? :/


Ty chcesz zrobić taki skrypt jak na restocku na Lockerz, 5 osób zamówi tacza 32GB i się robi FRESH OUT ?
Go to the top of the page
+Quote Post
smrodek11
post
Post #34





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 27.12.2010

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


No dokładnie, tego fresh out to se moge odpuścić. Wystarczyłaby mi blokada przycisku

Proszę:
http://wklej.to/qnaBiW
To jest wszystko co mam w pp.php tutaj: http://timetoplay.org.pl/pp.php
Go to the top of the page
+Quote Post
Dominator
post
Post #35





Grupa: Zarejestrowani
Postów: 565
Pomógł: 15
Dołączył: 11.10.2010

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


Cytat(smrodek11 @ 28.12.2010, 20:41:24 ) *
No dokładnie, tego fresh out to se moge odpuścić. Wystarczyłaby mi blokada przycisku

Proszę:
http://wklej.to/qnaBiW
To jest wszystko co mam w pp.php tutaj: http://timetoplay.org.pl/pp.php


Wiesz co, możesz kupić taki za 19,99zł od Killera na Lockerz-Forum.Eu, zjedź na dół strony i zobacz dział o sprzedaży, wejdź i będzie tam temat Killera.

Forum może czasami nie działać bo jest zmiana DNS.
Go to the top of the page
+Quote Post
evolucja
post
Post #36





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

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


Cytat(smrodek11 @ 28.12.2010, 20:41:24 ) *
No dokładnie, tego fresh out to se moge odpuścić. Wystarczyłaby mi blokada przycisku

Proszę:
http://wklej.to/qnaBiW
To jest wszystko co mam w pp.php tutaj: http://timetoplay.org.pl/pp.php

I gdzie masz tam kod odpowiadający za zliczanie kliknięć i ich pobieranie? Widzę, że zmodyfikowałeś sam przycisk....

A kolega wyżej lepiej niech wyjdzie z tego tematu zanim dostanie ostrzeżenie. Tfu! Dwie dychy wydawać za skrypt długości 4 linijek.

Ten post edytował evolucja 28.12.2010, 20:55:28
Go to the top of the page
+Quote Post
smrodek11
post
Post #37





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 27.12.2010

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


  1. $zapytanie=mysql_query("SELECT * FROM klikniecia WHERE id='".$_GET['id']."'") or die(mysql_error());
  2. $klik=mysql_fetch_array($zapytanie);

To miało zliczać (IMG:style_emoticons/default/dry.gif)

  1. <script type="text/javascript"><!--
  2. function wy(id)
  3. {
  4. o = new Image();
  5. o.src = "test.php?id=" + id + "&z=78";
  6. }
  7. --></script>


A to miało niby dodawać, ale wielkie G dodaje ..
Tamten skrypt jest niezły, ale to wierna kopia z lockerza, pozatym wolałbym mieć swój


Zrobiłem dla przykładu, aby byle co wpisywało:
  1. <?php
  2. $db_host = 'mysql5-1.starter';
  3. $db_user='--';//user majacy dostep do bazy
  4. $db_password='--';//haslo
  5. $database='--';//nazwa bazy danych
  6.  
  7. mysql_connect('mysql5-1.starter',$db_user,$db_password);//jesli pliki html i php beda na tym samym serwerze co baza to musisz wpisac 'localhost' w przeciwnym razie dostep do bazy czyli lokalizacje
  8. mysql_select_db($database) or die ("Nie udalo sie wybrac bazy danych");
  9.  
  10. $zapytanie = "INSERT INTO `klikniecia` (`id`, `nazwisko`, `lata`, `punkty` , `mistrzostwa`) VALUES ('', 'Jordan', '13', '32', '6')";
  11. $idzapytania = mysql_query($zapytanie);
  12. ?>


Mam to jako odzielnny plik na serwerze, włączam go, nie ma żadnych błędów lecz w tabeli klikniecia nic nie zostało dodane ..
Przecież wszystko jest odpowiednio napisane, w czym problem?
Go to the top of the page
+Quote Post
thek
post
Post #38





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




A sprawdziłeś chociaż czy zapytanie się wykonuje? Jeśli nie to skaszaniłeś je i tyle (IMG:style_emoticons/default/smile.gif) Zrób sobie jego debug i tyle. Jak? Masz temat o zadawaniu pytań. Tam masz wskazówki jak to robić.
Go to the top of the page
+Quote Post
smrodek11
post
Post #39





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 27.12.2010

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


Dobra jakoś sobie poradziłem. Mam zrobione że przy kliknięciu odejmuje 1 z ilości nagród w bazie danych. Teraz tylko jak zrobić skrypt który by dodawał, zamiast odejmować, ten rekord? Chciałbym to robić z poziomu strony, zamiast za każdym razem do sql wbijać ;/
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 23.08.2025 - 22:15