Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [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 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ć? sad.gif
Go to the top of the page
+Quote Post
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 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ąć 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? 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.


--------------------
Sposób na życie? Uśmiech na twarzy :D
"Widzę więcej, wiem więcej, tak to jest mniej więcej"
"NIE kradnij, rząd nielubi konkurencji"
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


--------------------
Sposób na życie? Uśmiech na twarzy :D
"Widzę więcej, wiem więcej, tak to jest mniej więcej"
"NIE kradnij, rząd nielubi konkurencji"
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%)
-----


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 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? 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 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.


--------------------
Sposób na życie? Uśmiech na twarzy :D
"Widzę więcej, wiem więcej, tak to jest mniej więcej"
"NIE kradnij, rząd nielubi konkurencji"
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? worriedsmiley.gif
Próbowałem z $max ale coś mi to nie wychodził 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.


--------------------
Sposób na życie? Uśmiech na twarzy :D
"Widzę więcej, wiem więcej, tak to jest mniej więcej"
"NIE kradnij, rząd nielubi konkurencji"
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 02:47