Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Formularz kontaktowy - funkcja mail i chyba problemy z przekazywanie zmiennych
Volume
post
Post #1





Grupa: Zarejestrowani
Postów: 283
Pomógł: 11
Dołączył: 11.10.2004
Skąd: 3c

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


napisalem sobie taki kod:
  1. if(empty($_POST['wyslij']))
  2. {
  3. <form method="post">
  4. <fieldset>
  5. <legend>Formularz kontaktowy</legend>
  6. <label for="nick">Imie Nazwisko (*)</label>
  7. <br />
  8. <input onfocus="this.style.backgroundColor=\'#fff\'" onblur="this.style.backgroundColor=\'#dfdfdf\'" name="nick" type="text" />
  9. <br />
  10. <label for="mail">Mail</label>
  11. <br />
  12. <input onfocus="this.style.backgroundColor=\'#fff\'" onblur="this.style.backgroundColor=\'#dfdfdf\'" name="mail" type="text" />
  13. <br />
  14. <label for="tresc">Treść (*)</label>
  15. <br />
  16. <textarea onfocus="this.style.backgroundColor=\'#fff\'" onblur="this.style.backgroundColor=\'#dfdfdf\'" name="tresc" cols="63" rows="10"></textarea>
  17. <br />
  18. <input id="submit" name="wyslij" type="submit" value=" Wyślij " />
  19. </fieldset>
  20. </form>
  21. <p>Przypisy:</br>* - pola obowiązkowe</p><p>W przypadku braku podania maila prosimy w treści wiadomości podać inną formę kontaktu.</p>
  22. ';
  23. }
  24. else if(!empty($_POST['nick']) && !empty($_POST['tresc']))
  25. {
  26. function EmAil()
  27. {
  28. global $nick;
  29. global $mail;
  30. global $tresc;
  31. $tresc_cal="Widamosc od: ".$nick." (mail - ".$mail.")\n\nTreść:\n".$tresc;
  32. @mail('s1518@tlen.pl','Wiadomość ze strony zooter.pl',$tresc_cal)or die('<p>Nie udalo się wysłać wiadomości.</p>');
  33. echo '<p class="kontakt">Wiadomość wysłano - <a href="index.php?s=kontakt">Powrót do formularza.</a></p>';
  34. }
  35. if(empty($_POST['mail']))
  36. {
  37. echo EmAil();
  38. }
  39. else if(!empty($_POST['mail']) && preg_match('/^([a-z0-9]{1})([^\s\t\.@]*)((\.[^\s\t\.@]+)*)@([a-z0-9]{1})((([a-z0-9-]*[-]{2})|([a-z0-9])*|([a-z0-9-]*[-]{1}[a-z0-9]+))*)((\.[a-z0-9](([a-z0-9-]*[-]{2})|([a-z0-9]*)|([a-z0-9-]*[-]{1}[a-z0-9]+))+)*)\.([a-z0-9]{2,6})([.]?)$/Diu', $_POST['mail']))
  40. {
  41. echo EmAil();
  42. }
  43. else echo '<p class="kontakt"><strong>UWAGA! - adres email musi mieć poprawny format</strong> - <a href="java script:history.back();">Cofaj</a>.</p>';
  44. }
  45. else
  46. {
  47. echo '<p class="kontakt"><strong>UWAGA! - wymagane jest wypełnienie pól z imieniem/nazwiskiem oraz treścią</strong> - <a href="java script:history.back();">Cofaj</a>.</p>';
  48. }
  49.  
  50. ?>
Na jednym serwerze dziala bez problemu - chociaz tez byly problem ale global dla zmiennych pomoglo, natomaist a na drugim serwerze na ktorym formularz ma byc nawet to nie pomoglo... Co jeszcze moze byc nie tak z tymi zmiennymi ze nie chca sie przekazywac. Funkcja mail na tym serwerze dziala bo wysyla bez problemu wszystkie dane jak wpisze bezposrednio bez zmiennych do funkcji mail(...) do tego wszystko co jest poza zmiennymi sie wysyla, wiec problem chyba musi byc w tych zmeinnych....


edit: ok prodzailem sobie - wszystkie zmienne przekazywane dalem w postacie $_POST['']

Ten post edytował Volume 7.11.2009, 20:15:58
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
xynt
post
Post #2





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 16.11.2009

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


Witam,
Mam maly problem wlasnie odnosnie formularza kontaktowego w php i gdy natrafilem na ten post pomyslalem, ze moze ktos mi pomoze.
Moj problem jest nastepujacy: po wypelnieniu wszystkich pol i nacisnieciu "wyslij" jestem przekierowywany na pusta strone, jedynie z napisem "wyslano maila" i zeby wrocic do poprzedniego widoku trzeba dac "wstecz". Chcialbym, zeby ten napis "wyslano maila" pojawial sie na tej samej stronie po nacisnieciu wyslij, a nie przekierowywal do pustej. Moze ewentualnie zeby przekierowywal do nastepnej strony, ale zeby mozna cos bylo tam wstawic oprocz tego komunikatu, np. jakis link do strony glownej itp. Niestety nie znam sie na tym, bo dopiero zaczynam swoja przygode z PHP, kombinowalem jak moglem i nic. Prosze o pomoc.

Ponizej co mam w kodzie:


<?
$mail_odbiorcy = "mojmail@gmail.com";
$email_nadawcy = $_POST['email_nadawcy'];
$temat = $_POST['temat'];
$tresc = $_POST['tresc'];
$akcja= $_POST['akcja'];

if ($akcja == "wyslij")
{
$tresc = wordwrap($tresc, 70);
mail($mail_odbiorcy, $temat, $tresc, $email_nadawcy);
echo "Wyslano maila";
}
else
{
?>
<form action="index.php" method="post">
Informacje zostaną przesłane na podany mail. W razie jego braku należy umieścić w treści zgłoszenia numer telefonu lub inną, dogodną formę kontaktu
E-Mail: <INPUT TYPE="TEXT" NAME="email_nadawcy" size=60>
Temat: <input type="text" name="temat"><br>
Tresc maila:<br>
<TEXTAREA NAME="tresc" rows=10 cols=30></TEXTAREA><br>
<input type="hidden" name="akcja" value="wyslij">
<input type="submit" value="Wyslij"></form>
<?
}
?>




dobra, juz mam jak zrobic zeby na stronie z potwierdzeniem wyslania byl link powrotny. Ale dalej glowie sie, jak zrobic, zeby w ogole nie bylo przekierowywania do nastepnej strony i zeby komunikat "wyslano" pojawial sie bezposrednio na stronie z formularzem. Any ideas? (IMG:style_emoticons/default/rolleyes.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 13:44