Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem ze skryptem
Forum PHP.pl > Forum > Przedszkole
imatix
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. ?>
nospor
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());
imatix
Zmienilem ale nadal nie dziala, oceny sie sie zmieniaja.
nospor
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());
imatix
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?
phpion
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".
nospor
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?
imatix
Nic sie nie zmienia.
nospor
Hmmm.... pokaż cały kod po zmianach jakie zrobiłeś.
imatix
  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?questionmark.gifquestionmark.gifquestionmark.gif

Dobra mam wiem 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?
nospor
Cytat
Przy każdym rekordzie mialem zaznaczone null
Hehe smile.gif

  1. UPDATE vote SET total = 0, votes = 0
croc
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 smile.gif
imatix
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. ?>
croc
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 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.
imatix
Ale to nie pomoglo, nadal mozna wpisywac znaki 999999 itd.
Jak napisac ze wartosc "voted" nalezy do naturalnych mniejszych od 6 ?
nospor
Cytat
Ale to nie pomoglo,
Bo pewnie źle to wstawiles. Pokaz kod po tej "wstawce"
imatix
  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. ?>
croc
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 smile.gif
imatix
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. ?>
croc
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.
imatix
A ten kod jest bezpieczny?
  1. <?
  2.  
  3. $nick = addslashes(htmlspecialchars ($_POST['nick']));
  4. $tresc = addslashes(nl2br(htmlspecialchars ($_POST['tresc'])));
  5.  
  6. if ($nick && $tresc) {
  7. mysql_connect("mysql1.yoyo.pl", "xxxxx", "xxxx") or
  8. die ("Nie można połączyć się z MySQL");
  9. mysql_select_db ("xxxxx") or
  10. die ("Nie można połączyć się z bazą");
  11. $query = "INSERT INTO shoutbox (nick, tresc, "." data) VALUES ('$nick', '$tresc', "." now());";
  12. $wynik = mysql_query ($query);
  13. print "Nowy komentarz został dodany biggrin.gif";
  14.  
  15. } else {
  16. print "<FORM METHOD=POST><B>Nick: </B><BR>";
  17. print "<INPUT TYPE=\"text\" NAME=\"nick\" VALUE=\"$nick\" ";
  18. print "<B><BR><BR>Treść:</B><BR><TEXTAREA NAME=\"tresc\" ";
  19. print "ROWS=3 COLS=20>$tresc</TEXTAREA><BR>";
  20. print "<INPUT TYPE=\"submit\" VALUE=\"Wyslij\">";
  21. print "</FORM>";
  22. }
  23.  
  24. ?>
  25.  
  26. <?
  27. mysql_connect("mysql1.yoyo.pl", "xxxxx", "xxxx") or
  28. die ("Nie można połączyć się z MySQL");
  29. mysql_select_db ("dxxxxxx") or
  30. die ("Nie można połączyć się z bazą cwphp");
  31.  
  32. $wynik = mysql_query ("SELECT * FROM shoutbox WHERE ok=0 ".
  33. "ORDER BY id DESC LIMIT 0,10");
  34. while ($wynik && $rekord = mysql_fetch_assoc ($wynik)) {
  35. print "<DIV id=shoutbox2><DIV id=shoutbox-tytul><B>".$rekord['nick']. "</B>, ".$rekord['data']."</DIV>&nbsp;"
  36. .$rekord['tresc']."";
  37. print "</DIV>\n";
  38. }
  39. ?>
croc
Nie powinieneś zapisywać danych przepuszczonych przez htmlspecialchars, bo tracisz informację. To powinno zostać użyte przy odczycie. Po drugie, zrób sobie taki test: wpisz do pola treść wartość np. "ale'cool\fajnie", a pole nick zostaw puste. Kilka razy kliknij na "Wyślij". I co widzisz?
imatix
Nic sie nie dzieje jak tak robie.
croc
To dziwne, bo wielokrotnie wywołujesz funkcję addslashes na tym samym argumencie. Powinna rozmnażać ci się liczba slashy.
imatix
Mam takie pytanko:
Mam na ponad 60 stronach w skryptach wpisane adresy hasla bazy danych i chcialbym przeniesc na inny hosting, jest jakis program ktory to wyszuka i zmieni automatycznie te dane?
croc
To jakoś dziwnie napisałeś ten system, że przy zmianie hostingu musisz zmieniać wszędzie osobno ścieżkę. Pokażesz jak przechowujesz hasło? (oczywiście hasła nie podawaj tongue.gif).

A żeby zmienić to np. zwykły notepad++, otwierasz wszystkie pliki naraz, ctrl+h, zmieniasz frazę i naciskasz, że ma zamienić wszędzie.
lobopol
Dlatego robi się oddzielny plik z pełną konfiguracją i jego się dołącza do skryptów, możesz ze wszystkich skryptów zrobić projekt w netbeans ctrl+shift+h i można zmienić wszystkie powtórzenia we wszystkich plikach należących do projektu.
imatix
na kazdej stronie mam troche zmieniony ten kod znaczy tak 1 wyraz tongue.gif
Normalnie reszte strony tworze uzywajac include, ale chyba kodu php nie da sie includowac.

  1. mysql_connect("xxxx", "xxxx", "xxxxx") or
  2. die ("Nie można połączyć się z MySQL");
  3. mysql_select_db ("muzyczna-lista_za_pl") or
  4. die ("Nie można połączyć się z bazą cwphp");
croc
Cytat(imatix @ 20.05.2010, 09:06:46 ) *
ale chyba kodu php nie da sie includowac.


Eee??
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.