Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz pocztowy
Forum PHP.pl > Forum > PHP
bartex9
Witam,
Znalazłem jakiś skrypt prostego formularza pocztowego. Załóżmy, że mam stronę, a tam jakieś 4 podstrony: A, B, C i D. Na każdej tej stronie mam umieszczony link do formularza (który oczywiście jest na osobnej podstronie). Chciałbym jednak, aby w zależności z której strony kliknę na formularz, automatycznie wpisywał mi się temat wiadomości, np. gdy klikam na link z formularzem z podstrony A, to temat staje mi się przykładowo "Alfa". I analogicznie jak klikam z podstrony C, to staje mi się "Gamma". Oto link do mojego formularza:

http://jurajskawioskarodaki.cba.pl/pop

Próbowałem zrobić coś w stylu:
http://jurajskawioskarodaki.cba.pl/p...php?temat=alfa

Ale nie działało to. Pole temat było puste. Jest to możliwe? Muszę od razu zaznaczyć, że jestem w tych sprawach raczej początkujący. Z góry wielkie dzięki za szybką pomoc.
Pozdrawiam.
Kshyhoo
Cytat
Przepraszamy, strona nie została znaleziona.


Pokaż kod...
Przekaż dane do skryptu w sesji...
bartex9
http://jurajskawioskarodaki.cba.pl/pop/index.php?temat=alfa

Błąd w linku.
Jak pisałem jestem początkujący więc prosiłbym o jakiś w miarę prosty sposób i jego jako takie wytłumaczenie. Pojęcie "Przekaż dane do skryptu w sesji..." nic mi niestety nie mówi...


Kod:
  1. <?php
  2. ********************************************************************************
    ***/
  3.  
  4. include ('ustawienia.php');
  5.  
  6. include('formularz.php');
  7. $formularz = ob_get_contents();
  8.  
  9.  
  10. function wyswietl_forme($komunikat='') {
  11. global $formularz;
  12.  
  13. $do_zmiany = array(
  14. '#komunikat#',
  15. '#strona#',
  16. '#nick#',
  17. '#mail#',
  18. '#temat#',
  19. '#tresc#'
  20. );
  21. $zmien_na = array(
  22. $komunikat,
  23. $_SERVER['REQUEST_URI'],
  24. $_POST['nick'],
  25. $_POST['mail'],
  26. $_POST['temat'],
  27. $_POST['tresc']
  28. );
  29.  
  30. $formularz = str_replace ( $do_zmiany, $zmien_na, $formularz);
  31.  
  32. return $formularz;
  33. }
  34.  
  35.  
  36. function waliduj() {
  37. global $komunikat;
  38. global $valid;
  39.  
  40. if( $valid['nick'] > 0 ) {
  41. if(strlen($_POST['nick']) < $valid['nick'] ){
  42. $walidacja['nick'] = $komunikat['nick'];
  43. }
  44. }
  45.  
  46. if( $valid['mail'] == 1 ) {
  47. if(!filter_var($_POST['mail'],FILTER_VALIDATE_EMAIL)) {
  48. $walidacja['mail'] = $komunikat['mail'];
  49. }
  50. }
  51.  
  52. if( $valid['temat'] > 0 ) {
  53. if(strlen($_POST['temat']) < $valid['temat'] ){
  54. $walidacja['temat'] = $komunikat['temat'];
  55. }
  56. }
  57.  
  58. if( $valid['tresc'] > 0 ) {
  59. if(strlen($_POST['tresc']) < $valid['tresc'] ){
  60. $walidacja['tresc'] = $komunikat['tresc'];
  61. }
  62. }
  63.  
  64. if(empty($walidacja)) {
  65. return 'true';
  66. }else{
  67. return $walidacja;
  68. }
  69.  
  70. }
  71.  
  72. // Działanie
  73. if (($_SERVER['REQUEST_METHOD'] == 'POST')) {// wejście postem
  74. $walidacja = waliduj();
  75.  
  76. if ($walidacja == 'true'){ //poprawnie wypełniony formularz
  77.  
  78. if(mail($adres_odbiorcy,"=?UTF-8?B?".base64_encode($_POST['temat'])."?=",'<p>Od: <b>'.$_POST['nick'].'</b></p><pre>'.$_POST['tresc'].'</pre>','From:'.$_POST['mail']."\r\nContent-Type: text/html; charset=utf-8")){ //sukces
  79. <div id="sukces">
  80. <p>'.$komunikat['sukces'].'</p>
  81. </div>
  82. ';
  83. }else{ //bląd serwera
  84. print '
  85. <div id="blad">
  86. <p>'.$komunikat['fail'].'</p>
  87. </div>
  88. ';
  89. print wyswietl_forme();
  90. }
  91.  
  92. }else{
  93. //błędna walidacja
  94. $blad_walidacji = $walidacja;
  95.  
  96. $blad_walidacji = '
  97. <div id="blad">
  98. <p>'.$komunikat['blad'].'</p>
  99. <ul>
  100. ';
  101. foreach ($walidacja as $wpis) {
  102. $blad_walidacji .= '<li>'.$wpis.'</li>';
  103. }
  104. $blad_walidacji .= '
  105. </ul>
  106. </div>
  107. ';
  108.  
  109. print wyswietl_forme($blad_walidacji);
  110. }
  111.  
  112. }else{
  113. // nowe wejście
  114. print wyswietl_forme();
  115. }
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122. ?>


Poradziłem już sobie z tym. Wystarczyło zmienić w 28 linijce POST na GET i działa metoda z dodaniem do adresu "?temat=blebleble".
Mimo wszystko dzięki za pomoc. Temat do zamknięcie smile.gif

W sumie jeszcze jedno pytanie smile.gif
Czy da się tą samą metodą "ściągnąć" do formularza adres poprzedniej strony? Poprzednia strona jest generowana przez PHP. Ma ktoś pomysł?
prowseed
Sam już sobie odpowiedziałeś na pytanie:

  1. http://jurajskawioskarodaki.cba.pl/pop/index.php?temat=gamma&strona=3

I potem php

  1. //w tym przypadku $strona = 3;
  2. if($strona == 1){
  3. echo "Przybyles ze strony pierwszej";
  4. } elseif($strona == 3){
  5. echo "www.strona3.pl";
  6. }else {
  7. echo "Strona nieznana";
  8. }



Jeżeli chcesz adres pobierać dynamicznie, to albo HTTP_REFERRER albo przechowuj adres w sesji czy coś takiego.
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.