Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP]Problem ze skryptem
imatix
post
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 19.10.2008

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


Znowu mam problem ze skryptem do glosowania, po kliknieciu na ocene nic sie nie dzieje:
Mysle ze w petli jest blad, moglby ktos pomoc naprawic?
Skrypt na stronie: http://www.muzycznalista.yoyo.pl/

  1. <?php
  2. // Lączenie z baza danych
  3. mysql_connect("mysql1.yoyo.pl", "xxxx", "xxxx") or die(mysql_error());
  4. mysql_select_db("xxxxx") or die(mysql_error());
  5.  
  6. //Ten kod się włącza tylko gdy uzytkownik kliknie na link do głosowania
  7. if ( $_GET['mode']=="vote")
  8. {
  9. $voted = $_GET['voted'];
  10. $id= $_GET['id'];
  11.  
  12. //Kod pozwalający głosować każdemu tlyko raz.
  13. $cookie = "Mysite$id";
  14. if(isset($_COOKIE[$cookie]))
  15. {
  16. Echo "Już oddałes/as głos na ten utwór. Można głosować tylko raz. <p>";
  17. }
  18.  
  19. //Wstawienie cookie
  20. else
  21. {
  22. $month = 2592000 + time();
  23. setcookie($cookie, 'Voted', $month);
  24.  
  25.  
  26. //Aktualizacja informacji o głosie przez dodanie 1 to całego głosowania i dodanie ich głosu do całosci
  27. mysql_query ("UPDATE vote SET total = total+$voted, votes = votes+1 WHERE id = $id");
  28. Echo "Głos został oddany. <p>";
  29. }
  30. }
  31.  
  32. //Wstawienie informacji z MySQL
  33. $data = mysql_query("SELECT *, total / votes AS average FROM vote ORDER BY average DESC LIMIT 0,50") or die(mysql_error());
  34.  
  35. //Zapętlenie skryptu
  36. for($i = 1; $ratings = mysql_fetch_array( $data ); ++$i)
  37. {
  38.  
  39. //Wykonawca
  40. Echo "<div id=lista><TABLE border=0 cellspacing=0 cellpadding=0><TR><TD><IMG SRC=img/nuta.jpg ALT=nuta></TD>
  41. <TD width=350px;>" . $i . ". ".$ratings['wykonawca']." - ";
  42.  
  43. //Tytuł piosenki
  44. Echo "" .$ratings['tytul']."</TD>";
  45.  
  46. //Link do YouTube
  47. Echo "<TD width=20px;><IMG SRC=img/strzalka.png BORDER=0 ></TD><TD width=40px;><a href=" .$ratings['adres']." target=_blank><FONT SIZE=2>Play</a></TD>";
  48.  
  49.  
  50. //Głosy na 1,2,3,4,5
  51. Echo "<TD width=150px;><FONT SIZE=2>Głosuj: ";
  52. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=1&id=".$ratings[id].">1</a> | ";
  53. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=2&id=".$ratings[id].">2</a> | ";
  54. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=3&id=".$ratings[id].">3</a> | ";
  55. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=4&id=".$ratings[id].">4</a> | ";
  56. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=5&id=".$ratings[id].">5</a> <TD/>";
  57.  
  58. //Wstawienie średniej arytmetycznej
  59. $current = $ratings['average'];
  60. Echo "<TD width=50px;>Śr. " . round($current, 1) . "</TD> </TR></TABLE></FONT></div>";
  61.  
  62. }
  63.  
  64. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Skoro juz uzywasz die(mysql_error()) to uzywaj tego wszedzie....
  1. mysql_query ("UPDATE vote SET total = total+$voted, votes = votes+1 WHERE id = $id") or die(mysql_error());
Go to the top of the page
+Quote Post
imatix
post
Post #3





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 19.10.2008

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


Zmienilem ale nadal nie dziala, oceny sie sie zmieniaja.
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Błąd też się nie pojawia?

A teraz co się pojawia:
  1. echo 'juchu.... myslmy troche:';
  2. echo "UPDATE vote SET total = total+$voted, votes = votes+1 WHERE id = $id";
  3. echo "Widac mnie?";
  4. mysql_query ("UPDATE vote SET total = total+$voted, votes = votes+1 WHERE id = $id") or die(mysql_error());
Go to the top of the page
+Quote Post
imatix
post
Post #5





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 19.10.2008

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


Blad sie nie pojawia, i te echo tez nie.

Jak sie kliknie to : juchu.... myslmy troche:UPDATE vote SET total = total+4, votes = votes+1 WHERE id = 21Widac mnie?
Go to the top of the page
+Quote Post
phpion
post
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Nie odpowiem Ci na pytanie ale zasugeruję pewne zabezpieczenie. Co zrobi wejście pod ten link?
http://www.muzycznalista.yoyo.pl/index.php...oted=5&id=1

Doda 5 punktów do utworu 1, tak? Tak (przynajmniej takie jest założenie). Co natomiast zrobi taki link?

http://www.muzycznalista.yoyo.pl/index.php...=99999&id=1

Nabije głosy. Pomijam już fakt podatności na SQL Injection (zaprzyjaźnij się z mysql_escape_string), jednak wypadałoby sprawdzać co użytkownik "klika".
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Jak sie kliknie to : juchu.... myslmy troche:UPDATE vote SET total = total+4, votes = votes+1 WHERE id = 21Widac mnie?
No i ok. Zapytanie nie zwraca bledów. Patrzyles czy dane w bazie się zmienily?
Go to the top of the page
+Quote Post
imatix
post
Post #8





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 19.10.2008

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


Nic sie nie zmienia.
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Hmmm.... pokaż cały kod po zmianach jakie zrobiłeś.
Go to the top of the page
+Quote Post
imatix
post
Post #10





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 19.10.2008

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


  1. <?php
  2. // Lączenie z baza danych
  3. mysql_connect("xxxx", "xxxx", "xxx") or die(mysql_error());
  4. mysql_select_db("xxxx3") or die(mysql_error());
  5.  
  6. //Ten kod się włącza tylko gdy uzytkownik kliknie na link do głosowania
  7. if ( $_GET['mode']=="vote")
  8. {
  9. $voted = $_GET['voted'];
  10. $id= $_GET['id'];
  11.  
  12. //Kod pozwalający głosować każdemu tlyko raz.
  13. $cookie = "Mysite$id";
  14. if(isset($_COOKIE[$cookie]))
  15. {
  16. Echo "Już oddałes/as głos na ten utwór. Można głosować tylko raz. <p>";
  17. }
  18.  
  19. //Wstawienie cookie
  20. else
  21. {
  22. $month = 2592000 + time();
  23. setcookie($cookie, 'Voted', $month);
  24.  
  25.  
  26. //Aktualizacja informacji o głosie przez dodanie 1 to całego głosowania i dodanie ich głosu do całosci
  27. echo 'juchu.... myslmy troche:';
  28. echo "UPDATE vote SET total = total+$voted, votes = votes+1 WHERE id = $id";
  29. echo "Widac mnie?";
  30. mysql_query ("UPDATE vote SET total = total+$voted, votes = votes+1 WHERE id = $id") or die(mysql_error());
  31.  
  32. }
  33. }
  34.  
  35. //Wstawienie informacji z MySQL
  36. $data = mysql_query("SELECT *, total / votes AS average FROM vote ORDER BY average DESC LIMIT 0,50") or die(mysql_error());
  37.  
  38. //Zapętlenie skryptu
  39. for($i = 1; $ratings = mysql_fetch_array( $data ); ++$i)
  40. {
  41.  
  42. //Wykonawca
  43. Echo "<div id=lista><TABLE border=0 cellspacing=0 cellpadding=0><TR><TD><IMG SRC=img/nuta.jpg ALT=nuta></TD>
  44. <TD width=350px;><FONT SIZE=2>" . $i . ". ".$ratings['wykonawca']." - ";
  45.  
  46. //Tytuł piosenki
  47. Echo "" .$ratings['tytul']."</TD>";
  48.  
  49. //Link do YouTube
  50. Echo "<TD width=20px;><IMG SRC=img/strzalka.png BORDER=0 ></TD><TD width=40px;><a href=" .$ratings['adres']." target=_blank><FONT SIZE=2>Play</a></TD>";
  51.  
  52.  
  53. //Głosy na 1,2,3,4,5
  54. Echo "<TD width=150px;><FONT SIZE=2>Głosuj: ";
  55. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=1&id=".$ratings[id].">1</a> | ";
  56. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=2&id=".$ratings[id].">2</a> | ";
  57. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=3&id=".$ratings[id].">3</a> | ";
  58. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=4&id=".$ratings[id].">4</a> | ";
  59. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=5&id=".$ratings[id].">5</a> <TD/>";
  60.  
  61. //Wstawienie średniej arytmetycznej
  62. $current = $ratings['average'];
  63. Echo "<TD width=50px;>Śr. " . round($current, 1) . "</TD> </TR></TABLE></FONT></div>";
  64.  
  65. }
  66.  
  67. ?>


Kiedys dzialal ten skrypt ale nie wiem kiedy i nie wiem co zmienilem ze przestal dzialac.

Jeszcze dodam to co w mysql:
  1. --
  2. -- Struktura tabeli dla `vote`
  3. --
  4.  
  5. CREATE TABLE `vote` (
  6. `id` int(4) NOT NULL AUTO_INCREMENT,
  7. `wykonawca` varchar(30) character SET utf8 collate utf8_polish_ci DEFAULT NULL,
  8. `tytul` varchar(30) character SET utf8 collate utf8_polish_ci NOT NULL,
  9. `adres` text NOT NULL,
  10. `gatunek` SET('pop','rock','techno','rap') NOT NULL,
  11. `nowe` SET('tak','nie') NOT NULL,
  12. `polskie` SET('tak','nie') NOT NULL,
  13. `total` int(11) DEFAULT NULL,
  14. `votes` int(11) DEFAULT NULL,
  15. PRIMARY KEY (`id`)
  16. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=216 ;


Nikt na tym forum nie wie co jest zle w tym skrypcie?(IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif)

Dobra mam wiem (IMG:style_emoticons/default/biggrin.gif)
Przy każdym rekordzie mialem zaznaczone null, wystarczy wszedzie je odhaczyc.
Jak to zrobic automatycznie zeby z kolumn votes i total automatycznie odchaczylo null?
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Przy każdym rekordzie mialem zaznaczone null
Hehe (IMG:style_emoticons/default/smile.gif)

  1. UPDATE vote SET total = 0, votes = 0
Go to the top of the page
+Quote Post
croc
post
Post #12





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Ustaw polom total i votes atrybut not null.

Zwróć też uwagę na post phpiona - poruszył ważną kwestię. Na chwilę obecną twój skrypt jest rajem dla psotników (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
imatix
post
Post #13





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 19.10.2008

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


Thx
No racja, bez problemu da sie wpisac ocene 9999 ci mija sie z celem.
Jak zmienic ten kod przy użyciu funkcji mysql_escape_string?

  1. <?php
  2. // Lączenie z baza danych
  3. mysql_connect("mysql1.yoyo.pl", "xxxxx", "xxxxx") or die(mysql_error());
  4. mysql_select_db("xxxxxx") or die(mysql_error());
  5.  
  6. //Ten kod się włącza tylko gdy uzytkownik kliknie na link do głosowania
  7. if ( $_GET['mode']=="vote")
  8. {
  9. $voted = $_GET['voted'];
  10. $id= $_GET['id'];
  11.  
  12. //Kod pozwalający głosować każdemu tlyko raz.
  13. $cookie = "Mysite$id";
  14. if(isset($_COOKIE[$cookie]))
  15. {
  16. Echo "Już oddałes/as głos na ten utwór. Można głosować tylko raz. <p>";
  17. }
  18.  
  19. //Wstawienie cookie
  20. else
  21. {
  22. $month = 2592000 + time();
  23. setcookie($cookie, 'Voted', $month);
  24.  
  25.  
  26. //Aktualizacja informacji o głosie przez dodanie 1 to całego głosowania i dodanie ich głosu do całosci
  27. mysql_query ("UPDATE vote SET total = total+$voted, votes = votes+1 WHERE id = $id");
  28. Echo "Głos został oddany. <p>";
  29. }
  30. }
  31.  
  32. //Wstawienie informacji z MySQL
  33. $data = mysql_query("SELECT *, total / votes AS average FROM vote ORDER BY average DESC LIMIT 0,300") or die(mysql_error());
  34.  
  35. //Zapętlenie skryptu
  36. for($i = 1; $ratings = mysql_fetch_array( $data ); ++$i)
  37. {
  38.  
  39. //Wykonawca
  40. Echo "<div id=lista><TABLE border=0 cellspacing=0 cellpadding=0><TR><TD><IMG SRC=img/nuta.jpg ALT=nuta></TD>
  41. <TD width=350px;><FONT SIZE=2>" . $i . ". ".$ratings['wykonawca']." - ";
  42.  
  43. //Tytuł piosenki
  44. Echo "" .$ratings['tytul']."</TD>";
  45.  
  46. //Link do YouTube
  47. Echo "<TD width=20px;><IMG SRC=img/strzalka.png BORDER=0 ></TD><TD width=40px;><a href=" .$ratings['adres']." target=_blank><FONT SIZE=2>Play</a></TD>";
  48.  
  49.  
  50. //Głosy na 1,2,3,4,5
  51. Echo "<TD width=150px;><FONT SIZE=2>Głosuj: ";
  52. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=1&id=".$ratings[id].">1</a> | ";
  53. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=2&id=".$ratings[id].">2</a> | ";
  54. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=3&id=".$ratings[id].">3</a> | ";
  55. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=4&id=".$ratings[id].">4</a> | ";
  56. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=5&id=".$ratings[id].">5</a> <TD/>";
  57.  
  58. //Wstawienie średniej arytmetycznej
  59. $current = $ratings['average'];
  60. Echo "<TD width=50px;>Śr. " . round($current, 1) . "</TD> </TR></TABLE></FONT></div>";
  61.  
  62. }
  63.  
  64. ?>
Go to the top of the page
+Quote Post
croc
post
Post #14





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Samo mysql_escape_string tutaj wiele nie pomoże. Musisz przefiltrować te dane. Podpowiem ci jak to zrobić, ale tym razem nie chce mi się dawać gotowego kodu (IMG:style_emoticons/default/tongue.gif)

Musisz zrobić zmienną, która będzie określała czy ocenianie może się odbyć. Może to być np. domyślnie pusta zmienna z komunikatem. Nic nie stoi na przeszkodzie, by przechwytywała ona również błąd wynikający z obecności pliku cookie, wtedy system zacznie nabierać kształtu. Podpowiem jednak dokładnie jak można elegancko napisać filtr dla zmiennej $_GET['voted'] (najlepiej to zmień jej nazwę np. na rating, bo voted jest mało intuicyjna).
  1. switch($_GET['voted']) {
  2. case 1:
  3. case 2:
  4. case 3:
  5. case 4:
  6. case 5:
  7. $voted = $_GET['voted'];
  8. break;
  9. default:
  10. $error = 'Nieprawidłowa ocena.';
  11. }


To jest bezpieczna filtracja, bo jeśli zmienna z $_GET będzie zawierała nieprawidłową wartość, zmienna $voted w ogóle nie będzie istniała i nigdy omyłkowo jej nie użyjesz.
Go to the top of the page
+Quote Post
imatix
post
Post #15





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 19.10.2008

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


Ale to nie pomoglo, nadal mozna wpisywac znaki 999999 itd.
Jak napisac ze wartosc "voted" nalezy do naturalnych mniejszych od 6 ?
Go to the top of the page
+Quote Post
nospor
post
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Ale to nie pomoglo,
Bo pewnie źle to wstawiles. Pokaz kod po tej "wstawce"
Go to the top of the page
+Quote Post
imatix
post
Post #17





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 19.10.2008

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


  1. <?php
  2. // Lączenie z baza danych
  3. mysql_connect("mysql1.yoyo.pl", "xxxx", "xxxxx") or die(mysql_error());
  4. mysql_select_db("xxxxxxx") or die(mysql_error());
  5.  
  6. //Ten kod się włącza tylko gdy uzytkownik kliknie na link do głosowania
  7. if ( $_GET['mode']=="vote")
  8. {
  9. $voted = $_GET['voted'];
  10. $id= $_GET['id'];
  11.  
  12. //Kod pozwalający głosować każdemu tlyko raz.
  13. $cookie = "Mysite$id";
  14. if(isset($_COOKIE[$cookie]))
  15. {
  16. Echo "Już oddałes/as głos na ten utwór. Można głosować tylko raz. <p>";
  17. }
  18.  
  19. //Wstawienie cookie
  20. else
  21. {
  22. $month = 2592000 + time();
  23. setcookie($cookie, 'Voted', $month);
  24.  
  25.  
  26. //Aktualizacja informacji o głosie przez dodanie 1 to całego głosowania i dodanie ich głosu do całosci
  27. mysql_query ("UPDATE vote SET total = total+$voted, votes = votes+1 WHERE id = $id");
  28. Echo "Głos został oddany. <p>";
  29. }
  30. }
  31.  
  32. //Wstawienie informacji z MySQL
  33. $data = mysql_query("SELECT *, total / votes AS average FROM vote ORDER BY average DESC LIMIT 0,300") or die(mysql_error());
  34.  
  35. //Zapętlenie skryptu
  36. for($i = 1; $ratings = mysql_fetch_array( $data ); ++$i)
  37. {
  38.  
  39. //Wykonawca
  40. Echo "<div id=lista><TABLE border=0 cellspacing=0 cellpadding=0><TR><TD><IMG SRC=img/nuta.jpg ALT=nuta></TD>
  41. <TD width=350px;><FONT SIZE=2>" . $i . ". ".$ratings['wykonawca']." - ";
  42.  
  43. //Tytuł piosenki
  44. Echo "" .$ratings['tytul']."</TD>";
  45.  
  46. //Link do YouTube
  47. Echo "<TD width=20px;><IMG SRC=img/strzalka.png BORDER=0 ></TD><TD width=40px;><a href=" .$ratings['adres']." target=_blank><FONT SIZE=2>Play</a></TD>";
  48.  
  49. switch($_GET['voted']) {
  50. case 1:
  51. case 2:
  52. case 3:
  53. case 4:
  54. case 5:
  55. $voted = $_GET['voted'];
  56. break;
  57. default:
  58. $error = 'Nieprawidłowa ocena.';
  59. }
  60.  
  61. //Głosy na 1,2,3,4,5
  62. Echo "<TD width=150px;><FONT SIZE=2>Głosuj: ";
  63. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=1&id=".$ratings[id].">1</a> | ";
  64. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=2&id=".$ratings[id].">2</a> | ";
  65. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=3&id=".$ratings[id].">3</a> | ";
  66. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=4&id=".$ratings[id].">4</a> | ";
  67. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=5&id=".$ratings[id].">5</a> <TD/>";
  68.  
  69. //Wstawienie średniej arytmetycznej
  70. $current = $ratings['average'];
  71. Echo "<TD width=50px;>Śr. " . round($current, 1) . "</TD> </TR></TABLE></FONT></div>";
  72.  
  73. }
  74.  
  75. ?>
Go to the top of the page
+Quote Post
croc
post
Post #18





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Trudno żeby działało, skoro jest w ogóle w złej części. Ten switch ma być w sekcji, która jest wykonywana podczas głosowania, a nie podczas wyświetlania danych. Próbuj dalej (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
imatix
post
Post #19





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 19.10.2008

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


No wiec wydaje mi sie ze ten dziala ^^:
Czy jest odporny na sql injection?

  1. <?php
  2. // Lączenie z baza danych
  3. mysql_connect("mysql1.yoyo.pl", "xxxxx", "xxxx") or die(mysql_error());
  4. mysql_select_db("xxxxx") or die(mysql_error());
  5.  
  6. //Ten kod się włącza tylko gdy uzytkownik kliknie na link do głosowania
  7. if ( $_GET['mode']=="vote")
  8. {
  9. switch($_GET['voted']) {
  10. case 1:
  11. case 2:
  12. case 3:
  13. case 4:
  14. case 5:
  15. $voted = $_GET['voted'];
  16. break;
  17. default:
  18. $error = 'Nieprawidłowa ocena.';
  19. }
  20. $id= $_GET['id'];
  21.  
  22. //Kod pozwalający głosować każdemu tlyko raz.
  23. $cookie = "Mysite$id";
  24. if(isset($_COOKIE[$cookie]))
  25. {
  26. Echo "Już oddałes/as głos na ten utwór. Można głosować tylko raz. <p>";
  27. }
  28.  
  29. //Wstawienie cookie
  30. else
  31. {
  32. $month = 2592000 + time();
  33. setcookie($cookie, 'Voted', $month);
  34.  
  35.  
  36. //Aktualizacja informacji o głosie przez dodanie 1 to całego głosowania i dodanie ich głosu do całosci
  37. mysql_query ("UPDATE vote SET total = total+$voted, votes = votes+1 WHERE id = $id");
  38. Echo "Głos został oddany. <p>";
  39. }
  40. }
  41.  
  42. //Wstawienie informacji z MySQL
  43. $data = mysql_query("SELECT *, total / votes AS average FROM vote ORDER BY average DESC LIMIT 0,300") or die(mysql_error());
  44.  
  45. //Zapętlenie skryptu
  46. for($i = 1; $ratings = mysql_fetch_array( $data ); ++$i)
  47. {
  48.  
  49. //Wykonawca
  50. Echo "<div id=lista><TABLE border=0 cellspacing=0 cellpadding=0><TR><TD><IMG SRC=img/nuta.jpg ALT=nuta></TD>
  51. <TD width=350px;><FONT SIZE=2>" . $i . ". ".$ratings['wykonawca']." - ";
  52.  
  53. //Tytuł piosenki
  54. Echo "" .$ratings['tytul']."</TD>";
  55.  
  56. //Link do YouTube
  57. Echo "<TD width=20px;><IMG SRC=img/strzalka.png BORDER=0 ></TD><TD width=40px;><a href=" .$ratings['adres']." target=_blank><FONT SIZE=2>Play</a></TD>";
  58.  
  59.  
  60.  
  61. //Głosy na 1,2,3,4,5
  62. Echo "<TD width=150px;><FONT SIZE=2>Głosuj: ";
  63. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=1&id=".$ratings[id].">1</a> | ";
  64. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=2&id=".$ratings[id].">2</a> | ";
  65. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=3&id=".$ratings[id].">3</a> | ";
  66. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=4&id=".$ratings[id].">4</a> | ";
  67. Echo "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=5&id=".$ratings[id].">5</a> <TD/>";
  68.  
  69. //Wstawienie średniej arytmetycznej
  70. $current = $ratings['average'];
  71. Echo "<TD width=50px;>Śr. " . round($current, 1) . "</TD> </TR></TABLE></FONT></div>";
  72.  
  73. }
  74.  
  75. ?>
Go to the top of the page
+Quote Post
croc
post
Post #20





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Jeszcze nie. Pozostała zmienna ID. Możesz zamieniać ją na liczbę, dzięki czemu nikt nie wpisze złośliwego kodu.
Czyli zamiast tego:
  1. $id= $_GET['id'];


To:
  1. $id= intval($_GET['id']);


I spróbuj zrobić obsługę błędów z tą zmienną $error.
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: 24.08.2025 - 10:33