Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][PHP]brak tablicy $_POST po przesłaniu formularza
Forum PHP.pl > Forum > Przedszkole
siutek
Witam,
ostatnio na swojej stronie pobawilem się nice url's autorstwa nospora.
niestety po zmianach przestała mi działać tablica POST, wiem że to dziwnie brzmi tongue.gif ale tak jest.

w jednym z dzialow znajduje sie formularz, ktory jest wysylany metodą POST pod adres id,nazwa_dzalu.html Oczywiscie link ten jest przechwytywany przez php, i tam w klasie nospora przerabiany na tablice GET o zmiennych np $_GET["id"]=numerdzialu, oraz $_GET["name"]=nazwadzialu. Dekodowanie działa, jednak z jakiegoś względu tablica POST przestala byc przekazywana. umiescilem print_r($_POST); juz w drugiej linijce pliku index.php, zaraz za znacznikiem <?

jednak wynikiem jest pusta tablica Array()

co ciekawe odświeżenie wysłania formularza powinno wygenerować komunikat, że "Aby wyświetlić tę stronę, przegladarka musi ponownie przeslac dane, ktore spowodują powtorzenie zadan wykonanych wczesniej" - tak sie dzieje normalnie, a w moim przypadku nie mam tego komunikatu, tak jakby dane z formularza, po kliknieciu przycisku send nigdy nie zostaly wyslane...

nie mam bladego pojecia co moze byc przyczyna, nigdzie w kodzie nie mam przekierowania typu header(); wiec odrzucam mozliwosc
przeniesienia na inna podstrone gdzie juz POST bedzie z definicji pusty.

nawet firebug nie pokazuje mi zadnej operacji odwolującej sie do tablicy POST podczas wysylania formularza
stefan33
Moze jakis kod?
siutek
index.php gdzie tak naprawde wszystko sie dzieje...
  1. <?php
  2. if (file_exists("./inc/config.php")) include_once "./inc/config.php"; else echo "<script> alert(\"Pojawił się problem z bazą danych.\"); </script>";
  3. include_once "./inc/niceUrl.php";
  4. include_once "./class/NUrl.class.php";
  5. $niceUrl = new NUrl();
  6.  
  7. $menuArr2 = menuTree();
  8. if(is_array($menuArr2)) {
  9. foreach ($menuArr2 as $mA) {
  10. $menuTop .= "<a href=\"".$niceUrl->Url("page=".$mA["id"]."&name=".strtolower(str_replace(" ","_",str_replace("&","and",$mA["name"]))))."\">".strtoupper($mA["name"])."</a>";
  11. $menuBottom .= "<a href=\"".$niceUrl->Url("page=".$mA["id"]."&name=".strtolower(str_replace(" ","_",str_replace("&","and",$mA["name"]))))."\">".$mA["name"]."</a> | ";
  12. }
  13. $menuBottom = substr($menuBottom,0,-3);
  14. }
  15.  
  16. $message = "";
  17. if($_GET["name"]=="contact" && $_POST["action"]=="send") {
  18. include("./class/class.phpmailer.php");
  19. include("./class/class.smtp.php");
  20.  
  21. $contentMail = "Imię i nazwisko (lub nazwa): <b>".$_POST["name"]."</b><br>
  22. Telefon: <b>".$_POST["phone"]."</b><br>
  23. Adres email: <b>".$_POST["mail"]."</b><br><br>
  24. Treść zapytania:<br><b>".$_POST["question"]."</b>";
  25.  
  26. $mail = new PHPMailer();
  27. $mail->IsSMTP();
  28. $mail->SMTPAuth = true; // enable smtp authentication
  29. $mail->SMTPSecure = "ssl"; // sets the prefix to the servier
  30. $mail->Host = "serwer.com"; // sets gmail as the smtp server
  31. $mail->Port = 465; // set the smtp port
  32. $mail->Username = "*****@**********"; // gmail username
  33. $mail->Password = "******"; // gmail password
  34. $mail->From = "*****@**********";
  35. $mail->FromName = "moja stronka";
  36. $mail->Subject = "Informacja ze strony mojas_tronka";
  37. $mail->WordWrap = 50; // set word wrap
  38. $mail->MsgHTML($contentMail);
  39. $mail->AddAddress("*****@**********","Nie wiem");
  40. $mail->IsHTML(true); // send as html
  41. if ($mail->Send()) {
  42. $message = "<div class=\"d5MessageOK\">Wysłano wiadomość</div>";
  43. } else {
  44. $message = "<div class=\"d5MessageERROR\">Wystąpił problem z wysłaniem wiadomości.</div>";
  45. }
  46. } elseif($_GET["name"]=="testimonials" && $_POST["action"]=="save") {
  47. if(strlen($_POST["name"]) && strlen($_POST["content"]) ) {
  48. $nowaOpinia = $_POST;
  49. $nowaOpinia["add_date"] = date("U");
  50. queryInsert("testimonials",$nowaOpinia);
  51.  
  52. include("./class/class.phpmailer.php");
  53. include("./class/class.smtp.php");
  54.  
  55. $contentMail = "Na stronie pojawiła się nowa opinia. Wpis czeka na akceptację lub odrzucenie w panelu administracyjnym.<br><br>
  56. Imię i nazwisko (lub nazwa): <b>".$_POST["name"]."</b><br>
  57. Treść:<br><b>".$_POST["content"]."</b><br><br>
  58. Aby przejść do panelu wejdź tu: <a href=\"http://www.stronka.xyz\">www.stronka.xyz</a>";
  59.  
  60. $mail = new PHPMailer();
  61. $mail->IsSMTP();
  62. $mail->SMTPAuth = true; // enable smtp authentication
  63. $mail->SMTPSecure = "ssl"; // sets the prefix to the servier
  64. $mail->Host = "serwer.com"; // sets gmail as the smtp server
  65. $mail->Port = 465; // set the smtp port
  66. $mail->Username = "*****@**********"; // gmail username
  67. $mail->Password = "******"; // gmail password
  68. $mail->From = "*****@**********";
  69. $mail->FromName = "moja stronka";
  70. $mail->Subject = "Informacja ze strony mojas_tronka";
  71. $mail->WordWrap = 50; // set word wrap
  72. $mail->MsgHTML($contentMail);
  73. $mail->AddAddress("*****@**********","Nie wiem");
  74. $mail->IsHTML(true); // send as html
  75.  
  76. if ($mail->Send()) {
  77. $message = "<div class=\"d5MessageOK\">Wysłano opinię. W trosce o jakość wypowiedzi wpis musi jeszcze zostać zatwierdzony przez administrację, może to potrwać kilka dni.</div>";
  78. } else {
  79. $message = "<div class=\"d5MessageERROR\">Wystąpił problem z wysłaniem opinii.</div>";
  80. }
  81. }}
  82.  
  83. $losowaOpinia = getRecordRand("testimonials",array("act"=>1));
  84. if(is_array($losowaOpinia)) {
  85. $roundTest = $losowaOpinia[0]["content"]."<br>
  86. <span class=\"dTsign\">".$losowaOpinia[0]["name"]."</span>";
  87. } else {
  88. $roundTest = "&nbsp;";
  89. }
  90.  
  91. if(!$_GET["page"]) $_GET["page"]=4;
  92. $stronaArr = getRecord("content",$_GET["page"]);
  93.  
  94. $tplArr = getRecord("templates",$stronaArr["template"]);
  95.  
  96. $testimonials="";
  97. if($stronaArr["template"]==16) {
  98. $listaOpinii = getList("testimonials",array("act"=>1));
  99.  
  100. if(is_array($listaOpinii)){
  101.  
  102. foreach($listaOpinii as $lO){
  103. $wiersz .= "<div style=\"padding-top:8px;\">
  104. <div class=\"dTcontent\">".$lO["content"]."</div>
  105. <div class=\"dTest1\">
  106. <div class=\"dTa\">Add Date: <span>".date("d-m-Y H:i",$lO["add_date"])."</span></div>
  107. <div class=\"dTb\">Name: <span>".$lO["name"]."</span></div>
  108. <div style=\"clear:both;\"></div>
  109. </div>
  110. </div>";
  111. }
  112. $testimonials = "<div class=\"dTest\">".$wiersz."</div>";
  113. }
  114. }
  115. $contactFormAction = $niceUrl->Url("page=".$_GET["page"]."&name=".strtolower(str_replace(" ","_",str_replace("&","and",$_GET["name"]))));
  116. $testimonialsFormAction = $niceUrl->Url("page=".$_GET["page"]."&action=save&name=".strtolower(str_replace(" ","_",str_replace("&","and",$_GET["name"]))));
  117.  
  118. $html = file_get_contents("./indexx.html");
  119. $tpl = file_get_contents("./tpl/".$tplArr["file"].".html");
  120.  
  121. $co = Array("{menuTop}","{menuBottom}","{tpl}","{content}","{page}","{message}","{testimonials}","{roundTest}","{contactFormAction}","{testimonialsFormAction}");
  122. $naCo = Array($menuTop,$menuBottom,$tpl,$stronaArr["content"],$_GET["page"],$message,$testimonials,$roundTest,$contactFormAction,$testimonialsFormAction);
  123. $html = str_replace($co,$naCo,$html);
  124.  
  125. echo $html;
  126. ?>


sam template po wugenerowaniu przez serwer wyglada tak:
  1. <form action="36,contact.html" method="POST">
  2. <input type="hidden" name="action" value="send">
  3. <div class="d5Contact">
  4. <div class="d5Cline">
  5. <div class="d5Cl1">Name:</div>
  6. <div class="d5Cl2"><input type="text" name="name"></div>
  7. </div>
  8. <div class="d5Cline">
  9. <div class="d5Cl1">Phone:</div>
  10. <div class="d5Cl2"><input type="text" name="phone"></div>
  11. </div>
  12. <div class="d5Cline">
  13. <div class="d5Cl1">E-mail:</div>
  14. <div class="d5Cl2"><input type="text" name="mail"></div>
  15. </div>
  16. <div class="d5Cline" style="height:120px;">
  17. <div class="d5Cl3">Question:</div>
  18. <div class="d5Cl4"><textarea name="question"></textarea></div>
  19. </div>
  20. <div class="d5Cline">
  21. <input type="submit" value="Send" style="margin-left:300px;">
  22. </div>
  23. </div>
  24. </form>

vermis
Cytat(siutek @ 13.09.2012, 22:39:58 ) *
co ciekawe odświeżenie wysłania formularza powinno wygenerować komunikat, że "Aby wyświetlić tę stronę, przegladarka musi ponownie przeslac dane, ktore spowodują powtorzenie zadan wykonanych wczesniej" - tak sie dzieje normalnie, a w moim przypadku nie mam tego komunikatu, tak jakby dane z formularza, po kliknieciu przycisku send nigdy nie zostaly wyslane...


Dzieje się tak, bo nie masz post'a. Prawdopodobnie robisz przekierowanie np. header("Location: ..."), które gubi posta.
siutek
Cytat(vermis @ 13.09.2012, 23:17:53 ) *
Dzieje się tak, bo nie masz post'a. Prawdopodobnie robisz przekierowanie np. header("Location: ..."), które gubi posta.


no wlasnie rzecz w tym, że NIGDZIE nie mam header, pisalem o tym w pierwszym poscie, ta opcja tez mi przyszla do glowy...


edit:
a teraz patent dnia!! wszystko działa!! co zrobilem? no wlasnie... NIE WIEM! zaczalem poprawiac formatowanie zgodnie ze standardami w3c, tak aby strona przeszla walidację. nie mialem jakichs rażących bledow najczesciej to brak prawidlowego zamkniecia tagu, zamiast <br /> mialem <br>, brakowalo kilku altow na obrazkach. i tylko to... wiec nie wiem co sprawilo ze wszystko wrocilo do normy... sad.gif
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.