Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z formularzem kontaktowym
Forum PHP.pl > Forum > Przedszkole
deserteagle
Witam, mam niemały problem, dostałem w swoje ręce leciwą stronkę, muszę ja odswieżyć, poprawić i uporządkować. Mam formularz kontaktowy, który ponoć pewnego dnia sam z siebie się wysypał. Niestety php nie jest moją mocną stroną, próbowałem na wiele sposobów go naprawić, ale jak tylko jedno poprawiłem to zaraz pojawiał się nastepny błąd. Proszę o sprawdzenie co jest nie tak i małą podpowiedź. Dodam, że po kliknięciu na link prowadzący do formularza wyświetla się komunikat: Something is wrong in your syntax obok '' w linii 1

  1.  
  2. <?php
  3.  
  4. include ("polaczenie_z_baza.php");
  5.  
  6. $pobierz_art_sql = "SELECT Nr_kat, Fota, Nazwa_pl, Kategoria, Opis_pl, Atrybut_name FROM przedmioty_strona WHERE Id=".$id;
  7. $pobierz_art_rez = mysql_query($pobierz_art_sql)
  8. or die(mysql_error($mysqli));
  9.  
  10. <html>
  11. <head>
  12. <meta http-equiv=\"Content-Language\" content=\"pl\">
  13. <meta http-equiv=\"Content-type\" content=\"text/html; charset=iso-8859-2\" />
  14. <meta id=\"Robots\" name=\"Robots\" content=\"index\" />
  15. <title> Formularz kontaktowy przedmiotu" . $art_info['Nazwa_pl'] . " </title>
  16. <link rel=\"stylesheet\" href=\" styl.css \" type=\"text/css\" />
  17. <!--[if lt IE 7.0]><link rel=\"stylesheet\" type=\"text/css\" href=\"ie.css\" /><![endif]-->
  18. <!--[if IE 7.0]><link rel=\"stylesheet\" type=\"text/css\" href=\"ie7.css\" /><![endif]-->
  19.  
  20. </head>
  21. <body style=\"padding: 15px;\">";
  22.  
  23. while ($art_info = mysql_fetch_array($pobierz_art_rez)) {
  24.  
  25. if(! $_POST){
  26. echo "<br />
  27. <img src=\"../pliki/male/".$art_info['Fota']."1.jpg\" class=\"kontaktowy2\" alt=\"Fotka przedmiotu\" />
  28. <br />
  29. <p class=\"kontaktowy3\">Formularz kontaktowy przedmiotu ".$art_info['Nazwa_pl']."</p><br/>
  30. <form method=\"post\" class=\"kontaktowy1\"><input type=\"hidden\" name=\"send\" value=\"yes\">
  31. <p class=\"kontaktowy4\">Twój adres e-mail:<br/>
  32. <input type=\"text\" name=\"sender\" maxlength=\"150\"/ class=\"kontaktowy\">
  33. </p><br />
  34. <p class=\"kontaktowy4\">Treść wiadomości:<br/>
  35. <textarea name=\"message\" wrap=\"virtual\" class=\"kontaktowyy\"></textarea></p><br />";
  36.  
  37.  
  38. // inicjujemy generator licz losowych
  39. srand((float)microtime()*1000000);
  40.  
  41. // tablica zawierajaca tablice z obrazkiem i opisem do niego
  42. $txt[] = array('9sajdh.gif' => '125895');
  43. $txt[] = array('587km.gif' => '100983');
  44. $txt[] = array('609ks.gif' => '056890');
  45. $txt[] = array('904jgh.gif' => '720804');
  46. $txt[] = array('abcd78.gif' => '770096');
  47.  
  48. // wybieramy losowy element z tablicy
  49. $txt_rand = $txt[array_rand($txt)];
  50.  
  51. foreach($txt_rand as $key => $value) {
  52. echo "<img src=\"http://artarmsantik.com/pliki/numerki/".$key."\" class=\"kontaktowyobrazek\" />
  53. <input type=\"hidden\" name=\"obrazek\" value=\"".$value."\" >
  54. <p class=\"kontaktowy4\">Proszę przepisać cyfry z obrazka:</p>
  55. <input type=\"text\" name=\"wartosc\" maxlength=\"50\"/ class=\"kontaktowykod\" >";
  56. }
  57. echo "<p class=\"kontaktowy4\"><button type=\"submit\" name=\"submit\" value=\"send\" class=\"kontaktowy5\"/><img src=\"../pliki/wyslij.jpg\" /></button>
  58.  
  59. </form>";
  60. }
  61.  
  62. if($_POST){
  63. if(($_POST['sender']!='') && ($_POST['sender']!=' ') && ($_POST['obrazek']==$_POST['wartosc'])){
  64. $mailheaders = "Reply-To: ".$_POST['sender']."\n";
  65. $mailheaders .= "Content-Type: text/html; charset=ISO-8859-2\n";
  66. if ($send == "yes"){
  67. $message="".stripslashes($_POST['message']). "\r\n" . "\n <br/><span style=\"font-weight:bold; color:red\">email nadawcy:</span>\n".$_POST['sender'] ;
  68. $subject="Pytanie o: ".stripslashes($art_info['Nazwa_pl'])." nr kat:".$art_info['Nr_kat'];
  69. mail ("skrzynia@artarmsantik.com",$subject,$message,$mailheaders);}
  70.  
  71.  
  72. print "<br /><br /><br /><br /><br /><br /><p class=\"kontaktowy4\">Pytanie zostało wysłane!<br />Wkrótce odpowiemy</p><br /><br /><p class=\"kontaktowy4\" onclick=\"window.close()\">ZAKOŃCZ</p>";}
  73. else {echo "<br /><p class=\"kontaktowy3\">Proszę poprawnie uzupełnić formularz!</p><br />
  74. <img src=\"../pliki/male/".$art_info['Fota']."1.jpg\" class=\"kontaktowy2\" alt=\"Fotka przedmiotu\" />
  75. <br />
  76. <p class=\"kontaktowy3\">Formularz kontaktowy przedmiotu ".$art_info['Nazwa_pl']."</p><br/>
  77. <form method=\"post\" class=\"kontaktowy1\"><input type=\"hidden\" name=\"send\" value=\"yes\">
  78. <p class=\"kontaktowy4\">Twój adres e-mail:<br/>
  79. <input type=\"text\" name=\"sender\" maxlength=\"150\"/ class=\"kontaktowy\">
  80. </p><br />
  81. <p class=\"kontaktowy4\">Treść wiadomości:<br/>
  82. <textarea name=\"message\" wrap=\"virtual\" class=\"kontaktowyy\"></textarea></p><br />";
  83.  
  84.  
  85. // inicjujemy generator licz losowych
  86. srand((float)microtime()*1000000);
  87.  
  88. // tablica zawierajaca tablice z obrazkiem i opisem do niego
  89. $txt[] = array('9sajdk.gif' => '125895');
  90. $txt[] = array('587km.gif' => '100983');
  91. $txt[] = array('609ks.gif' => '056890');
  92. $txt[] = array('904jgh.gif' => '720804');
  93. $txt[] = array('abcd78.gif' => '770096');
  94.  
  95. // wybieramy losowy element z tablicy
  96. $txt_rand = $txt[array_rand($txt)];
  97.  
  98. foreach($txt_rand as $key => $value) {
  99. echo "<img src=\"http://artarmsantik.com/pliki/numerki/".$key."\" class=\"kontaktowyobrazek\"/>
  100. <input type=\"hidden\" name=\"obrazek\" value=\"".$value."\" >
  101. <p class=\"kontaktowy4\">Kod z obrazka:</p>
  102. <input type=\"text\" name=\"wartosc\" maxlength=\"50\"/ class=\"kontaktowykod\" >";
  103. }
  104. echo "<p class=\"kontaktowy4\"><button type=\"submit\" name=\"submit\" value=\"send\" class=\"kontaktowy5\"/><img src=\"../pliki/wyslij.jpg\" /></button>
  105. </form>";
  106. }
  107. }
  108.  
  109. </body>
  110. </html>";}
  111. ?>
  112.  
Michael2318
przed <?php i po ?> nie ma prawa być żadnej spacji, kropki, odstępu - nic. A z tego co zaprezentowałeś w kodzie to takowe tam występują.
StrefaPi
puste linie nie mają znaczenia błąd jest w zapytaniu (linia 6)

  1. $pobierz_art_sql = "SELECT Nr_kat, Fota, Nazwa_pl, Kategoria, Opis_pl, Atrybut_name FROM przedmioty_strona WHERE Id=".$id;

skąd pobierasz $id?

tzw. Undefined variable: id
deserteagle
Hm, ciężkie pytanie jak dla mnie, wiem, że nie odpowiada się pytaniem na pytanie ale nie mam wyjścia:a skąd powinienem pobierać id, myślę, że wszystkie dane pobierane są z bazy, stąd pierwsze polecenie
  1. include ("polaczenie_z_baza.php");
, bynajmniej ja tak to widzę.
nospor
id idzie postem lub w linku. Ma być
$id = $_GET['id'];
lub
$id = $_POST['id'];


A kod nie przestał działać sam z siebie, tylko zmieniła się konfiguracja php i dlatego przestało ci działać.
deserteagle
Czyli przed
  1. $pobierz_art_sql = "SELECT Nr_kat, Fota, Nazwa_pl, Kategoria, Opis_pl, Atrybut_name FROM przedmioty_strona WHERE Id=".$id;

mam wstawić
  1. $id = $_GET['id'];
, pewnie nie bo to byłoby zbyt proste, nospor co masz na myśli "zmieniła się konfiguracja PHP", nie wiem czy ktoś wcześniej grzebał na tej stronie, właściciel twierdzi, że nie, on sam na pewno nie grzebałby w kodzie bo na sam wyraz komputer dostaje gęsiej skórki smile.gif
nospor
Cytat
, pewnie nie bo to byłoby zbyt proste
Naprawdę.... mogłeś to sprawdzić.....

Tak, masz to dać przed pierwszym użyciem $id - to jest dość logiczne.

A konfigurację to mógł zmienić hosting i pewnie tak było.
matiit
deserteagle, tak, daj taką linijkę jak powiedziałeś.
a jeszcze lepiej:


  1. if(isset($_GET['id']))
  2. {$id=$_GET['id'];
  3. //cala reszta kodu
  4. }
  5. else {
  6. echo 'Nie wyswietlasz zadnego posta';
  7. }


coś takiego.

Nie jest to i tak bezpieczne (podatne na sql injection).
deserteagle
nospor spokojnie nie unoś się, nie ma sensu, wiem, że rozmowa z żółtodziobem może być irytująca, ale odrobinę wyrozumiałości, już na wstępie pisałem, że php to czarna magia dla mnie, a nie mogę tego tak szybko sprawdzić bo nie mam dostępu w tej chwili do źródła, nie robię tego za pieniądze i nie siedzę u człowieka w domu przez 8 godz. jutro tam będę to sprawdzę czy o to chodziło, wolę się upewnić gdzie mam coś wstawić, niż jechać prawie 20 km. tylko po to, żebym wkleił coś nie w tym miejscu. Dzięki za pomoc, dam znać czy w tym tkwił problem.

Dzięki matiit.
nospor
Ba.... jakbyś od razu napisał jak sprawa wygląda, to i ja bym się nie unosił smile.gif Ale 99% tego typu postów wygląda tak, że user ma php przed nosem, ale i tak zanim cokolwiek wciśnie to leci 15 razy na forum by się upewnić, jakby jego akcja miała wywołać 3 wojnę światową wink.gif

Pamiętaj tylko co napisałem: jak nie $_GET to $_POST - jedno z dwóch
deserteagle
Czyli całość powinna wyglądać tak:
  1. <?php
  2.  
  3. include ("polaczenie_z_baza.php");
  4.  
  5. if(isset($_GET['id']))
  6. {$id=$_GET['id'];
  7.  
  8. $pobierz_art_sql = "SELECT Nr_kat, Fota, Nazwa_pl, Kategoria, Opis_pl, Atrybut_name FROM przedmioty_strona WHERE Id=".$id;
  9. $pobierz_art_rez = mysql_query($pobierz_art_sql)
  10. or die(mysql_error($mysqli));
  11.  
  12. }
  13. else {
  14. echo 'Nie wyswietlasz zadnego posta';
  15. }
  16.  
  17. <html>
  18. <head>
  19. <meta http-equiv=\"Content-Language\" content=\"pl\">
  20. <meta http-equiv=\"Content-type\" content=\"text/html; charset=iso-8859-2\" />
  21. <meta id=\"Robots\" name=\"Robots\" content=\"index\" />
  22. <title> Formularz kontaktowy przedmiotu" . $art_info['Nazwa_pl'] . " </title>
  23. <link rel=\"stylesheet\" href=\" styl.css \" type=\"text/css\" />
  24. <!--[if lt IE 7.0]><link rel=\"stylesheet\" type=\"text/css\" href=\"ie.css\" /><![endif]-->
  25. <!--[if IE 7.0]><link rel=\"stylesheet\" type=\"text/css\" href=\"ie7.css\" /><![endif]-->
  26.  
  27. </head>
  28. <body style=\"padding: 15px;\">";
  29.  
  30. while ($art_info = mysql_fetch_array($pobierz_art_rez)) {
  31.  
  32. if(! $_POST){
  33. echo "<br />
  34. <img src=\"../pliki/male/".$art_info['Fota']."1.jpg\" class=\"kontaktowy2\" alt=\"Fotka przedmiotu\" />
  35. <br />
  36. <p class=\"kontaktowy3\">Formularz kontaktowy przedmiotu ".$art_info['Nazwa_pl']."</p><br/>
  37. <form method=\"post\" class=\"kontaktowy1\"><input type=\"hidden\" name=\"send\" value=\"yes\">
  38. <p class=\"kontaktowy4\">Twój adres e-mail:<br/>
  39. <input type=\"text\" name=\"sender\" maxlength=\"150\"/ class=\"kontaktowy\">
  40. </p><br />
  41. <p class=\"kontaktowy4\">Treść wiadomości:<br/>
  42. <textarea name=\"message\" wrap=\"virtual\" class=\"kontaktowyy\"></textarea></p><br />";
  43.  
  44.  
  45. // inicjujemy generator licz losowych
  46. srand((float)microtime()*1000000);
  47.  
  48. // tablica zawierajaca tablice z obrazkiem i opisem do niego
  49. $txt[] = array('9sajdh.gif' => '125895');
  50. $txt[] = array('587km.gif' => '100983');
  51. $txt[] = array('609ks.gif' => '056890');
  52. $txt[] = array('904jgh.gif' => '720804');
  53. $txt[] = array('abcd78.gif' => '770096');
  54.  
  55. // wybieramy losowy element z tablicy
  56. $txt_rand = $txt[array_rand($txt)];
  57.  
  58. foreach($txt_rand as $key => $value) {
  59. echo "<img src=\"http://artarmsantik.com/pliki/numerki/".$key."\" class=\"kontaktowyobrazek\" />
  60. <input type=\"hidden\" name=\"obrazek\" value=\"".$value."\" >
  61. <p class=\"kontaktowy4\">Proszę przepisać cyfry z obrazka:</p>
  62. <input type=\"text\" name=\"wartosc\" maxlength=\"50\"/ class=\"kontaktowykod\" >";
  63. }
  64. echo "<p class=\"kontaktowy4\"><button type=\"submit\" name=\"submit\" value=\"send\" class=\"kontaktowy5\"/><img src=\"../pliki/wyslij.jpg\" /></button>
  65.  
  66. </form>";
  67. }
  68.  
  69. if($_POST){
  70. if(($_POST['sender']!='') && ($_POST['sender']!=' ') && ($_POST['obrazek']==$_POST['wartosc'])){
  71. $mailheaders = "Reply-To: ".$_POST['sender']."\n";
  72. $mailheaders .= "Content-Type: text/html; charset=ISO-8859-2\n";
  73. if ($send == "yes"){
  74. $message="".stripslashes($_POST['message']). "\r\n" . "\n <br/><span style=\"font-weight:bold; color:red\">email nadawcy:</span>\n".$_POST['sender'] ;
  75. $subject="Pytanie o: ".stripslashes($art_info['Nazwa_pl'])." nr kat:".$art_info['Nr_kat'];
  76. mail ("skrzynia@artarmsantik.com",$subject,$message,$mailheaders);}
  77.  
  78.  
  79. print "<br /><br /><br /><br /><br /><br /><p class=\"kontaktowy4\">Pytanie zostało wysłane!<br />Wkrótce odpowiemy</p><br /><br /><p class=\"kontaktowy4\" onclick=\"window.close()\">ZAKOŃCZ</p>";}
  80. else {echo "<br /><p class=\"kontaktowy3\">Proszę poprawnie uzupełnić formularz!</p><br />
  81. <img src=\"../pliki/male/".$art_info['Fota']."1.jpg\" class=\"kontaktowy2\" alt=\"Fotka przedmiotu\" />
  82. <br />
  83. <p class=\"kontaktowy3\">Formularz kontaktowy przedmiotu ".$art_info['Nazwa_pl']."</p><br/>
  84. <form method=\"post\" class=\"kontaktowy1\"><input type=\"hidden\" name=\"send\" value=\"yes\">
  85. <p class=\"kontaktowy4\">Twój adres e-mail:<br/>
  86. <input type=\"text\" name=\"sender\" maxlength=\"150\"/ class=\"kontaktowy\">
  87. </p><br />
  88. <p class=\"kontaktowy4\">Treść wiadomości:<br/>
  89. <textarea name=\"message\" wrap=\"virtual\" class=\"kontaktowyy\"></textarea></p><br />";
  90.  
  91.  
  92. // inicjujemy generator licz losowych
  93. srand((float)microtime()*1000000);
  94.  
  95. // tablica zawierajaca tablice z obrazkiem i opisem do niego
  96. $txt[] = array('9sajdk.gif' => '125895');
  97. $txt[] = array('587km.gif' => '100983');
  98. $txt[] = array('609ks.gif' => '056890');
  99. $txt[] = array('904jgh.gif' => '720804');
  100. $txt[] = array('abcd78.gif' => '770096');
  101.  
  102. // wybieramy losowy element z tablicy
  103. $txt_rand = $txt[array_rand($txt)];
  104.  
  105. foreach($txt_rand as $key => $value) {
  106. echo "<img src=\"http://artarmsantik.com/pliki/numerki/".$key."\" class=\"kontaktowyobrazek\"/>
  107. <input type=\"hidden\" name=\"obrazek\" value=\"".$value."\" >
  108. <p class=\"kontaktowy4\">Kod z obrazka:</p>
  109. <input type=\"text\" name=\"wartosc\" maxlength=\"50\"/ class=\"kontaktowykod\" >";
  110. }
  111. echo "<p class=\"kontaktowy4\"><button type=\"submit\" name=\"submit\" value=\"send\" class=\"kontaktowy5\"/><img src=\"../pliki/wyslij.jpg\" /></button>
  112. </form>";
  113. }
  114. }
  115.  
  116. </body>
  117. </html>";}
  118. ?>


czy coś pokręciłem
nospor
Nie, nie kombinuj z tym co ci podał poprzednik, bo jak pojedziesz do klienta i bedzie błąd to znowu nic nie zrobisz.

Zrób to co pisałem, wstaw tylko to
$id=$_GET['id'];
i już.

A najlepiej zrób:
$id=(int)$_GET['id'];

i juz skrypt będzie 100razy bezpieczniejszy.
matiit
Raczej tak:
http://pastebin.com/jpMihX4c

Edit:
@nospor a co w przypadku jeśli id nie bedzie zdefiniowane nigdzie.. (aczkolwiek masz racje, skoro jest to działający system to powinno być o to jakoś zadbane w inny sposócool.gif

deserteagle
Ok, dzięki Panowie za pomoc, dam znać czy działa.
nospor
Cytat
@nospor a co w przypadku jeśli id nie bedzie zdefiniowane nigdzie..
Skoro działało do tej pory a nagle przestało, znaczy że ktoś wyłączył register_globals. I to id brało się automatycznie albo z post, albo z get, albo od biedy z $_SESSION lub $_COOKIE. na 95 było to jednak post lub get. No ale na odległośc mogę jedynie zgadywać.
deserteagle
Zadziałało, dzięki jeszcze raz, duże, mocno chmielowe dla Ciebie nospor i dla matiit oczywiście też. Można zamknąć.
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.