Skocz do zawartości

Formularz - przekierowanie po wysłaniu


AdamAGP

Rekomendowane odpowiedzi

Co tu robię źle? To przerobiony gotowiec nie znam się na PHP.

Chciałbym, żeby po wysłaniu otwierało nową stronę. W oryginale był $message w miejscu formularza.

<?php
if (count($_POST))
{

   $email = 'xxx@xx.pl';	   
   $subject = 'Artykuly czytelnikow';	   
   $error = 'Wystąpił błąd podczas wysyłania formularza';	  
   $charset = 'iso-8859-2';	 


   $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";
   }
   if ( mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head) )
{ header('location: pelnyadres');  }
else
echo $error;
}
else
{
?>
<div id="formularz1" style="text-indent: 0;">
<form action="?" method="post" onsubmit="if (this.tresc.value == '') { alert('Zanim wyślesz formularz, musisz wypełnić pole "treść" tekstem!'); return false }">

<span class="fontform">Imię i nazwiko lub nick:<br />
<input type="text" name="nazwisko" style="width: 200;" /><br />
Tytuł:<br />
<input type="text" name="tytul" style="width: 535;" /><br />
Treść:<br />
<textarea name="tresc" style="width: 535; height: 200" /></textarea><br />
e-mail (tylko do kontaktu – nieobowiązkowe):<br /></span>
<input type="text" name="email" style="width: 200;" /><br />
<input type="submit" value="Wyślij" />
</form>
</div>
<?php
}
?>

Można ten kod wstawić do pliku z roszerzeniem html na zasadzie formularz w pliku z action="send.php"

cała reszta w pliku send.php?

Odnośnik do komentarza
Udostępnij na innych stronach

A co to za problem akcje formularza na nowe okno:

<form action="?" method="post" target="_blank"

:)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

otworzy się ta sama strona z komunikatem w miejscu formularza tyle, że w nowym oknie/zakładce.
... tak to jest jak się zabiera za programowanie nie mając o nim nawet zielonego pojęcia ....

A PHP to taki prosty i przyjemny w implementacji język :)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

czyli ja to w złym miejscu wstaiłem? Bo mi się uruchamia po wysłaniu:

Warning: Cannot modify header information - headers already sent by (output started at /var/www/www.fotografia.kopernet.org/artykuly-o-fotografii.php:5) in /var/www/www.fotografia.kopernet.org/artykuly-o-fotografii.php on line 127

To jest gotowiec ja w ogóle nie znam składni php

... tak to jest jak się zabiera za programowanie nie mając o nim nawet zielonego pojęcia ....

A PHP to taki prosty i przyjemny w implementacji język :)

Ja się nie zabieram za programowanie, przynajmniej na razie, potrzebuję tylko formularz przerobić.

Odnośnik do komentarza
Udostępnij na innych stronach

Przed użyciem funkcji header nie można niczego wysyłać do przegladarki klienta (przed ta funkcja nie może znaleźć się żaden kod html)

Jeżeli jest to niemożliwe, to musisz uzyć buforowania

https://pl.php.net/manual/pl/function.ob-start.php

ps

niestety ale jak piszesz ze nie zabierasz sie za programowanie to tego nie zrobisz tak łatwo, w dodaku w niedalekiej przyszlości może Cie czekać modernizacja tego skryptu jak zacznie śmieci wysyłać.

.

Odnośnik do komentarza
Udostępnij na innych stronach

ps

niestety ale jak piszesz ze nie zabierasz sie za programowanie to tego nie zrobisz tak łatwo, w dodaku w niedalekiej przyszłości może Cie czekać modernizacja tego skryptu jak zacznie śmieci wysyłać.

Założyłem to:). To i tak jest wysyłane na taką śmieciarską skrzynkę najpierw.

Przed użyciem funkcji header nie można niczego wysyłać do przegladarki klienta (przed ta funkcja nie może znaleźć się żaden kod html)

Jeżeli jest to niemożliwe, to musisz uzyć buforowania

https://pl.php.net/manual/pl/function.ob-start.php

Czyli u mnie odpada bo ten skrypt php jest wstawiony do kodu html?

Ale to jak to jest w katalogach itp?

Odnośnik do komentarza
Udostępnij na innych stronach

zrób tak:

<? ob_start(); ?>

jakis tam kod html...


<?php // twój gotowiec
if (count($_POST))
{

   $email = 'xxx@xx.pl';	  

  ...
</form>
</div>
<?php
}
?>

znów kod html jezeli chcesz

<? 
$ret_str = ob_get_contents(); 
ob_end_clean(); 
echo $ret_str;
?>

czyli wystarczy ze na samym początku pliku wstwaisz:

<? ob_start(); ?>

a na koncu:

<? 
$ret_str = ob_get_contents(); 
ob_end_clean(); 
echo $ret_str;
?>

Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 tygodnie później...

Z najprostszych zabezpieczeń to na przyklad:

Checkbox zaznaczony w default z prośba o odhaczenie go. Jeżeli w w POST będze on zaznaczony to bot lub nieuważny użytkownik.

Lub TextField z prośbą o wpisanie wyniku jakiegoś działania matematycznego i następnie sprawdzenie jego poprawności.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności