Redirect in formulier

Status
Niet open voor verdere reacties.

erbeeee

Gebruiker
Lid geworden
8 mei 2007
Berichten
42
Op mijn website heb ik een contactformulier geplaatst (HTML) die met php wordt verzonden. Nu wil ik dat de bezoeker nadat hij het bericht heeft ingevuld wordt doorverwezen naar een soort bevestigingspagina. Nu ben ik hier al een eeuwigheid mee bezig en het wil maar niet lukken. Heel veel verstand van php heb ik niet, maar ik ben er wel uit dat het iets met echo en header te maken heeft. Maar ik ben er dus niet uit hoe ik het moet plaatsen. Dit is het script:

Code:
<html>
<head>
<title>Contactformulier</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
$naam = htmlspecialchars($_POST['naam']);
$organisatie = htmlspecialchars($_POST['organisatie']);
$email = htmlspecialchars($_POST['email']);
$bericht = htmlspecialchars($_POST['bericht']);

{

$tijd = time();
$datum = strftime("%d-%m-%y om %H:%M", $tijd);
$ip = getenv("REMOTE_ADDR");
$message = "
Er is op $datum een bericht verzonden via de website. 

Naam afzender: " . $naam . " 
E-mailadres: " . $email . "
Organisatie: " . $organisatie . " 

" . $naam . " stuurde het volgende bericht:

" . $bericht . "

-------------------------------------------------------
Het bericht is verzonden van IP-adres: $ip


";

$mailadres = "mijn@emailadres.nl";
$message = str_replace ("<br>","\n", $message);
mail("$mailadres", "Bericht van de website",
$message, "From: " . $email . "");

echo header("Location: /redirectpagina.html");
}
?> 
</body>
</html>

Alles werkt dus verder, behalve de doorverwijzing... Wie o wie kan mij helpen?
 
PHP:
// i.p.v.

echo header(Location: /redirectpagina.html);

// zou ik eens proberen:

header('Location: redirectpagina.html');
exit;

// dus zonder de echo en zonder de forward-slash (/);
 
Hoi ErikBooy007,

Ook dat werkt helaas niet... :( Ik krijg dan na het verzenden van het formulier de volgende melding:

Warning: Cannot modify header information - headers already sent by (output started at /home/mensinkb/public_html/nieuw/post.php:8) in /home/mensinkb/public_html/nieuw/post.php on line 41
 
Dat kan kloppen, headers moeten eigenlijk als allereerste, voor alle output verzonden worden.

Er is wel een manier om hier omheen te werken. Het is niet de netste oplossing, maar het werkt.

Zet helemaal bovenaan je code:

PHP:
ob_start();

en helemaal onderaan je code:

PHP:
ob_end_flush();
 
Helaas krijg ik nog steeds een foutmelding:

Warning: Cannot modify header information - headers already sent by (output started at /home/mensinkb/public_html/nieuw/post.php:8) in /home/mensinkb/public_html/nieuw/post.php on line 43

Ik heb zowel
PHP:
header('Location: redirectpagina.html');
exit;
als
PHP:
echo header('Location: redirectpagina.html');
exit;
geprobeerd, maar het lukt dus nog niet. Ik heb ook geprobeerd of het werkte als ik nu de 'exit' weghaalde, maar helaas opnieuw zonder resultaat...
 
Heb je met ob_start() en ob_end_flush() geprobeerd??

Dat moet wel werken...

En echo header is sowieso fout.
 
Gaat nergens over dit. ob_flush en ob_end_flush zijn nutteloos.

Je wilt redirecten. Als je redirect, dan doe je dat gelijk als de pagina geladen wordt. Je krijgt een error omdat je output naar de browser stuurt. Dat is niet goed, punt, period.

Zie het zo:

Bezoeker drukt op knop -> gaat naar plek X -> wordt _direct_ doorverwezen naar plek Y.

Het heeft dus geen zin om op plek X output te laten zien, dat krijgt de gebruiker namelijk nooit te zien. Haal gewoon alle HTML-rotzooi uit je pagina, het is zo te zien toch alleen maar een verwerkingspagina. Variabelen ophalen, in mail knallen, versturen, doorsturen. Klaar, geen HTML voor nodig.
 
Laatst bewerkt:
waarom doet die niet gewoon onsubmit functie gebruiken. deze verwijst je naar de andere pagina als je op de submit knop duwt. bijvoorbeeld formpje

naam:
wachtwoord:
wie ben ik:

submit!
(submit naar pagina x)

pagina x:

bedankt voor het invullen van formpje!

of je gebruikt method post en je roept de gegevens op door

Code:
<tr> 
   <td width="20%">Naam:*</td> 
   <td width="80%"><input type="text" name="naam" size="30" value="<?php if (isset($_POST['naam'])) { print $_POST['naam']; } ?>"></td> 
</tr>

zo heb ik het gedaan in mijn forms en het werkt goed. hierachter zit wel een wat moeilijker script maar dat zou volgens mij niks uit mogen maken
 
Eh, dat gaat heel ergens anders over.
 
als ik het goed begrijp niet helemaal.

als ik het goed begrijp. dus uitgaan van bevestigingspagina.
wil hij dat mensen info invullen en dan op submit klikken en dan de informatie wat ze hebben ingevuld weergeven zodat ze het kunnen nakijken.

zo heb ik dat ook in mijn script hoor.

ik heb niet de hele code gelinkt maar alleen het gedeelte wat hierbij betrokken is

Code:
if($ok == "1" || $error == "1") {
$naam = $_POST['naam'];
$email = $_POST['email'];
$telefoonnummer = $_POST['telefoonnummer'];
$mobiel = $_POST['mobiel'];
$vragen = $_POST['vragen'];

header("Location:checkinput.php?naam=$naam&email=$email&telefoonnummer=$telefoonnummer&mobiel=$mobiel&vragen=$vragen");
}
}
?> 

<BR />
<br />
<table width="100%" border="0"> 


<tr> 
<td width="20%">Dhr/Mvr:</td>
<td width="40%">
<SELECT NAME="geslacht">
<OPTION>Kies een optie</OPTION>
<OPTION>Dhr</OPTION>
<OPTION>Mvr</OPTION>
</SELECT>
</td>
</tr>

<tr> 
   <td width="20%">Naam:*</td> 
   <td width="80%"><input type="text" name="naam" size="30" value="<?php if (isset($_POST['naam'])) { print $_POST['naam']; } ?>"></td> 
</tr> 

<tr> 
   <td width="20%">E-mailadres:*</td> 
   <td width="80%"><input type="text" name="email" size="30" value="<?php if (isset($_POST['email'])) { print $_POST['email']; } ?>"></td> 
</tr> 

<tr> 
   <td width="20%">Telefoonnummer:*</td> 
   <td width="80%"><input type="text" name="telefoonnummer" size="30" value="<?php if (isset($_POST['telefoonnummer'])) { print $_POST['telefoonnummer']; } ?>"></td> 
</tr> 

<tr> 
   <td width="20%">Mobiel:</td> 
   <td width="80%"><input type="text" name="mobiel" size="30" value="<?php if (isset($_POST['mobiel'])) { print $_POST['mobiel']; } ?>"></td> 
</tr> 

<tr>
	<td width="20%">Uw bericht:</td> 
	<td class="form_text" style="width: 285px name="vragen" value="<?php if (isset($_POST['vragen'])) { print $_POST['vragen']; } ?> ">
	<textarea name="vragen" cols="35" rows="7" onclick=" value='';">Hier kunt u vragen stellen of in schrijven of u een website wilt aanvragen.</textarea>
			</td>
		</tr>
		<tr>


 
<tr> 
   <td width="20%"></td> 
   <td width="80%"> 
      &nbsp;<br> 
      <input type="submit" name="submit" value="Verzenden"> 


   </td> 
</tr> 

</form>

bij dit script vraag ik informatie op. nadat ze dit hebben ingevuld klikken ze op submit.
dan word die doorverzonden naar het bevestingsscriptje. alle informatie word verzonden via de header. dit omdat dit zover ik wist de makkelijkste manier was om informatie op te vragen. wel onveilig voor openbare computers gezien mensen die informatie dan in de url kunnen nalezen.

in het bevestigingsscript kun je de informatie opvragen


Code:
$bedrijfsnaam			=	$_GET['bedrijfsnaam'];
$naam				=	$_GET['naam'];
$email_from			=	$_GET['email'];
$telefoon			=	$_GET['telefoonnummer'];
$mobiel				=	$_GET['mobiel'];
$vragen				=	$_GET['vragen'];


echo "Naam: " .$naam. "<br />";
echo "E-Mail: " .$email_from. "<br />";
echo "Telefoonnummer: " .$telefoon. "<br />";
if(isset($mobiel)){
	echo "Mobiel: " .$mobiel. "<br />";
echo "Vragen: " .$vragen. "<br />";

}
?>


dit gebruik ik.

formpje voor informatie op te vragen verzenden naar bevestiging zodat mensen hun informatie kunnen nalezen en dan verzenden via php
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan