Gość Pokuć Zgłoś post Napisano Maj 13, 2010 Mam problem z formularzem napisanym w HTML + PHP. Zwykły formularz w którym wpisuje się dane, klika Wyślij i dane idą na mojego maila. W wersji podstawowej ściągniętej z neta wszystko działało dobrze, przerobiłem nieco wygląd oraz dodałem nowe pola. Tu zaczynają się schody bo przy 9 polach wywala błędy i każe zrobić 5. Przy 5 polach działa ale nie wszystkie dane idą na maila... <html> <head> <title>Formularz</title> </head> <body> <form action="send.php" method="post"> <table> <tr> <td> Imie i Nazwisko </td> <td> <input type="text" name="imie" value="" /><br /> </td> </tr> <tr> <td> Ulica </td> <td> <input type="text" name="ulica" value="" /><br /> </td> </tr> <tr> <td> Numer domu </td> <td> <input type="text" name="numer" value="" /><br /> </td> </tr> <tr> <td> Kod </td> <td> <input type="text" name="kod" value="" /><br /> </td> </tr> <tr> <td> Miejscowosc </td> <td> <input type="text" name="miasto" value="" /><br /> </td> </tr> <tr> <td> Telefon </td> <td> <input type="text" name="telefon" value="" /><br /> </td> </tr> <tr> <td> Adres e-mail </td> <td> <input type="text" name="mail" value="" /><br /> </td> </tr> <tr> <td> Kraj </td> <td> <select name="kraj"> <option>Polska</option> </select> </td> </tr> </table> <br /> <br /> <input type="submit" name="Wyslij" value="Wyslij" /> <input type="reset" name="Kasuj" value="Kasuj" /> </form> </body> </html> <?php mail("mój_maill", $_POST['imie'], $_POST['ulica'], $_POST['numer'], $_POST['kod']); ?> Jak zrobić żeby wysyłało poprawnie dane ze wszystkich pól i żeby w temacie maila nie było zawartości danych z pierwszego pola tylko inny napis... Udostępnij ten post Link to postu Udostępnij na innych stronach
kafi 2425 Zgłoś post Napisano Maj 13, 2010 Zajefajny skrypt do wysyłania spamu ]:-> Do rzeczy - taki bardzo podstawowy formmailer można zrobić mniej więcej w ten sposób <?php if(!isset($_POST['Wyslij'])) { echo file_get_contents('formularz.html'); } else { mail('twoj_adres@email.pl', 'Wiadomosc z formularza', strip_tags(var_export($_POST, true))); } Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Pokuć Zgłoś post Napisano Maj 13, 2010 W pliku formularza muszę coś zmieniać ? Udostępnij ten post Link to postu Udostępnij na innych stronach
filip955 0 Zgłoś post Napisano Maj 13, 2010 Polecam ten kod. <?php // sprawdzamy, czy zmienna $submit jest pusta if (empty($_POST['submit'])) { // wyświetlamy formularz echo "<table border=\"0\"><form method=\"post\"> <tr> <td>Treść wiadomości</td> <td><textarea name=\"tresc\" style=\"width: 250px; height: 100px\"></textarea></td> </tr> <tr> <td>Imię, nazwisko lub nick</td> <td><input type=\"text\" name=\"imie\" style=\"width: 250px\"></td> </tr> <tr> <td>Adres e-mail</td> <td><input type=\"text\" name=\"email\" style=\"width: 250px\"></td> </tr> <tr> <td> </td> <td><input type=\"submit\" name=\"submit\" value=\"Wyślij\"> <input type=\"reset\" value=\"Od nowa\"></td></form> </tr> </table>"; } // sprawdzamy, czy zmienne przesłane z formularza nie są puste elseif (!empty($_POST['tresc']) && !empty($_POST['imie']) && !empty($_POST['email'])) { // jeżeli powyższy warunek jest spełniony tworzona jest wiadomość // zmienna $message zawiera treść wiadomości $message = "Treść wiadomości:\n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST[email]"; // zmienna $header zawiera przede wszystkim adres zwrotny $header = "From: $_POST[imie] <$_POST[email]>"; // funkcja mail() za pomocą której wiadomość zostanie wysłana @mail("adres@domena.pl","Wiadomosc ze strony WWW","$message","$header") or die('Nie udało się wysłać wiadomości'); // wyświetlenie komunikatu w przypadku powodzenia echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</strong></div>"; } // lub w przypadku nie wypełnienia formularza do końca else echo "<span style=\"color: #FF0000; text-align: center;\">Wypełnij wszystkie pola formularza!</span>"; ?> Przy większej ilości dodajesz pole do elseif (empty (...)) Potem w zmiennej message dodajesz zmienną-pole. Udostępnij ten post Link to postu Udostępnij na innych stronach
kafi 2425 Zgłoś post Napisano Maj 13, 2010 $header = "From: $_POST[imie] <$_POST[email]>"; Great job Po pierwsze - wywali przy raportowaniu dużo notice że stałe takie jak imie albo email nie istnieją. Bo jeśli coś ma być stringiem, to wypadało by to w apostrofy ująć... Drugie - wpisz sobie do pola POST/imie takie coś: jan kowalski\nCC: nowak@spamujemy.pl\n i zobacz sobie rezultat. ( \n to w tym zapisie kod znaku końca nowej linii - CRLF, a nie plaintekstowa wartość ukośnika i literki n ) I później tacy specjaliści wybitnie się dziwią, czemu ich konto zostało zablokowane za rozsyłanie spamu... === A odnośnie tego W pliku formularza muszę coś zmieniać ? Formularz via HTML kieruj do siebie samego (action=""), umieść go w pliku formularz.html, a ten mój kod umieść jako index.php Za funkcją mail możesz dodać albo jakieś przekierowanie, albo też echo z podziękowaniami za wysłanie. Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Pokuć Zgłoś post Napisano Maj 13, 2010 Znalazłem w necie nieco inny formularz który bez żadnych problemów działa. Boję się tylko że jak coś w nim zmienię to całość szlag trafi <?php if (count($_POST)) { ////////// USTAWIENIA ////////// $email = 'mój_mail'; // Adres e-mail adresata $subject = '...'; // Temat listu $message = 'Dziekujemy za wyslanie formularza'; // Komunikat $error = 'Wystapil blad podczas wysylania formularza'; // Komunikat b^3^edu $charset = 'iso-8859-2'; // Strona kodowa ////////////////////////////// $head = "MIME-Version: 1.0\r\n" . "Content-Type: text/plain; charset=$charset\r\n" . "Content-Transfer-Encoding: 8bit"; $body = ''; foreach ($_POST as $name => $value) { if (is_array($value)) { for ($i = 0; $i < count($value); $i++) { $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "\r\n"; } } else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "\r\n"; } echo mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head) ? $message : $error; } else { ?> <form action="?" method="post"> <div> <input name="Imie" />   Imie<br /> <input name="Nick" />   Nick<br> <p>...</p> <input type="radio" name="..." value="aaaaa" />PRZYKŁAD<br /> <p>...</p> <input type="radio" name="..." value="asasas" />PRZYKŁAD<br /> <p>...</p> <select name="..."> <option selected="selected">PRZYKŁAD 1</option> </select> <p>Komentarz:</p> <textarea name="Komentarz" cols="45" rows="10"></textarea> <br /><br /><br /> <input type="submit" value="Wyslij" /> <input type="reset" value="Resetuj" /> </div> </form> <?php } ?> Wszystko by było dobrze gdyby nie to że nie bardzo mogę rozgryźć za co jest odpowiedzialny ten fragment skryptu: foreach ($_POST as $name => $value) { if (is_array($value)) { for ($i = 0; $i < count($value); $i++) { $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "\r\n"; } } else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "\r\n"; } echo mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head) ? $message : $error; } else { ?> Czy muszę coś w tym fragmencie zmienić jeżeli dokonam zmiany w części html i jeżeli tak to co ? Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Pokuć Zgłoś post Napisano Maj 14, 2010 Temat można zamknąć i skasować, znalazłem rozwiązanie mojego problemu. Udostępnij ten post Link to postu Udostępnij na innych stronach
Marek607 655 Zgłoś post Napisano Maj 14, 2010 a podeślesz je?? Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Pokuć Zgłoś post Napisano Maj 14, 2010 Znalazłem w sieci formularz, ładnie opisane co jest za co odpowiedzialne, przerobiłem co nieco i działa. Chciałem sobie zrobić zwykły formularz zamówień w którym klient podaje imię, nazwisko, adres, miejscowość, maila i po kliknięciu wyślij dane idą na maila po ówczesnym sprawdzeniu czy odpowiednie pola są wypełnione a klient dostaje informacje zwrotną o przyjętym zamówieniu i informację w jaki sposób może dokonać płatności. Nie było łatwo no ale jakoś mi się udało Udostępnij ten post Link to postu Udostępnij na innych stronach
Marek607 655 Zgłoś post Napisano Maj 14, 2010 a podeślesz je?? Udostępnij ten post Link to postu Udostępnij na innych stronach