Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów
Formularz HTML - Wersja do druku

+- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl)
+-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www)
+--- Dział: xHTML, CSS, JavaScript (https://www.webmastertalk.pl/forum-xhtml-css-javascript)
+--- Wątek: Formularz HTML (/thread-formularz-html)



Formularz HTML - MartinTcV - 15-04-2011

Witam wszystkich.
Na stronie internetowej chciałbym umieścić prosty formularz kontaktowy. Przy pomocy poradnika ze strony kurshtml.boo.pl stworzyłem coś takiego:
Kod:
<html>
<head>
<title>Formularz</title>
<meta http-equiv="Content-type" content="text/html; charset=windows-1250" />
</head>
<body>
<form action="[email protected]" method="post" enctype="text/plain">
<div>
<center>
<table>
<tr>
<td>Imię i nazwisko: </td>
<td><input type="text" name="imie" maxlength="50"></td>
</tr><br>
<tr>
<td>Numer telefonu: </td>
<td><input type="text" name="telefon"></td>
</tr><br>
<tr>
<td>E-mail: </td>
<td><input type="text" name="mail"></td>
</tr><br>
<tr>
<td>Temat: </td>
<td><input type="text" name="temat"></td>
</tr><br>
<tr>
<td>Treść wiadomości: </td>
<td><textarea name="tresc" rows="5" cols="30">Wpisz treść

wiadomości</textarea></td>
</tr><br>
</table>
</center>
<center>
<table>
<tr>
<td><input type="submit" name="wyslij" value="Wyślij"></td>
<td><input type="reset" value="Wyczyść formularz"></td>
</tr>
</table>
</center>
</div>
</form>
</body>
</html>

Co musiałbym teraz zrobić, by po umieszczeniu go na stronie można było wysłać emaile z tym? Musiałbym połączyć to jakoś z PHP? Wydaje mi się, że takie coś możliwe jest na PHP, a na HTML niestety nie.
Jeśli tak to jak to by trzeba było zrobić?

Z góry dziękuję za wszelkie odpowiedzi.


RE: Formularz HTML - dziamber - 15-04-2011

W miejsce atrybutu action znacznika form wpisz nazwę pliku php w którym wysyłasz te maile, np. mail.php. Następnie skorzystaj z funkcji mail udostępnianej standardowo przez php.

Coś w stylu:
Kod PHP:
<?php
$imie 
$_POST['imie'];
$tresc $_POST['tresc'];
$temat $_POST['temat'];
$email $_POST['email'];
if(
mail($email$temat$tresc)) {
echo 
"Wiadomosc zostala wyslana";
}
?>

To jest tylko przykład, normalnie musisz się upewnić że nadesłane dane są zabezpieczone przed wysłaniem i takie tam. No ale ja wszystkiego za Ciebie nie zrobie.


RE: Formularz HTML - FaoX - 15-04-2011

Wszystko jest OK, ale jest inny sposób. Podam może się przydać dla innych.

Na twoją strone do pliku .html wklejasz ten kod tam gdzie ma być wyświetlany formularz kontaktowy. Oto ten kod:
Kod:
<form method="post" action="wyslij.php" name="kontakt">
        <div><li><label for="nick">Imię: </label><ul><input type="text" class="text" id="nick" name="nick" ></div>
        <div><li><label for="temat">Temat: </label><ul><input type="text" name="temat" class="text" id="temat" ></div>
        <div><li><label for="mail">Twój adres e-mail: </label><ul><input type="text" name="mail" class="text" id="mail" ></div>
        <div><li><label for="tresc">Treść: </label><ul><textarea name="tresc" id="tresc" rows="5" cols="50" ></textarea></div>
        <div><ul><input type="submit" value="Wyślij" /></div>
        </form>

"wyslij.php" zamieniasz na nazwe pliku w którym jest kod PHP. Oto ten kod:
Kod:
<?php
if (!nick || !mail || !temat || !tresc)
{    
echo "Nie uzupełniłe¶ wszystkich rubryk.";
exit;  
}

$wiadomosc =
"Imie: ".$_POST['nick']."

e- mail: ".$_POST['mail']."

Tresc: ".$_POST['tresc']."  ";

$tematyka = "Nazwa twojej strony - ".$temat;


mail ("-----------------------------------", $tematyka, $wiadomosc );
echo "Dziekujemy za wysłanie do nas wiadomości,";
echo "<ul>o treści: <ul />";
echo "Twoje imię: <strong>".$nick."</strong><ul />";
echo "Temat: <strong>".$temat."</strong><ul />";
echo "Twój adres e-mail: <strong>".$mail."</strong><ul />";
echo "Treść: <strong>".$tresc."</strong><ul />";
?>

W miejsce ------- wpisujesz swój e-mail, na który będą przychodzić wiadomości.

Na dole dam załącznik do ppliku wyślij.php
Myśle że pomogłem. Pozdrawiam.


RE: Formularz HTML - MartinTcV - 15-04-2011

Dobra, mam coś takiego w pliku .html
Kod:
<html>
<head>
<title>Formularz</title>
<meta http-equiv="Content-type" content="text/html; charset=windows-1250" />
</head>
<body>
<form method="post" action="wyslij.php" name="kontakt">
<div>
<center>
<table>

<tr>
<td><label for="nick">Imię i nazwisko: </label></td>
<td><input type="text" class="text" id="nick" name="nick"></td>
</tr><br>

<tr>
<td><label for="numer">Numer telefonu: </label></td>
<td><input type="text" class="text" id="numer" name="numer"></td>
</tr><br>

<tr>
<td><label for="mail">E-mail: </label></td>
<td><input type="text" class="text" id="mail" name="mail"></td>
</tr><br>

<tr>
<td><label for="temat">Temat: </label></td>
<td><input type="text" class="text" id="temat" name="temat"></td>
</tr><br>

<tr>
<td><label for="tresc">Treść wiadomości: </label></td>
<td><textarea name="tresc" id="tresc" rows="5" cols="30"></textarea></td>
</tr><br>

</table>
</center>
<center>
<table>
<tr>
<td><input type="submit" name="wyslij" value="Wyślij"></td>
<td><input type="reset" value="Wyczyść formularz"></td>
</tr>
</table>
</center>
</div>
</form>
</body>
</html>

i to w pliku wyslij.php
Kod:
<?php
if (!nick || !numer || !mail || !temat || !tresc)
{    
echo "Nie uzupełniłeś wszystkich rubryk.";
exit;  
}

$wiadomosc =
"Imię i nazwisko: ".$_POST['nick']."

Numer telefonu: ".$_POST['numer']."

E-mail: ".$_POST['mail']."

Treść: ".$_POST['tresc']."  ";

$tematyka = "Temat: ".$temat;

mail ("[email protected]", $tematyka, $wiadomosc );
echo "Dziękujemy za wysłanie do nas wiadomości.<br>";
echo "Postaramy się odpowiedzieć na nią w czasie 48h.<br><br>";
echo "Treść wiadomości:<br>";
echo "Twoje imię i nazwisko: <strong>".$_POST['nick']."</strong><br>";
echo "Twój numer telefonu: <strong>".$_POST['numer']."</strong><br>";
echo "Twój adres e-mail: <strong>".$_POST['mail']."</strong><br>";
echo "Temat: <strong>".$_POST['temat']."</strong><br>";
echo "Treść: <strong>".$_POST['tresc']."</strong><br>";
?>

Wszysto prócz jednej rzeczy jest OK. Wpiszę temat wiadomości, ale nie wyświetli mi tematu we wiadomości na poczcie. Tylko wychodzi "Temat:", a chciałbym, żeby do tego dodało jeszcze temat wpisany przez użytkownika.
Co muszę zmienić w tej linijce?
Cytat: $tematyka = "Temat: ".$temat;



RE: Formularz HTML - dziamber - 15-04-2011

Kod PHP:
$tematyka "Temat: ".$_POST['temat']; 

A tak poza tym to ten kod który teraz masz to można o kant dupy roztrzaskać.


RE: Formularz HTML - MartinTcV - 16-04-2011

A czemuż to? Co w nim jest nie tak?


RE: Formularz HTML - dziamber - 16-04-2011

1. Nie zabezpieczasz w żaden sposób wartości otrzymywanych od użytkownika. "Dane dostarczane od użytkownika należy zawsze traktować jako skarzone"
2. Sposób sprawdzania czy użytkownik wypełnił pole jest bezużyteczne. Wystarczy wcisnąć spacje i takim sposobem skrypt traktuje zmienną jakby miała wartość.
3. Są bardziej eleganckie sposoby obsługi błędów niż zatrzymywanie całego skryptu funkcją exit. Użytkownik musi cofać się w przeglądarce aby ponownie wypełnić formularz


RE: Formularz HTML - MartinTcV - 16-04-2011

Pierwszy raz robie taki formularz, więc skąd mam o tym wszystkim mieć pojęcie?
1. Jak mam niby zabezpieczyć te wartości?
2. Może i bezużyteczne, ale może być ;p
3. Co do tego to nie mam również żadnych pomysłów...


RE: Formularz HTML - dziamber - 16-04-2011

Szukanie w googlach nie boli, na prawdę. Powiem Ci, że co do 1 to masz od tego ogrom funkcji choćby htmlspecialchars i inne. Reszte sam rusz się i poszukaj