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

Przesyłanie metodą POST wartości zmiennych do tego samego pliku php

Object Storage Arubacloud
0 głosów
1,906 wizyt
pytanie zadane 3 listopada 2016 w PHP przez Gabriel Janczak Użytkownik (710 p.)

Stworzyłem skrypt w php który wyciąga dane z formularza i potem funkcją mail() wysyła je na skrzynkę pocztową. Funkcja ta jest osadzona narazie w innym pliku niż formularz co rozwiązuje częściowo mój problem jednak chciałbym żeby był osadzony w tym samym pliku. Chodzi o to żeby metodą POST wysłać dane do tego samego pliku i żeby kiedy użytkownik wchodzi na stronę to na wstępie nie dostawał komunikatu z błędem jeszcze zanim zdąży wypełnić pola i wysłać je.

Treść błędu to:

Notice: Undefined index: tresc in C:\...\mail.php on line 5

Notice: Undefined index: mail in C:\...\mail.php on line 6

Notice: Undefined index: telefon in C:\...\mail.php on line 7

Formularz

<form action="mail.php" method="post" id="formulaz">
    <input class="email" name="mail" type="text" placeholder="e-mail" style="width: 100%"></br>
    <input class="email" type="text" name="telefon" placeholder="telefon" style="width: 100%"></br>
    <textarea class="message" name="tresc" placeholder="wiadomość"></textarea>
    <input class="send" type="submit" value="wyślij">
</form>

Skrypt

//Zmienne przeflitrowane, przesłane od użytkownika 

$tresc = htmlspecialchars(trim($_POST['tresc']));
$mail = htmlspecialchars(trim($_POST['mail']));
$telefon = htmlspecialchars(trim($_POST['telefon']));

//Stałe zdefiniowane

$to = 'exampl@gmail.com';
$subject = 'TEST';
$headers = "Content-type: text/html; charset=utf-8\r\n";

// Skrypt walidujący i wysyłający maila
	
	if (isset($to)){
	
	
	if (!isset($tresc) and !isset($mail ) and !isset($telefon) ){
		
	}
	
		$error = false;
	
		//Sprawdzam czy istnieje ciasteczko
		
		if (isset($_COOKIE['send'])){
			$error = $error ='Odczekaj '.($_COOKIE['send']-time()).' sekund przed wysłaniem kolejnej wiadomości'; 
		}
		
		//Walidacja pola E-mail
		
		if (empty($mail)){
			
			$error = "Nie wypełniłniono pola E-mail!";
			
		}
		elseif (strlen($mail) > 40){
			
			$error = "E-mail nie może prekroczyć 40 znaków!";
			
		}
		elseif (!filter_var($mail, FILTER_VALIDATE_EMAIL)){
			$error = "Podano niepoprawyny E-mail!";
		}
		
		//Walidacja pola Telefon
		
		if (empty($telefon)){
			$error = "Nie wypełniłniono pola Telefon";
		}
		elseif  (strlen($telefon) > 15){
			$error = "Twój Telefon jest za długi. Może posiadać maksymalnie 15 znaków!";
		}
		
		//Walidacja pola wiadomość
		
		if (empty($tresc)){
			$error = "Nie wypełniono pola Wiadomość!";
		}
		elseif (strlen($tresc) > 400){
			$error = "Wiadomość przekroczyła maksymalną liczbę 400 znaków!";
		}
		
		//Wysyłanie wiadomości jeśli testy się powiodły i tworzenie ciasteczka
		
		if ($error == false){
			mail($to, $subject, $tresc."<br><br>"."<b>Dane kontaktowe:</b> <br>"."e-mail: $mail <br>"."telefon: $telefon", $headers);
			setcookie("send", time()+60, time()+60);
			$error= "Twoja wiadomość została wysłana!";
		}
	}
echo '<div class="komunikat" >'.$error.'</div>';

 

komentarz 3 listopada 2016 przez xandros Nałogowiec (29,450 p.)
> narazie

http://sjp.pwn.pl/slowniki/na%20razie.html

>  jednak chciałbym żeby był osadzony w tym samym pliku.

Czemu?

Prześlij formularz, a później zredirectuj na źródło

2 odpowiedzi

+1 głos
odpowiedź 3 listopada 2016 przez Jaroslaw Roj Obywatel (1,990 p.)
wybrane 3 listopada 2016 przez Gabriel Janczak
 
Najlepsza

może sprawdż na początku czy został wciśnięty przycisk submit a potem resztęwink

+1 głos
odpowiedź 3 listopada 2016 przez Filip31411 Dyskutant (8,820 p.)
W trzecim odc. kursu php na yt - pasja informatyki, jest wytłumaczone jak to zrobić.

Podobne pytania

0 głosów
0 odpowiedzi 191 wizyt
0 głosów
2 odpowiedzi 488 wizyt

92,556 zapytań

141,404 odpowiedzi

319,563 komentarzy

61,942 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!

...