Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Formularz kontaktowy
Forum PHP.pl > Forum > Przedszkole
xmateusz
PObrałem już jakiś czas temu ten oto formularz kontaktowy
http://css-tricks.com/examples/NiceSimpleContactForm/
No i moj epytanie jest banalnie proste a jednocześnie nie wiem jak sobie poradzić

W jaki sposób zrobić tak by wybrane przezemnie pole np "name" było polem obowiązkowym? Tak by po opuszczeniu danego pola pojawiła się strona o błędzie i przykładowy komentarz ?

Formularz ten wygląda jak by ta funkcja była aktywna a może autor jegoo miał zamiar to rozwinąc ale mu coś nie poszło ponieważ w dolnej części kodu jest
Kod
if ($success){
  print "<meta http-equiv=\"refresh\" content=\"0;URL=contactthanks.php\">";
}
else{
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
}


Czyli po napotkanym błędzie powinna pojawić się strona error.htm

MOżna opuścić wszystkie pola i wysłać a skrypt wyśle nam pustą wiadomość sad.gif

Jak to można naprawić ?

Poszę o jasność w pomocy ponieważ nie ukrywam ze orłem to ja nie jestem winksmiley.jpg
ostrylg
Jaką metodą przesyłane są zmienne ? POST czy GET (sprawdź to w <form method=GET albo POST>).

Jeżeli POST to robisz tak :

  1. <?php
  2.  
  3. if($_POST[name] =="")
  4. {
  5. echo 'nie wypełniłeś pola name';
  6. }
  7.  
  8. else {
  9.  
  10. i tutaj wrzucasz kod odpowiedzialny za wysłanie wiadomości.
  11.  
  12. }
  13. ?>


Jeżeli get to analogicznie zamiast post wrzucasz get.
xmateusz
Kod
<?php

$EmailFrom = "wzrastajacy@gmail.com";
$EmailTo = "wzrastajacy@gmail.com";
$Subject = "Nice & Simple Contact Form by CSS-Tricks";
$Rok = Trim(stripslashes($_POST['Rok']));
$City = Trim(stripslashes($_POST['City']));
$Email = Trim(stripslashes($_POST['Email']));
$Message = Trim(stripslashes($_POST['Message']));
$Wybor = Trim(stripslashes($_POST['Wybor']));

// validation
$validationOK=true;
if (!$validationOK) {
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
  exit;
}

// prepare email body text
$Body = "";
$Body .= "Rok urodzenia: ";
$Body .= $Rok;
$Body .= "\n";
$Body .= "City: ";
$Body .= $City;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $Email;
$Body .= "\n";
$Body .= "Message: ";
$Body .= $Message;
$Body .= "\n";
$Body .= "Wybor: ";
$Body .= $Wybor;
$Body .= "\n";
// send email
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redirect to success page
if ($success){
  print "<meta http-equiv=\"refresh\" content=\"0;URL=contactthanks.php\">";
}
else{
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
}
?>


Wynika że POST
Czyli powinno wyglądać to tak ,

Kod
<?php

if($_POST[name] =="")
{
echo 'nie wypełniłeś pola name';
}

else {

$EmailFrom = "wzrastajacy@gmail.com";
$EmailTo = "wzrastajacy@gmail.com";
$Subject = "Nice & Simple Contact Form by CSS-Tricks";
$Rok = Trim(stripslashes($_POST['Rok']));
$City = Trim(stripslashes($_POST['City']));
$Email = Trim(stripslashes($_POST['Email']));
$Message = Trim(stripslashes($_POST['Message']));
$Wybor = Trim(stripslashes($_POST['Wybor']));

// validation
$validationOK=true;
if (!$validationOK) {
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
  exit;
}

// prepare email body text
$Body = "";
$Body .= "Rok urodzenia: ";
$Body .= $Rok;
$Body .= "\n";
$Body .= "City: ";
$Body .= $City;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $Email;
$Body .= "\n";
$Body .= "Message: ";
$Body .= $Message;
$Body .= "\n";
$Body .= "Wybor: ";
$Body .= $Wybor;
$Body .= "\n";
// send email
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redirect to success page
if ($success){
  print "<meta http-equiv=\"refresh\" content=\"0;URL=contactthanks.php\">";
}
else{
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
}


}
?>


I działa smile.gif

Takie jeszcze pytanko czy zamiast
Kod
nie wypełniłeś pola name


Mogę użyć np. pliku html? z klasami css ? ponieważ teraz pojawia sie (czysta) strona tylko z napisem
Jeśli tak to jak to dobrze wstawić ?
ostrylg
Spróbuj zrobić tak

  1. <?php
  2.  
  3. if (!isset($_POST[name])) {
  4.  
  5.  print "<meta http-equiv=\"refresh\" content=\"0;URL=tutaj daj link do strony z formularzem i ?error=name\">";
  6.  
  7. }
  8.  
  9. ?>


I teraz na stronie z formularzem daj, (nad albo pod formularzem, najlepiej obok pola name)

  1. <?php
  2. if($_GET[error] == "name") echo 'nie wypełniłeś tego pola';
  3. ?>
becom
Witam! Mam problem, mam skrypt wysyłania
wiadomości z captcha i chcę mieć funkcje wysyłania kopii na adres
adresata. Udało stworzyć się skrypt tylko ze wiadomość dochodzi na
jeden adres email na email adresata lub email mój. adres formularza: www.token.lafra.pl/formularz23.php

Napewno jest to łatwe, tylko ja nie znam się na tym. Chciałbym aby kod pozostał ten sam, tzn. żeby tylko kilka linijek bylo zmienione.


Ponizej podaje kody:

Formularz:

  1. <?php
  2. <form id="token_form" name="token_form" action="sprawdz1.php" method="post" style="width: 842px; text-align: left; margin: 0 auto;">    
  3.        <fieldset>                      
  4.  
  5.  
  6.  
  7. <tr>
  8. <td>Treść wiadomości:<br></td>
  9. <td><textarea name="tresc" style="width: 250px; height: 100px"></textarea></td>
  10. </tr><br>
  11. <tr>
  12. <td>Imię, nazwisko lub nick:<br></td>
  13. <td><input type="text" name="imie" style="width: 250px"></td>
  14. </tr><br>
  15. <tr>
  16. <td>Adres e-mail:<br></td>
  17. <td><input type="text" name="email" style="width: 250px"></td></tr><br>
  18. <td><input type=checkbox name=send_to_me value=1 />Wyślij kopię na swój adres<br>
  19. </td>
  20.        
  21. </tr>
  22. <tr>
  23. <td> </td><br>
  24.  
  25. <div id="error"></div>                <br>                <img id="img_token" src="token.php">    
  26.            <br>                <br>    <label for="token_text">Kod z obrazka:</label><br>    
  27.            <input type="text" id="token_text" name="token_text" />            
  28.    <button type="button" onclick="reloadToken();">Odswiez obrazek</button>    <br>    
  29.  
  30. </table>
  31. <br>
  32.  
  33.                <button type="button" onclick="checkToken();">Wyślij</button>    <input type="reset" value="Wyszyść"></td>    
  34.    </fieldset>        </form>        <br>
  35. ?>






sprawdz1.php

  1. <?php
  2. if (count($_POST))
  3. {
  4.    ////////// USTAWIENIA //////////
  5.    $email = 'becom@o2.pl';    // Adres e-mail adresata
  6. $email=$_POST['email'];
  7.    $subject = 'Demo wiadomości';    // Temat listu
  8.    $message = 'Wiadomość wysłano!';    // Komunikat
  9.    $error = 'Wystšpił błšd podczas wysyłania formularza';    // Komunikat błędu
  10.    $charset = 'iso-8859-2';    // Strona kodowa
  11.    //////////////////////////////
  12.  
  13.    
  14.    $head =
  15.        "MIME-Version: 1.0r\n" .
  16.        "Content-Type: text/plain; charset=$charsetr\n" .
  17.        "Content-Transfer-Encoding: 8bit";
  18.    $body = '';
  19.    foreach ($_POST as $name => $value)
  20.    {
  21.        if (is_array($value))
  22.        {
  23.            for ($i = 0; $i < count($value); $i++)
  24.            {
  25.                $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "r\n";
  26.            }
  27.        }
  28.        else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "r\n";
  29.    }
  30.    echo mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head) ? $message : $error;
  31. }
  32. else
  33. {
  34. ?>
  35. <form action="?" method="post">
  36.  
  37. Tutaj umie�ć wszystkie pola formularza
  38.  
  39. </form>



Wiadomość dochodzi na ten adres email, który jest niżej np.:
$email = 'becom@o2.pl';
$email=$_POST['email']; <dojdzie na ten

$email=$_POST['email'];
$email = 'becom@o2.pl'; <dojdzie na ten


Proszę o pomoc.

Email: becom@o2.pl
GaduGadu: 2002083


Pozdrawiam Mateusz




problem rozwiązny, po prostu dodalem drugi raz funkcje wysylania wiadomosci,
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.