[PHP] System komentarzy

0

Sciągnąłem sobie system komentarzy i kiedyś go używałem i działał dobrze :)
Kod ten jest dostępny za free jakby co. Zmodyfikowałem go dla własnych potrzeb, no i tu pojawia się problem.. Na dysku (mam serwer apache) chodzi wszystko dobrze, ale zaś na serwerze, komentarze się nie dodają... A przy okazji chciałbym tutaj zaczerpnąć waszej wiedzy, żeby go dostosować troszeczkę :p.

"><?php
$art = 1;
 mysql_connect ("xxxx", "xxxxx", "xxxxxx") or //staramy polaczyc sie z baza danych
 die ("Nie mozna polaczyc sie z baza MySQL"); //jezeli to sie nie uda wyswietlamy
 mysql_select_db ("xxxxxx") or //wybieramy baze
 die ("Nie mozna polaczyc sie z baza komentarze");
print "<div class=\"dhtmlgoodies_question\"><a>Komentarze";
  $res = mysql_query("SELECT * FROM komentarze WHERE art=$art");
  $ile = mysql_num_rows($res);
  print" [$ile]";
print "</a></div>";
print "<div class=\"dhtmlgoodies_answer\" align=\"left\">";
print "<div>";
  if(!isset($id)) { //odbieramy wartosc zmiennej id
 // print"<A HREF=\"testdiv.php?id=nowy&art=$art\">Dodaj komentarz</A><BR><BR>"; //jezeli zmienna id nie ma przypisanej wartosci
 $wynik = mysql_query ("SELECT * FROM komentarze WHERE art=$art order by nr desc;"); //wybieramy zatwierdzone komentarze i segregujemy wedlug pola nr od wartosci najwiekszej do najmniejszej
 print"<!-- UL-->";
 while ($rekord = mysql_fetch_array ($wynik, MYSQL_NUM)) { //mysql_fetch_array() zwraca nam tablice indeksowana numerycznie, gdzie indeks zaczyna sie od 0 (MYSQL_NUM)
 print "<br>";
 print "<!-- LI--><b><font color=\"#000000\">".$rekord[1] = stripslashes($rekord[1])."</font></b> :: <font color=\"#485566\">".$rekord[3]."</font><br>".$rekord[2] = stripslashes($rekord[2])."<!-- /LI--><br>"; //w petli while wyswietlamy po kolei wszytskie komentarze w kolejnosci tresc, pseudonim (nick), data
 }
 print"<!-- /UL-->";
 //}else if ($id=='nowy') { //jezeli zmienna id zawiera wyraz nowy
print "<br>"; 
print "<B><font color=\"#000000\"><BR><img src=\"images/addcomm.png\" width=\"15\" height=\"15\" align=\"absmiddle\"> Dodaj komentarz</font><BR></B>";
 print "<FORM METHOD=POST><INPUT TYPE=\"hidden\" NAME=\"id\" VALUE=\"1\">";
 print "Nick:<BR><INPUT TYPE=\"text\" NAME=\"nick\" VALUE=\"$nick\" SIZE=40><BR>";
// print "Tresc:<BR><TEXTAREA NAME=\"tresc\" ";
 //print "ROWS=5 COLS=35 MAX=20>$tresc</TEXTAREA><BR>";
 print "<div id=\"ile\">Komentarz (160):</div>";
 print "<textarea name=\"tresc\" cols=\"30\" rows=\"5\" onkeyup=\"zliczaj_znaki(this.form)\" onkeydown=\"zliczaj_znaki(this.form)\">$tresc</textarea><br>";
 print "<INPUT TYPE=\"submit\" VALUE=\"Dodaj\">";
 print "</FORM>";
 print "<BR>";
 print "<BR>";
 }else if ($id=='1') { // jezeli zmienna id zawiera wartosc dodaj
 //dodajemy komentarz do bazy
 $tresc = addslashes(nl2br(htmlentities ($tresc))); //poniewaz nie mozna ufac danym wprowadzanym przez uzytkowników funkcja addslashes dodajemy ukosniki () w miejscach gdzie napotkanym na apostrof (&#8216;), usuwamy je potem funkcja stripslahes przy wypisywaniu komentarzy, dodatkowo funkcja nl2br zamienia znaki konca linii na tag br
 $nick = addslashes(htmlentities ($nick));
  
 if ($tresc && $nick) { //jezeli pola tresc i pseudonim sa uzupelnione
$zapytanie = "INSERT INTO komentarze (tresc, nick, "." data, art) VALUES ('$tresc', '$nick', "." now(), '$art');";
 $wynik = mysql_query ($zapytanie); //dodajemy wtedy dane do bazy wraz z aktualna data i godzina &#8211; funkcja now()<br><br>
 print"<img src=\"images/info.png\" width=\"15\" height=\"15\" align=\"absmiddle\"> Twój komentarz zostal dodany.<br>"; //jezeli wszystko przebiegnie bez problemów wyswietlamy komunikat
 print"<a href=\"testdiv.php\">Powrót</a>";
 }else{ //jezeli jednak nie wyswietlamy stosowna informacje
 print"<b><font color=\"red\"><img src=\"images/excl.png\" width=\"15\" height=\"15\" align=\"absmiddle\"> Wszystkie pola musza byc wypelnione!</font><br></b>";
 print"<a href=\"testdiv.php\">Powrót</a>";
 }
 }else { //jezeli zmienna id zawiera inna wartosc niz dodaj lub nowy wyswietlamy wszystkie zatwierdzone komentarze
} 
print "</div>";
print "</div>";
?>

No i teraz po pierwsze chciałbym zrezygnować z tego:

print"<img src=\"images/info.png\" width=\"15\" height=\"15\" align=\"absmiddle\"> Twój komentarz zostal dodany.<br>"; //jezeli wszystko przebiegnie bez problemów wyswietlamy komunikat
 print"<a href=\"testdiv.php\">Powrót</a>";
 }else{ //jezeli jednak nie wyswietlamy stosowna informacje
 print"<b><font color=\"red\"><img src=\"images/excl.png\" width=\"15\" height=\"15\" align=\"absmiddle\"> Wszystkie pola musza byc wypelnione!</font><br></b>";
 print"<a href=\"testdiv.php\">Powrót</a>";

po prostu zamienić te komunikaty na alerta, albo jeszcze lepiej, żeby otworzyła się strona.

Nie mogę zrezygnować ze stałej ART, bo dla mnie jest to wygodne, bo wklejam ten kod gdzie chcę na stronie tam, gdzie chce mieć konkretne komentarze :)

Dużo w tym kodzie skomentowałem.. Sorki, ale dla mnie PHP jest jak spaghetti :< dlatego wkleiłem cały.

0

Boże... Ja chyba w końcu napiszę w dziale PHP w Kojocie co myślę o register_globals, bo po prostu szlag mnie trafia jak na to patrzę. Oprócz tego szkolnego błędu zastosowania śmiertelnie niebezpiecznej opcji za pomocą której nawet Joomla można zhaczyć przez Remote Code Injection (RCI) to do tego taki zapis:

print"witaj";

mówi sam za siebie.

Rozwiązania masz dwa. Zmień ten skrypt w cholerę albo podaj mi adres strony w celu sprawdzenia w jakim przedziale milisekund się zmieszczę z rozrzuceniem jej w trzy du...

0

Ehhh mam zmieniać kiedy ten skrypt rozumiem, bo nie uczyłem się PHP i a nie wiem skąd wziąć inny darmowy :/
Nie mam pojęcia do czego służy ten injection :(
A strona jest dobra, zapewniam Cie bo HTML'ka i JS mam dobrze opracowanego ;-P
W dodatku robiłem stronke w Dreamweaver.

0

To podaj adres. Pokażę Ci, jak źle się nauczyłeś, a potem Ci wytłumaczę jak przeprowadziłem atak krok po kroku.
Edit: A nie sorry, nie masz jak bo tylko na lokalnym serwerze działa. W takim razie ja 'nakręcę film'.

0

Co z tego, że mi ją zaatakujesz? :|
Nie pisze strony dla jakiejś firmy, gdzie są chronione dane osobowe etc.
Pobaw się inną stroną jak Ci to sprawi przyjemność ;-P

0

No człowieku, jak tutaj można ci cały serwer przejąć za pomocą tego kodu. Polecam edukację poprzez przeczytanie artykułów o $_GET, $_POST i $_SESSION, bo to czego używasz zwie się register_globals zostało wyłączone na każdym szanującym się serwerze i jest cholernie niebezpieczne oraz uznane przez twórców PHP za PRZESTARZAŁE!

0

Wreszcie konkret z Twojej strony :)
Dziękuje.

0

Próbowałem 'alternatywnych' metod nauczania to nikt mnie nie rozumiał xD

1 użytkowników online, w tym zalogowanych: 0, gości: 1