Gość Najs Zgłoś post Napisano Luty 7, 2012 Witam ponownie. Tuż znów chciałbym poprosić Was o pomoc, a mianowicie: Wgrałem formularz kontaktowy na swoją stronę, wszystko działa, wysyła, jest okej. Troszkę się z tym męczyłem i nic mi się nie udało więc piszę tutaj. Chciałbym do mojego formularza dodać kilka wolnych pól, które przychodziły by w mailu w treści wiadomości, nie idzie mi gdyż nie znam się ani trochę na php. Myślę, że nie jest to trudne i nie zajmie to dłuższej chwili dla zaawansowanych. Formularz obecnie wygląda tak: Chciałbym dodać kilka pól identycznych jak pole pod napisem Temat:, tylko zależy mi aby wszystko co do nich zostało wpisane przychodziło w treści wiadomości. Jeszcze raz proszę o pomoc, poniżej kod całego formularza. ustawienia.php <?php /* Ustawienia formularza kontaktowego */ $adres_odbiorcy = 'najsesl@gmail.com'; //tu wpisz adres e-mail na który mają przychodzić wiadomości /* Ustawienia wymaganych pól */ /* Pamiętaj, żeby oznaczyć wymagane pola w formularzu - plik formularz.php */ $valid['nick'] = 2 ; // Nick: 0 - oznacza pole nieobowiązkowe, inna liczba minimalną ilość znaków jakie musi wpisać użytkownik $valid['mail'] = 1 ; // e-mail: 0 - oznacza pole nieobowiązkowe, 1 - pole wymagane $valid['temat'] = 3 ; // Temat: 0 - oznacza pole nieobowiązkowe, inna liczba minimalną ilość znaków jakie musi wpisać użytkownik $valid['tresc'] = 5 ; // Treść: 0 - oznacza pole nieobowiązkowe, inna liczba minimalną ilość znaków jakie musi wpisać użytkownik /* Komunikaty */ $komunikat['sukces'] = 'Dziękujemy. Twoja wiadomość została wysłana.'; //Wiadomość po udanym wysłaniu formularza $komunikat['blad'] = 'Wiadomość <b>NIE</b> została wysłana. Popraw poniższe błędy.'; //Wiadomość przy błędzie w sprawdzaniu danych, błędy zostaną wymienione poniżej $komunikat['nick'] = 'Nick musi mieć min. 2 znaki.'; //Wpisz właściwą ilość znaków jeśli pole wymagane $komunikat['mail'] = 'Podaj poprawny adres e-mail.'; //Wiadomość po błędnym wpisaniu adresu e-mail $komunikat['temat'] = 'Temat musi mieć min. 3 znaki.'; //Wpisz właściwą ilość znaków jeśli pole wymagane $komunikat['tresc'] = 'Treść musi mieć min. 5 znaków'; //Wpisz właściwą ilość znaków jeśli pole wymagane $komunikat['fail'] = 'Przepraszamy wystąpił chwilowy błąd. Spróbuj ponownie później'; //W przypadku nieudanego wyslania wiadomości np. błędu serwera ?> formularz.php #komunikat# <form action="#strona#" method="post" id="formularz"> <div> <label><font color="#FFFFFF">Nick / Imię i nazwisko:</label> <input type="text" id="nick" name="nick" value="#nick#" /> </div> <div> <label>Adres e-mail:</label> <input type="text" id="mail" name="mail" value="#mail#" /> </div> <div> <label>Temat:</label> <input type="text" id="temat" name="temat" value="#temat#" /> </div> <div> <label>Treść:</font></label> <textarea cols="27" rows="10" id="tresc" name="tresc" >#tresc#</textarea> </div> <div> <input type="submit" value="Wyślij" /> </div> </form> mail.php <?php /*************************************************************************************/ /* Licencja na użytek prywatny i komercyjny. */ /* Wymaga pozostawiania poniższych danych o autorze i pochodzeniu skryptu. */ /* Autor: Labsta.com Laboratorium Designu */ /* Skrypt pochodzi ze strony http://websta.pl - Blog o grafice i projektowaniu stron */ /* 03/02/2010 */ /*************************************************************************************/ include ('ustawienia.php'); ob_start(); include('formularz.php'); $formularz = ob_get_contents(); ob_end_clean(); function wyswietl_forme($komunikat='') { global $formularz; $do_zmiany = array( '#komunikat#', '#strona#', '#nick#', '#mail#', '#temat#', '#tresc#' ); $zmien_na = array( $komunikat, $_SERVER['REQUEST_URI'], $_POST['nick'], $_POST['mail'], $_POST['temat'], $_POST['tresc'] ); $formularz = str_replace ( $do_zmiany, $zmien_na, $formularz); return $formularz; } function waliduj() { global $komunikat; global $valid; if( $valid['nick'] > 0 ) { if(strlen($_POST['nick']) < $valid['nick'] ){ $walidacja['nick'] = $komunikat['nick']; } } if( $valid['mail'] == 1 ) { if(!filter_var($_POST['mail'],FILTER_VALIDATE_EMAIL)) { $walidacja['mail'] = $komunikat['mail']; } } if( $valid['temat'] > 0 ) { if(strlen($_POST['temat']) < $valid['temat'] ){ $walidacja['temat'] = $komunikat['temat']; } } if( $valid['tresc'] > 0 ) { if(strlen($_POST['tresc']) < $valid['tresc'] ){ $walidacja['tresc'] = $komunikat['tresc']; } } if(empty($walidacja)) { return 'true'; }else{ return $walidacja; } } // Działanie if (($_SERVER['REQUEST_METHOD'] == 'POST')) {// wejście postem $walidacja = waliduj(); if ($walidacja == 'true'){ //poprawnie wypełniony formularz 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 print ' <div id="sukces"> <p>'.$komunikat['sukces'].'</p> </div> '; }else{ //bląd serwera print ' <div id="blad"> <p>'.$komunikat['fail'].'</p> </div> '; print wyswietl_forme(); } }else{ //błędna walidacja $blad_walidacji = $walidacja; $blad_walidacji = ' <div id="blad"> <p>'.$komunikat['blad'].'</p> <ul> '; foreach ($walidacja as $wpis) { $blad_walidacji .= '<li>'.$wpis.'</li>'; } $blad_walidacji .= ' </ul> </div> '; print wyswietl_forme($blad_walidacji); } }else{ // nowe wejście print wyswietl_forme(); } ?> formularz.css body { } a:focus { outline:none; /*usuwanie niebieskiej obwódki w FF*/ } #kontener { } #formularz { } #formularz div { } #formularz label { font-family:Tahoma, Geneva, sans-serif; font-size: 11px; display: block; font-weight: bold; } #formularz textarea { border-radius: 4px; border-style: solid; border-color: #ABABAB; border-width: 1px; } #formularz input[type=text] { border-radius: 4px; border-style: solid; border-color: #ABABAB; border-width: 1px; } #blad { background: #ff0000; padding: 10px; } #blad p{ } #sukces { } #sukces p{ } .red { color: #ff0000; } .forma { background-color: #131313; margin: 0 auto; width: 680px; height: 500px; border-radius: 10px; display: block; margin-top: 5px; } Pozdrawiam. Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Kamikadze Zgłoś post Napisano Luty 7, 2012 W formularzu dodajesz pola, nadajesz im nazwy a później w mail.php dodajesz $_POST i doklejasz je do pola gdzie masz treść. Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Najs Zgłoś post Napisano Luty 7, 2012 Byłbym bardzo wdzięczny gdybyś mi to napisał bo samemu mi to nie wychodzi, niby dodałem to pole ale to co tam wpiszę na email mi nie chcę przyjść. Przepraszam za moją nie "kumatość" Udostępnij ten post Link to postu Udostępnij na innych stronach
regdos 1848 Zgłoś post Napisano Luty 7, 2012 To pokaż co zrobiłeś to podpowiemy co jest źle. Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Zgłoś post Napisano Luty 7, 2012 (edytowany) Nie wiem w ogóle jak dodać to pole gdyż jestem zerem w php! Mam coś takiego, to jest kod tego pola, które widać na screenie powyżej. <div> <label>Temat:</label> <input type="text" id="temat" name="temat" value="#temat#" /> </div> Chcę zrobić takie same pole aby przychodziło w treści, więc z racji tego że nie kumam tego ani trochę, kopiuję ten kod i zmieniam tak: <div> <label>blablablabla:</label> <input type="text" id="tresc2" name="tresc2" value="#tresc2#" /> </div> Następnie w mail.php zmieniam część kodu na taki: $do_zmiany = array( '#komunikat#', '#strona#', '#nick#', '#mail#', '#temat#', '#tresc2#', '#tresc#' Po czym ładnie pole jest widoczne w formularzu, lecz gdy coś tam wpiszę i wyślę to na email to zawartość tego pola nigdzie się nie ukazuję, proszę o pomoc. Edytowano Luty 7, 2012 przez Gość (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
regdos 1848 Zgłoś post Napisano Luty 7, 2012 w $zmien_na = array( $komunikat, $_SERVER['REQUEST_URI'], $_POST['nick'], $_POST['mail'], $_POST['temat'], $_POST['tresc'] ); tam też musisz dodać $_POST['tresc2'] w tej samej kolejności co #tresc2# czyli przed $_POST['tresc']. i w 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 też musisz gdzieś dodać $_POST['tresc2'] bo to służy do wysyłki maila. Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Najs Zgłoś post Napisano Luty 7, 2012 (edytowany) @up Już dodaję w mail.php, czy mógłbyś mnie wyręczyć i dodać mi $_POST['tresc2'] w tym drugim podanym przez Ciebie kodzie gdyż jest tam dużo znaczników i nie mogę tego ogarnąć wzrokowo, nie wiem po prostu gdzie to wcisnąć. @edit Poradziłem sobie metodą dedukcji, dzięki za pomoc, bardzo mi pomogłeś. Pozdrawiam Edytowano Luty 7, 2012 przez Najs (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach