Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Czemu Nie Obsluguje?
-Gość_kuba-
post 4.09.2004, 14:21:42
Post #1





Goście







mam problem z formularzem. no ale moze po kolei...

mam plik autor.php, w ktorym mam dwa linki:
Kod
<a href="autor2.php?link=komentarze">0</a>
<a href="autor2.php?link=dodaj">dodaj</a>

oba linki prowadza, zreszta co widac, do tego samego pliku - autor2.php.
w pliku tym mam skrypty, ktore w zaleznosci od wartosci zmiennej $link includuja odpowiedni pliki.
problem twki w tym, ze pliki sa includowane poprawnie, bo jezeli $link == 'dodaj' to wyswietla mi formularz, ale nie chce go obslugiwac. kod formularza i obslugujacy go sa includowane.
po prawidlowym wypelnieniu powinno mnie przeniesc do autor2.php?link=komentarze, a po blednym, powinny pojawic sie informacje o bledzie, a tymczasem przenosi mnie do... autor.php.
dlaczego tak jest? gdzie jest blad?
ponizej jest caly kod wszystkich plikow

autor2.php
  1. <?php
  2. if (!isset($_GET['link'])) {
  3. header (&#092;"Location: http://\" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . \"/autor.php\");
  4. exit();
  5. } else {
  6. switch (($_GET['link'])) {
  7. case 'dodaj':
  8. $strona = 'autor - dodaj komentarz';
  9. break;
  10. case 'komentarze':
  11. $strona = 'autor - komentarze';
  12. break;
  13. }
  14. }
  15.  
  16. //koniec
  17.  
  18. if (($_GET['link']) == 'dodaj') {
  19. include ('inc/autor_dodaj1.inc');
  20. } 
  21. include ('inc/head.inc');
  22. $bg_color = rand(1,4);
  23. $bg_color = 'bg_color' . $bg_color . '.css';
  24. include ('inc/dane.inc');
  25. include ('inc/data.inc');
  26. include ('inc/zegar.inc');
  27. ?>
  28. <script language=\"JavaScript\">
  29. // by Jakub
  30. var szer=screen.width
  31. if (szer<=800)
  32. document.write('<link rel=\"stylesheet\" type=\"text/css\" href=\"css/800.css\">');
  33. if (szer>800&&szer<=1024)
  34. document.write('<link rel=\"stylesheet\" type=\"text/css\" href=\"css/1024.css\">');
  35. if (szer>1024)
  36. document.write('<link rel=\"stylesheet\" type=\"text/css\" href=\"css/1280.css\">');
  37. </script>
  38. <link rel=\"stylesheet\" type=\"text/css\" href=\"css/<?php echo $bg_color; ?>\" />
  39. <?php
  40. if (($_GET['link']) == 'dodaj') {
  41. echo '<link rel=\"stylesheet\" type=\"text/css\" href=\"css/autor_dodaj.css\" />';
  42. } elseif (($_GET['link']) == 'komentarze') {
  43. echo '<link rel=\"stylesheet\" type=\"text/css\" href=\"css/autor_komentarze.css\" />';
  44. }
  45. ?>
  46. </head>
  47. <body onLoad=\"show5()\">
  48.  
  49. <!-- cale okno -->
  50. <div id=\"okno1\">
  51.  
  52. <!-- okno wlasciwe -->
  53. <div id=\"okno2\">
  54.  
  55. <!-- gora -->
  56. <div id=\"g_tlo\">
  57. <div id=\"g_menu\">
  58. <?php
  59. include ('inc/g_menu.inc');
  60. ?>
  61. </div>
  62.  
  63. </div>
  64. <!-- /gora -->
  65.  
  66. <!-- srodek -->
  67. <!-- srodek s_kolumna1 -->
  68. <div id=\"s_kolumna1\">
  69.  
  70. <table id=\"dataiczas\" cellspacing=\"0\" cellpadding=\"0\">
  71. <tr>
  72. <td id=\"data\">
  73. <?php
  74. echo &#092;"$day1, $day2 $month $year\";
  75. ?></td>
  76. <td id=\"zegar\">
  77. <span id=\"liveclock\"></span></td>
  78. </tr>
  79. </table>
  80.  
  81. <!-- srodek s_kolumna1 s_naglowek -->
  82. <div id=\"s_naglowek\">
  83. <?php echo $strona; ?>
  84.  
  85. </div>
  86. <!-- /srodek s_kolumna1 s_naglowek -->
  87.  
  88. <!-- srodek s_kolumna1 s_okno -->
  89. <div id=\"s_okno\">
  90. <?php
  91. if (isset($message)) {
  92. echo '<div style=\"color: #dc143c;\">' . $message . '</div>';
  93. }
  94. if (($_GET['link']) == 'dodaj') {
  95. include('inc/autor_dodaj2.inc');
  96. } elseif (($_GET['link']) == 'komentarze') {
  97. include('inc/autor_komentarze2.inc');
  98. }
  99. ?>
  100.  
  101. </div>
  102. <!-- /srodek s_kolumna1 s_okno -->
  103.  
  104. </div>
  105. <!-- /srodek s_kolumna1 -->
  106.  
  107. <!-- srodek s_kolumna2 -->
  108. <div id=\"s_kolumna2\">
  109. <div id=\"s_menu\">
  110. <?php
  111. include ('inc/s_menu1.inc');
  112. include ('inc/s_menu2.inc');
  113. include ('inc/s_menu3.inc');
  114. ?>
  115.  
  116. </div>
  117. <!-- /srodek s_kolumna2 -->
  118.  
  119. </div>
  120. <!-- /srodek -->
  121.  
  122. <!-- dol -->
  123. <div id=\"d_tlo\">
  124. <div id=\"d_menu\">
  125. <?php
  126. include ('inc/d_menu.inc');
  127. ?>
  128. </div>
  129. <div id=\"d_prawa\">
  130. <span style=\"font-size: 9px;\">&copy;</span> 2002-04 by <a href=\"mailto:<?php echo $kontakt; ?>\">kuba</a> | v<?php echo $wersja; ?>
  131. </div>
  132.  
  133. </div>
  134. <!-- /dol -->
  135.  
  136. </div>
  137. <!-- /okno wlasciwe -->
  138.  
  139. </div>
  140. <!-- /cale okno -->
  141.  
  142. </body>
  143. </html>


autor_dodaj1.inc - obslugujacy formularz:
  1. <?php
  2. if (isset($_POST['wyslij'])) {
  3. $message = NULL;
  4. if (strlen($_POST['nick']) > 0) {
  5. $nick1 = $_POST['nick'];
  6. } else {
  7. $nick1 = FALSE;
  8. $message .= 'podaj imię i nazwisko lub nick.' . '<br />';
  9. }
  10. if (strlen($_POST['email']) > 0) {
  11. $email1 = $_POST['email'];
  12. } else {
  13. $email1 = FALSE;
  14. $message .= 'podaj swój adres e-mail.' . '<br />';
  15. }
  16. if (strlen($_POST['tresc']) > 0) {
  17. $tresc1 = $_POST['tresc'];
  18. } else {
  19. $tresc1 = FALSE;
  20. $message .= 'podaj tresc komentarza.' . '<br />';
  21. }
  22. if ($data && $nick1 && $email1 && $tresc1) {
  23. require_once('../kuba1.php');
  24. $query = &#092;"INSERT INTO autor_komentarze (data, nick, email, adres, tresc) VALUES (NOW(), '$nick1', '$email1', '$adres1', '$tresc1')\";
  25. $result = @mysql_query($query);
  26. if ($result) {
  27. header (&#092;"Location: http://\" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . \"/autor2.php?link=komentarze\");
  28. exit();
  29. } else {
  30. $message = 'awaria systemu.' . '<br />';
  31. }
  32. } else {
  33. $message .= 'wypełnij formularz jeszcze raz.' . '<br />';
  34. }
  35. }
  36. ?>


autor_dodaj2.inc - kod formularza:
  1. <form action=\"<?php echo $_SERVER['PHP_SELF']; ?>\" method=\"post\">
  2. <table cellspacing=\"0\" cellpadding=\"0\">
  3. <tr>
  4. <td class=\"lewa\">imię i nazwisko lub nick:</td>
  5. <td class=\"prawa\"><input type=\"text\" name=\"nick\" size=\"30\" value=\"<?php if (isset($_POST['nick'])) echo $_POST['nick']; ?>\" /></td>
  6. </tr>
  7. <tr>
  8. <td class=\"lewa\">e-mail:</td>
  9. <td class=\"prawa\"><input type=\"text\" name=\"email\" size=\"30\" value=\"<?php if (isset($_POST['email'])) echo $_POST['email']; ?>\" /></td>
  10. </tr>
  11. <tr>
  12. <td class=\"lewa\">adres strony www:</td>
  13. <td class=\"prawa\"><input type=\"text\" name=\"adres\" size=\"30\" value=\"<?php if (isset($_POST['adres'])) echo $_POST['adres']; ?>\" /></td>
  14. </tr>
  15. <tr>
  16. <td class=\"lewa\">tre&para;ć:</td>
  17. <td class=\"prawa\"><textarea name=\"tresc\" cols=\"55\" rows=\"4\" value=\"<?php if (isset($_POST['tresc'])) echo $_POST['tresc']; ?>\" /></textarea></td>
  18. </tr>
  19. <tr>
  20. <td class=\"lewa\">&nbsp;</td>
  21. <td class=\"prawa\"><input type=\"submit\" name=\"wyslij\" value=\"dodaj\" /></td>
  22. </tr>
  23. </table>
  24. </form>
Go to the top of the page
+Quote Post
sf
post 5.09.2004, 09:17:01
Post #2





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


juz pisalem w innych postach... po co dajesz caly kod? tworzysz nowy plik,w ktorym zawierasz tylko problem i na nim testujesz... a jak sie nie da dalej to go wklejasz tutaj

sorry, ale jesli mialbym szukac bledu w tym calym kodzie, ktory nie ja pisalem to by mnie cos wzielo, zwlaszcza, ze nie jest on ladnie napisany :/


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
Dawid Pytel
post 5.09.2004, 09:35:10
Post #3





Grupa: Zarejestrowani
Postów: 133
Pomógł: 0
Dołączył: 15.09.2003

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


Faktycznie, jakos nie chce sie tego czytac, z problemu ktory opisales mozna zrozumiec ze w formularzy nie wysylasz zmiennej $_GET['link']. Masz jedynie action="autor.php" a powinno byc autor.php?link=to_co_chcesz


--------------------
Ez Partner :]
Go to the top of the page
+Quote Post
-Gość_kuba-
post 5.09.2004, 10:35:03
Post #4





Goście







dzieki za rady...
zrobilem tak jak pisales sf i sprawdzilem, poprawilem i rzeczywiscie blad byl w tym, ze nie dopisalem ?link=dodaj , dzieki dawid.

no ale jeszcze jedno pytanie tak na marginesie... dlaczego po niepelnym wypelneniu formularza sa zapamietywane dane z pol typu text a z pola textarea nie? czy no normalne?
Go to the top of the page
+Quote Post
Paul
post 5.09.2004, 10:52:02
Post #5





Grupa: Zarejestrowani
Postów: 636
Pomógł: 0
Dołączył: 22.10.2003
Skąd: Katowice

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


Moze maly OT ale zauwazylem, ze masz niektore pliki z rozszerzeniem inc... Gdy nie jest odpowiednio skonfugurowany serwer ten plik jest normalnie wypluwany bez przetworzenia przez php... A co za tym idzie ktos moze podejrzec twoj kod (na przyklad hasla do bazy) jesli zna sciezke pliku.. Dlatego uzywaj rozszerzen inc.php albo samo php, mozna co prawda odpowiednio skonfigurowac serwer tylko przy zmianie serwera (na docelowy zamiast localhosta) trzeba to uwzgledniac...
Go to the top of the page
+Quote Post
-Gość_kuba-
post 5.09.2004, 11:02:43
Post #6





Goście







wszystkie pliki z jakimis istotnymi danymi mam zapisane z rozszerzeniem .php, np. w takim pliku mam haslo do bazy, nazwe, itd. - chyba o to ci chodzi?
no to to akurat mam dobrze... w plikach .inc mam tylko kody html lub php ktore nie zawieraja poufnych danych.
ale dzieki za rady.
Go to the top of the page
+Quote Post
-Gość_kuba-
post 5.09.2004, 11:50:30
Post #7





Goście







no to moze jeszcze jedno pytanie...
otoz znalazlem pewna funkcje, ktora ma zwiekszac stopien bezpieczenstwa...

  1. <?php
  2. //funkcja wstawiajaca odwrotny ukosnik przed znakami spejclanymi
  3. function escape_data ($data) {
  4. global $dbc;
  5. if (ini_get('magic_quotes_gpc')) {
  6. $data = stripslashes($data);
  7. }
  8. return mysql_real_escape_string($data, $dbc);
  9. }
  10.  
  11. ?>


tylko, ze przy blednym wypelnieniu formularza pojawia mi sie blad, ze funckja nie moze uzyskac dostepu do bazy danych.

Warning: mysql_real_escape_string() expects parameter 2 to be resource, null given in c:\inetpub\wwwroot\kuba\inc\autor_dodaj1.inc on line 8

jak to moge naprawic?
Go to the top of the page
+Quote Post
Paul
post 5.09.2004, 13:21:02
Post #8





Grupa: Zarejestrowani
Postów: 636
Pomógł: 0
Dołączył: 22.10.2003
Skąd: Katowice

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


Blad jest najprawdopodobniej spowodowany tym, ze nie masz przypisanego do zmiennej $dbc polaczenia...

Jesli nie masz naraz kilku polaczen to mozesz poprostu nie wpisywac indentyfikatora polaczenia w mysql_real_escape_string, czyli:

  1. <?php
  2. function escape_data ($data) {
  3. if (ini_get('magic_quotes_gpc')) {
  4. $data = stripslashes($data);
  5. }
  6. return mysql_real_escape_string($data);
  7. }
  8. ?>
Go to the top of the page
+Quote Post
-Gość_kuba-
post 5.09.2004, 15:35:35
Post #9





Goście







nie moge skorzystac z tego rozwiazania - kodu, co ty mi podales, z czego wynika, ze mam kilka polaczen... pozostaje mi wiec przypisac polaczenie do zmiennej $dbc. ale jak? tylko prosze o wyrozumialosc.
Go to the top of the page
+Quote Post
Paul
post 5.09.2004, 15:55:48
Post #10





Grupa: Zarejestrowani
Postów: 636
Pomógł: 0
Dołączył: 22.10.2003
Skąd: Katowice

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


  1. <?php
  2. $dbc = mysql_connect('','login','haslo');
  3. ?>


Ten post edytował Paul 5.09.2004, 15:56:03
Go to the top of the page
+Quote Post
-Gość_kuba-
post 5.09.2004, 19:49:01
Post #11





Goście







kurde... dalej mi nie dziala...
wystwietla mi sie 'awaria systemu' po wypelnieniu formularza i kliknieciu 'wyslij', a dane powinny zostac wyslane do bazy.
probowalem na dwa sposoby:

w piarszym dane o hoscie, loginie, hasle i nazwie bazy sa wstawiane z pliku plik.php
  1. <?php
  2. //funkcja wstawiajaca odwrotny ukosnik przed znakami spejclanymi
  3. require_once ('../plik.php');
  4. function escape_data ($data) {
  5. global $dbc;
  6. if (ini_get('magic_quotes_gpc')) {
  7. $data = stripslashes($data);
  8. }
  9. return mysql_real_escape_string($data, $dbc);
  10. }
  11. ?>


drugi polegal po prostu na wpisaniu danych:
  1. <?php
  2. //funkcja wstawiajaca odwrotny ukosnik przed znakami spejclanymi
  3. $dbc = mysql_connect ('localhost', 'login', 'haslo');
  4. mysql_select_db ('nazwa_bazy');
  5. function escape_data ($data) {
  6. global $dbc;
  7. if (ini_get('magic_quotes_gpc')) {
  8. $data = stripslashes($data);
  9. }
  10. return mysql_real_escape_string($data, $dbc);
  11. }
  12. ?>


no i gdzie jest blad? niby powinno przeciez dzialac...
Go to the top of the page
+Quote Post
Paul
post 5.09.2004, 20:29:21
Post #12





Grupa: Zarejestrowani
Postów: 636
Pomógł: 0
Dołączył: 22.10.2003
Skąd: Katowice

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


Dziwne, dziwne - u mnie to dziala tongue.gif... A mam takie pytanie... gdzie wywolujesz funkcje? I jaki blad ci zwraca?

PS. Mowisz, ze masz kilka polaczen z baza naraz (czyli jakby kilka mysql_connect przypisanych do roznych zmiennych) a podajesz kod w ktorym przy funkcji mysql_select_db nie jest to uwzglednione... Mam wrazenie, ze masz jedno... To, ze masz kilka to chyba efekt nieporozumienia sie pare postow wczesniej spowodowanego tym, ze ci to nie dziala smile.gif
Go to the top of the page
+Quote Post
-Gość_kuba-
post 5.09.2004, 20:29:55
Post #13





Goście







w obsludze bledow dodalem jeszcze mysql_error().
w formularzu mam 4 pola, a w zwracanym komunikacie o bledzie jest podana tresc tylko jednoe z nich - 'tresc'.
a to komunikat:

awaria systemu.
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ' 'tresc')' at line 1

moze to cos pomoze... ?
Go to the top of the page
+Quote Post
-Gość_kuba-
post 5.09.2004, 20:32:16
Post #14





Goście







funkcje wywoluje przy obsludze formularza... we wczesniejszych kodach co podawalem nie bylo tego...

  1. <?php
  2. //funkcja wstawiajaca odwrotny ukosnik przed znakami spejclanymi
  3. require_once ('../kuba1.php');
  4. function escape_data ($data) {
  5. global $dbc;
  6. if (ini_get('magic_quotes_gpc')) {
  7. $data = stripslashes($data);
  8. }
  9. return mysql_real_escape_string($data, $dbc);
  10. }
  11.  
  12. //funkcja obslugujaca formularz
  13. if (isset($_POST['wyslij'])) {
  14. $message1 = NULL;
  15. if (strlen($_POST['nick']) > 0) {
  16. $nick1 = escape_data($_POST['nick']);
  17. } else {
  18. $nick1 = FALSE;
  19. $message1 .= 'podaj imię i nazwisko lub nick.' . '<br />';
  20. }
  21. if (strlen($_POST['email']) > 0) {
  22. $email1 = escape_data($_POST['email']);
  23. } else {
  24. $email1 = FALSE;
  25. $message1 .= 'podaj swój adres e-mail.' . '<br />';
  26. }
  27. if (strlen($_POST['tresc']) > 0) {
  28. $tresc1 = escape_data($_POST['tresc']);
  29. } else {
  30. $tresc1 = FALSE;
  31. $message1 .= 'podaj tresc komentarza.' . '<br />';
  32. }
  33. if ($nick1 && $email1 && $tresc1) {
  34. require_once('../kuba1.php');
  35. $query = &#092;"INSERT INTO autor_komentarze (data, nick, email, adres, tresc) VALUES (NOW(), '$nick1', '$email1', \" . escape_data($_POST['adres']) . \", '$tresc1')\";
  36. $result = @mysql_query($query);
  37. if ($result) {
  38. header (&#092;"Location: http://\" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . \"/autor2.php?link=komentarze\");
  39. exit();
  40. } else {
  41. $message1 = 'awaria systemu.' . mysql_error() . '<br />';
  42. }
  43. } else {
  44. $message1 .= 'wypełnij formularz jeszcze raz.' . '<br />';
  45. }
  46. }
  47. ?>
Go to the top of the page
+Quote Post
-Gość_kuba-
post 5.09.2004, 20:37:14
Post #15





Goście







ok... zmienilem kod funkcji na ten podany przez ciebie jeszcze raz, tak dla pewnosci:

  1. <?php
  2. //funkcja wstawiajaca odwrotny ukosnik przed znakami spejclanymi
  3. function escape_data ($data) {
  4. if (ini_get('magic_quotes_gpc')) {
  5. $data = stripslashes($data);
  6. }
  7. return mysql_real_escape_string($data);
  8. }
  9. ?>


ale mimo to, dalej jest ten sam blad.
Go to the top of the page
+Quote Post
Paul
post 5.09.2004, 22:08:02
Post #16





Grupa: Zarejestrowani
Postów: 636
Pomógł: 0
Dołączył: 22.10.2003
Skąd: Katowice

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


Hmm odpalilem sobie ten kod ze zmienonymi zmiennymi POST na GET z takim adresem:

wyslij=a&nick=b&email=a&adres=b&tresc=a

No i skrypt z mala poprawka dziala jak nalezy:

  1. <?php
  2. $query = &#092;"INSERT INTO autor_komentarze (data, nick, email, adres, tresc) VALUES (NOW(), '$nick1', '$email1', '\" . escape_data($_POST['adres']) . \"', '$tresc1')\";
  3. ?>


Dodala mi sie do bazy odpowiednia pozycja i nie wywalilo nigdzie zandego errora...
Go to the top of the page
+Quote Post
-Gość_kuba-
post 6.09.2004, 17:38:39
Post #17





Goście







a wiesz co... wrzocilem te pliki na stronke, troche pozmienialem i dziala :D . wprawdzie niewiele zmienilem, bo tylko kody wkleilem i zamienilem miejsce require_once(); no i dziala... nie dawalem przesylania sposobem GET - to miala byc jak cos to ostatecznosc.
dzieki za pomoc.

z tego chyba wynika, ze ja mam cos zle skonfigurowane... :|
Go to the top of the page
+Quote Post
-Gość_kuba-
post 6.09.2004, 17:47:36
Post #18





Goście







ooo... dziala i u mnie... czyli byl jednak gdzies blad, bo teraz poprawilem i swoje na wzor tego, co dalem na serwer na necie...
praktycznie, to zmienilem miejsce require_once(); i jeszcze obsluge pola 'adres' z formularza i wszystko co z nim zwiazane, czyli tez wpisywanie do bazy.
kamien spadl mi z serca. dzieki.

mozna juz zamknac smile.gif
Go to the top of the page
+Quote Post
Paul
post 6.09.2004, 17:55:09
Post #19





Grupa: Zarejestrowani
Postów: 636
Pomógł: 0
Dołączył: 22.10.2003
Skąd: Katowice

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


To z tym get bylo dlatego, ze nie chcialo mi sie formularza z POST robic lub bawic sie w udawanie go skryptem smile.gif
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 Wersja Lo-Fi Aktualny czas: 16.07.2025 - 07:39