Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] sesja
krzychu0808
post
Post #1





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

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


witam....
zrobiłem na sesjach zabezpieczenie przed spamem żeby nie mógł użytkownik dodać paru ocen do 1 dowcipu zrobiłem to tak:
  1. <?php
  2. if ($oceniono==1)
  3. {
  4.  
  5.  
  6.  
  7. if(!session_is_registered("ses_md5") || $ses_md5!=md5("$_POST[id_kaw]"))
  8. {
  9. $sql_add_wpis = "update smich_kawaly set `ilosc` = `ilosc` + 1, `oceny` = `oceny` + '$ocena', `ocena` = oceny/ilosc where kaw_id='$id_kaw'";
  10. $dodano = "<br/><font color=\"#ff0000\"><b>- Ocena Została Dodana</b></font><br/>";
  11.  
  12. mysql_query($sql_add_wpis);
  13.  
  14.  
  15. $ses_md5 = md5($id_kaw);
  16.  
  17. }
  18. else { $blad22="<br/><font color=\"#ff0000\"><b>- Dodałeś już Ocenę do tego Dowcipu</b></font><br/>";}
  19. }
  20. ?>


ale zapisuje to tylko 1 id zdjęcia i gdy się doda do innego zdjęcia ocenę to id jest nadpisywane i ponownie można dodać ocenę do dowcipu który poprzednio oceniliśmy. Chodzi mi o to żeby w sesji się zapisywały wszystkie id kawałów które oceniliśmy a nie tylko 1... proszę o pomoc

Ten post edytował krzychu0808 23.08.2008, 01:26:09
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Kod
session_register('glosowane');


przy oddaniu glosu robisz
Kod
$_SESSION['glosowane'][]=$id_kawalu;


Sprawdzenie czy glosowal
Kod
if(in_array($id_kawalu, $_SESSION['glosowane'])) echo 'Głosowałeś nara';
else 'No to sobie głosuj';


--------------------
Go to the top of the page
+Quote Post
golaod
post
Post #3





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

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


Toś mu podał sposób. Sposób obejścia:
Wyłącz przeglądarkę -> Włącz przeglądarkę.
Rozwiązanie:
Plik txt dla każdego usera (nazwa pliku np. jego id lub nick) w którym zapisujesz id do którego już ktoś głosował dzięki temu potem robisz:
  1. <?php
  2. if(in_array('id_aktualnego_dowcipu_na_ktorym_ma_sie_odbyc_glosowanie',explode(','file_get_contents('id_usera.txt')))
  3. echo 'przykro nam juz zaglosowales na to';
  4. else
  5. {
  6. echo 'dziekujemy za oddanie glosu';
  7. $str = file_get_contents('id_usera.txt');
  8. $str.= ',id_do_ktorego_zaglosowal';
  9. file_put_contents('id_usera.txt',$str);
  10. }
  11. ?>

Lub robisz to na bazie tzn tabela zagłosowane która wygląda mniej więcej tak:
id,id_dowcipu,id_usera dzięki temu robisz tylko zapytanie:
  1. <?php
  2. $zap = mysql_query("SELECT * FROM zaglosowane WHERE id_dowcipu = 'id_dowcipu' AND id_usera = 'id_usera'");
  3. if(mysql_num_rows($zap)>0)
  4. echo 'Przykro nam ale już zagłosowałeś';
  5. else
  6. {
  7. mysql_query("INSERT INTO zaglosowane VALUES (NULL,'id_dowcipu','id_usera')");
  8. echo Dziekujemy za oddanie glosu;
  9. }
  10. ?>


Ten post edytował golaod 23.08.2008, 08:06:05
Go to the top of the page
+Quote Post
krzychu0808
post
Post #4





Grupa: Zarejestrowani
Postów: 428
Pomógł: 2
Dołączył: 1.04.2007
Skąd: Pogorzelica

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


ale u mnie można głosować bez zalogowania więc skąd mam mieć id usera
Go to the top of the page
+Quote Post
bmL
post
Post #5





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

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


Tak na marginesie nie zaleca się używania session_register tylko bezpośrednio dopisywać zmienne do tabli $_SESSION:
  1. <?php
  2. // Nie powinno się już używać session_register()
  3. $barney = "Duży fioletowy dinozaur.";
  4. session_register("barney");
  5.  
  6. // Od PHP 4.1.0 Preferowane jest użycie $_SESSION
  7. $_SESSION["zim"] = "Najeźdźca z innej planety.";
  8.  
  9. // Stara metoda opiera się o $HTTP_SESSION_VARS
  10. $HTTP_SESSION_VARS["spongebob"] = "Ma kwadratowe spodnie.";
  11. ?>


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post
golaod
post
Post #6





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

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


IP+user_agent. Wymyśl coś możliwości masz pełno. Poza tym głupota by mógł głosować nie zarejestrowany bo właśnie w ten sposób utrudniasz sobie życie biggrin.gif
Jak wspomniałem wcześniej, tabela dla gości gdzie zapisujesz ip+agent'a oczywiście staraj się też tworzyć cookie na ileś tam dni/miesięcy bo jeżeli się uda no to wtedy wiesz, że ktoś głosował bo w cookie o nazwie danego zdjęcia będzie zamieszczona informacja "glosowal". Jednak gdy cookie zabronione patrz zdanie wcześniej.
Go to the top of the page
+Quote Post

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: 21.08.2025 - 17:53