Problem ze spacja w formularzu kontaktowym

0

Jako, że jestem tutaj nowy pragnę się ze wszystkimi przywitać. Mam problem z formularzem kontaktowym napisanym w php. Kod poniżej:

<?php
if (count($_POST))
{
	////////// USTAWIENIA //////////
	$email = '[email protected]';	// Adres e-mail adresata
	$subject = 'Zapis na prawo jazdy';	// Temat listu
	$message = 'Dziękujemy za wysłanie formularza';	// Komunikat
	$error = 'Wystąpił błąd podczas wysyłania formularza';	// Komunikat błędu
	$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">
<fieldset>
Imię i nazwisko:  <input type="text" name='Imię i nazwisko' /><p>
PESEL: 				<input type="text" name="PESEL" size="11" /><p>
Miejscowość:		<input type="text" name="Miejscowość" /><p>
Kod pocztowy:		<input type="text" name="Kod pocztowy" /><p>
Ulica:				<input type="text" name="Ulica" /><p>
Numer domu: 		<input type="text" name="Numer domu" /><p>
Miejsce urodzenia:<input type="text" name="Miejsce urodzenia" /><p>
Telefon:				<input type="text" name="Telefon" /><p>
Adres e-mail:		<input type="text" name="Adres e-mail" /><p>
Prawo jazdy: 		<input type="radio" name="Kategoria prawa jazdy" value="Kategoria B" />Kategoria B<p>
						<input type="submit" value="Wyślij" />
</fieldset>
</form>
<?php
}
?> 

W efekcie po wypełnieniu formularza otrzymuje wiadomość, która wygląda następująco:

Imię_i_nazwisko: dsfsdf
PESEL: dsfsdf
Miejscowość: sdfsdfs
Kod_pocztowy: dfsdfsd
Ulica: fsdfsdf
Numer_domu: dfdsfds
Miejsce_urodzenia: fdsfsdfsd
Telefon: fsdfsdf
Adres_e-mail: sdfsdfds
Kategoria_prawa_jazdy: Kategoria B

Co mam zrobić, aby pomiędzy wyrazami nie było podkreślenia dolnego lecz spacja? Z góry dziękuję za odpowiedź.

0

Nic nie możesz zrobić, tak działa interpreter PHP.

0

Nie używać spacji w name.
Nie można mieć spacji w kluczach tablic, więc PHP jak dostanie taką tablicę ze spacją w nazwie, to sobie zamienia.
Twój problem możesz obejść po prostu stosująć str_replace (jeżeli cokolwiek rozumiesz powyższy kod, a nie przekleiłeś to będziesz wiedział co i jak), ale ogólnie nie powinieneś używać name w takiej opisowej formie, raczej się stosuje krótkie nazwy, a potem wstawia, tytuł robiąc osobno.

0
dzek69 napisał(a):

Nie można mieć spacji w kluczach tablic, więc PHP jak dostanie taką tablicę ze spacją w nazwie, to sobie zamienia.

Spacje w kluczach tablic jak najbardziej mogą być, nie może być natomiast spacji w nazwach zmiennych itd. Ten burdel to m. in. konsekwencja register_globals, które zmienne POST automatycznie pakowało do pojedynczych zmiennych globalnych.

0

http://hr.php.net/manual/en/faq.html.php#faq.html.form-image

  • używanie polskich znaków też ryzykowne. Atrybut name służy jako indeks w $_POST nie jako opis do wyświetlenia gdziekolwiek. Poza tym wyświetlanie bezpośrednio wszystkiego, co wyśle user jest kiepskim pomysłem. Jakaś walidacja?

1 użytkowników online, w tym zalogowanych: 0, gości: 1