• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Formularz Kontaktowy

Object Storage Arubacloud
0 głosów
141 wizyt
pytanie zadane 9 kwietnia 2019 w PHP przez Majki Obywatel (1,410 p.)

Witam,

Niedawno stworzyłem swoją stronę internetową i chciałbym umieścić na niej działający formularz kontaktowy, problem z tym, że kompletnie się nie znam na php i to bardzo utrudnia, dlatego kopiuję formularze żywcem z poradników. Najbliżej mojego ideału był formularz przedstawiony w tym poradniku jednak i on ma dwie wady, po pierwsze po wysłaniu wiadomości formularz odsyła mnie do początku strony (na samą górę w moim onepage) a ja chciałbym, aby użytkownik został w sekcji w której jest formularz, a po drugie to chciałbym aby po wysłaniu, pola formularza się wyczyściły.  autor poradnika udostępnił kod publicznie: 

<?php
	// Message Vars
	$msg = '';
	$msgClass = '';

	// Check For Submit
	if(filter_has_var(INPUT_POST, 'submit')){
		// Get Form Data
		$name = htmlspecialchars($_POST['name']);
		$email = htmlspecialchars($_POST['email']);
		$message = htmlspecialchars($_POST['message']);

		// Check Required Fields
		if(!empty($email) && !empty($name) && !empty($message)){
			// Passed
			// Check Email
			if(filter_var($email, FILTER_VALIDATE_EMAIL) === false){
				// Failed
				$msg = 'Please use a valid email';
				$msgClass = 'alert-danger';
			} else {
				// Passed
				$toEmail = 'support@traversymedia.com';
				$subject = 'Contact Request From '.$name;
				$body = '<h2>Contact Request</h2>
					<h4>Name</h4><p>'.$name.'</p>
					<h4>Email</h4><p>'.$email.'</p>
					<h4>Message</h4><p>'.$message.'</p>
				';

				// Email Headers
				$headers = "MIME-Version: 1.0" ."\r\n";
				$headers .="Content-Type:text/html;charset=UTF-8" . "\r\n";

				// Additional Headers
				$headers .= "From: " .$name. "<".$email.">". "\r\n";

				if(mail($toEmail, $subject, $body, $headers)){
					// Email Sent
					$msg = 'Your email has been sent';
					$msgClass = 'alert-success';
				} else {
					// Failed
					$msg = 'Your email was not sent';
					$msgClass = 'alert-danger';
				}
			}
		} else {
			// Failed
			$msg = 'Please fill in all fields';
			$msgClass = 'alert-danger';
		}
	}
?>
<!DOCTYPE html>
<html>
<head>
	<title>Contact Us</title>
	<link rel="stylesheet" href="https://bootswatch.com/cosmo/bootstrap.min.css">
</head>
<body>
	<nav class="navbar navbar-default">
      <div class="container">
        <div class="navbar-header">    
          <a class="navbar-brand" href="index.php">My Website</a>
        </div>
      </div>
    </nav>
    <div class="container">	
    	<?php if($msg != ''): ?>
    		<div class="alert <?php echo $msgClass; ?>"><?php echo $msg; ?></div>
    	<?php endif; ?>
      <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
	      <div class="form-group">
		      <label>Name</label>
		      <input type="text" name="name" class="form-control" value="<?php echo isset($_POST['name']) ? $name : ''; ?>">
	      </div>
	      <div class="form-group">
	      	<label>Email</label>
	      	<input type="text" name="email" class="form-control" value="<?php echo isset($_POST['email']) ? $email : ''; ?>">
	      </div>
	      <div class="form-group">
	      	<label>Message</label>
	      	<textarea name="message" class="form-control"><?php echo isset($_POST['message']) ? $message : ''; ?></textarea>
	      </div>
	      <br>
	      <button type="submit" name="submit" class="btn btn-primary">Submit</button>
      </form>
    </div>
</body>
</html>

 

3 odpowiedzi

+1 głos
odpowiedź 9 kwietnia 2019 przez Tomek Sochacki Ekspert (227,510 p.)
Jeśli nie chcesz babrać się w PHP to zakładam, że robisz bardziej we froncie, więc może po prostu zrób request frontowy na submit formularza, a w PHP czy node (jeśli nie lubisz PHP) zrób sobie jeden endpoincik, który przyjmie dane do wysłania np. e-maile i zwróci jakiś status i na tej podstawie oczyścisz pola formularza lub wyświetlisz błąd. Są też w ogóle rozwiązania cloudowe do wysyłki e-maili więc jakby trochę poszukać to w sumie można z gotowych API skorzystać więc w ogóle zostałbyś w świecie JS.
0 głosów
odpowiedź 9 kwietnia 2019 przez Paweł123 Nałogowiec (33,500 p.)
Witam, kiedyś robiłem sobie prosty formularz w PHP. Może uda Ci się go jakos wykorzystać https://github.com/Pawwlak/Formularz-walidacja-w-php
0 głosów
odpowiedź 9 kwietnia 2019 przez Aleksander Kowalski Obywatel (1,510 p.)
Nie lepiej zrobić zwykły formularz który po kliknięciu buttona wyślij otworzy ci pocztę email i ci wyśle. Jeżeli ma być to formularz tylko kontaktowy to myślę ze to będzie najlepsze rozwiązanie bez użycia php tylko html/css i może js.
komentarz 9 kwietnia 2019 przez Majki Obywatel (1,410 p.)
Rozumiem o co Panu chodzi, ale mnie chodziło o wygodę, założyłem, że taki formularz będzie szybszy.
1
komentarz 9 kwietnia 2019 przez Aleksander Kowalski Obywatel (1,510 p.)
Formularze oparte na php wstawia się do serwisów gdzie wiadomość z tego formularza przesyła sie do bazy potem odczyt przez admina i może z poziomu strony odpisać gościowi(CRUD). Jezeli formularz ma być czysto kontaktowy to niema co sobie utrudniać życia.
komentarz 9 kwietnia 2019 przez Majki Obywatel (1,410 p.)
racja :D
1
komentarz 9 kwietnia 2019 przez Arkadiusz Waluk Ekspert (287,950 p.)
Pierwsze słyszę o takim podejściu. Jak są wymagania, że formularz ma się wysłać bez otwierania programu pocztowego na maila to się tak bez problemu robi. To, że programista się na tym nie zna, to niestety jego problem. Albo się tego uczy albo zleca komuś innemu, albo zmienia założenia i finalnie traci użytkownik/klient. Jeśli mowa o PHP to wystarczy konto mailowe z dostępem po SMTP, dla wygody SwiftMailer lub PHPMailer (mail jest niewygodne i problematyczne). Jeśli nie to tak jak napisał @Tomek Sochacki są też inne możliwości.

A otwieranie użytkownikowi programu pocztowego go dezorientuje, może nie działać gdy nie ma takowego wybranego. Do tego użytkownik może wszystko dowolnie zmieniać w wiadomości, a taki gotowy formularz możemy od razu dostosować do potrzeb i wysłać sformatowaną wiadomość. Mail na który wysyła musi być też jawny, a to nie zawsze musi być pożądane.
komentarz 9 kwietnia 2019 przez Aleksander Kowalski Obywatel (1,510 p.)
Ale sam @Majki pisał ze nie zna PHP.Na wszystko przyjdzie czas i z czasem ogarnie php. Nie warto łapać wiele szrok za ogon bo efekty będą małe albo żadne.Niech sie skupi na podstawach a potem na dodatkowych elementach tej układanki.
komentarz 9 kwietnia 2019 przez Arkadiusz Waluk Ekspert (287,950 p.)

Już o tym pisałem:

Albo się tego uczy albo zleca komuś innemu, albo zmienia założenia i finalnie traci użytkownik/klient

Jak dla mnie to, że programista czegoś nie umie, nie oznacza że ma zastosować słabe rozwiązanie, które jest często niewygodne dla użytkownika i powoduje szereg problemów. Ale jeśli taka będzie jego decyzja to nie widzę problemu, ja odradzam. Jak nie ma formularza kontaktowego lepiej wg mnie podać po prostu maila i każdy sobie tam napisze co będzie chciał i jak będzie chciał.

Podobne pytania

+1 głos
0 odpowiedzi 192 wizyt
pytanie zadane 11 stycznia 2023 w PHP przez Tadeusz Kwoka Nowicjusz (170 p.)
0 głosów
3 odpowiedzi 182 wizyt
pytanie zadane 30 sierpnia 2019 w PHP przez Ania2019 Użytkownik (530 p.)
0 głosów
1 odpowiedź 549 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...