Mailformulier
Ik heb het volgende script gemaakt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?PHP
if(empty($_POST['naam']) OR empty($_POST['email']) OR empty($_POST['bericht'])){
header ("location:index.php?page=r");
}
else{
$recipient = "[email protected]";
$subject = "E-mail vanaf website";
$mailheaders = "From: <$naam> \r\n";
$mailheaders .= "Reply-To: <$email>\r\n";
$msg .= "Naam: $naam\n";
$msg .= "E-mail: $email\n";
$msg .= "Bericht: $bericht\n";
mail($recipient, $subject, $msg, $mailheaders) or die ("Couldn't send mail!");
header ("location:index.php?page=q");
}
?>
if(empty($_POST['naam']) OR empty($_POST['email']) OR empty($_POST['bericht'])){
header ("location:index.php?page=r");
}
else{
$recipient = "[email protected]";
$subject = "E-mail vanaf website";
$mailheaders = "From: <$naam> \r\n";
$mailheaders .= "Reply-To: <$email>\r\n";
$msg .= "Naam: $naam\n";
$msg .= "E-mail: $email\n";
$msg .= "Bericht: $bericht\n";
mail($recipient, $subject, $msg, $mailheaders) or die ("Couldn't send mail!");
header ("location:index.php?page=q");
}
?>
Zoals je ziet checkt dit script of alle velden zijn ingevuld, zo niet dan opent ie page=r. Dat werkt allemaal perfect.
Maar, stel dat ze maar 1 veld vergeten in te vullen, en ik stuur ze terug via een standaard link, dan zijn de overige 2 velden natuurlijk ook weer leeg.
Kan ik een link aanmaken die ervoor zorgt dat de velden die wél waren ingevuld ingevuld blijven mbv die link???
Ik hoop dat jullie me kunnen helpen,
MvGr,
Jules
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?
session_start();
$_SESSION['naam'] = $_POST['naam'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['bericht'] = $_POST['bericht'];
?>
session_start();
$_SESSION['naam'] = $_POST['naam'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['bericht'] = $_POST['bericht'];
?>
En dan in index.php?page=r zoiets als
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?
session_start();
echo '<input type="text" name="naam" value="'.$_SESSION['naam'].'">';
echo '<input type="text" name="email" value="'.$_SESSION['email'].'">';
echo '<textarea name="naam">'.$_SESSION['bericht'].'</textarea>';
?>
session_start();
echo '<input type="text" name="naam" value="'.$_SESSION['naam'].'">';
echo '<input type="text" name="email" value="'.$_SESSION['email'].'">';
echo '<textarea name="naam">'.$_SESSION['bericht'].'</textarea>';
?>
maar nu krijg ik de volgende foutmelding
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/httpd/vhosts/dedoorbraak.org/httpdocs/verstuur_email.php:1) in /home/httpd/vhosts/dedoorbraak.org/httpdocs/verstuur_email.php on line 3
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/httpd/vhosts/dedoorbraak.org/httpdocs/verstuur_email.php:1) in /home/httpd/vhosts/dedoorbraak.org/httpdocs/verstuur_email.php on line 3
Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/dedoorbraak.org/httpdocs/verstuur_email.php:1) in /home/httpd/vhosts/dedoorbraak.org/httpdocs/verstuur_email.php on line 11
Hoe kan dat nou...?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?
session_start();
// het stuk voor ?page=r (het formulier als het goed is..)
if ($_GET['page'] == 'r') {
$valueName = !empty($_SESSION['naam']) ? ' value="'.$_SESSION['naam'].'"' : '';
$valueEmail = !empty($_SESSION['email']) ? ' value="'.$_SESSION['email'].'"' : '';
$valueBericht = !empty($_SESSION['bericht']) ? $_SESSION['bericht'] : '';
echo '<form method="post" action="?page=s">';
echo '<input type="text" name="naam"'.$valueName.'><br>';
echo '<input type="text" name="email"'.$valueEmail.'><br>';
echo '<textarea name="bericht">'.$valueBericht.'</textarea><br>';
echo '<input type="reset" value="Wissen"> <input type="submit" value="Verzenden"><br>';
echo '<form>';
}
// het stuk voor ?page=q (pagina waar je uitkomt als mail goed verzonden in)
elseif ($_GET['page'] == 'q') {
echo 'Bericht verzonden blaaaaaaaaaaaaat';
}
// het stuk om te verzenden, ga ik ff vanuit dat het ?page=s is
elseif ($_GET['page'] == 's') {
if (empty($_POST['naam']) || empty($_POST['email']) || empty($_POST['bericht'])){
$_SESSION['naam'] = $_POST['naam'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['bericht'] = $_POST['bericht'];
session_write_close();
header ('location:hulp2.php?page=r');
}
else{
$_SESSION['naam'] = $_POST['naam'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['bericht'] = $_POST['bericht'];
$recipient = '[email protected]';
$subject = 'E-mail vanaf website';
$mailheaders = "From: <".$_POST['naam']."> \r\n";
$mailheaders .= "Reply-To: <".$_POST['email'].">\r\n";
$msg = "Naam: ".$_POST['naam']."\n";
$msg .= "E-mail: ".$_POST['email']."\n";
$msg .= "Bericht: ".$_POST['bericht']."\n";
mail($recipient, $subject, $msg, $mailheaders) or die ('Couldn\'t send mail!');
unset($_SESSION['naam'], $_SESSION['email'], $_SESSION['email']);
if (isset($_SESSION['bericht'])) {
unset($_SESSION['bericht']);
}
header ('location:hulp2.php?page=q');
}
}
?>
session_start();
// het stuk voor ?page=r (het formulier als het goed is..)
if ($_GET['page'] == 'r') {
$valueName = !empty($_SESSION['naam']) ? ' value="'.$_SESSION['naam'].'"' : '';
$valueEmail = !empty($_SESSION['email']) ? ' value="'.$_SESSION['email'].'"' : '';
$valueBericht = !empty($_SESSION['bericht']) ? $_SESSION['bericht'] : '';
echo '<form method="post" action="?page=s">';
echo '<input type="text" name="naam"'.$valueName.'><br>';
echo '<input type="text" name="email"'.$valueEmail.'><br>';
echo '<textarea name="bericht">'.$valueBericht.'</textarea><br>';
echo '<input type="reset" value="Wissen"> <input type="submit" value="Verzenden"><br>';
echo '<form>';
}
// het stuk voor ?page=q (pagina waar je uitkomt als mail goed verzonden in)
elseif ($_GET['page'] == 'q') {
echo 'Bericht verzonden blaaaaaaaaaaaaat';
}
// het stuk om te verzenden, ga ik ff vanuit dat het ?page=s is
elseif ($_GET['page'] == 's') {
if (empty($_POST['naam']) || empty($_POST['email']) || empty($_POST['bericht'])){
$_SESSION['naam'] = $_POST['naam'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['bericht'] = $_POST['bericht'];
session_write_close();
header ('location:hulp2.php?page=r');
}
else{
$_SESSION['naam'] = $_POST['naam'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['bericht'] = $_POST['bericht'];
$recipient = '[email protected]';
$subject = 'E-mail vanaf website';
$mailheaders = "From: <".$_POST['naam']."> \r\n";
$mailheaders .= "Reply-To: <".$_POST['email'].">\r\n";
$msg = "Naam: ".$_POST['naam']."\n";
$msg .= "E-mail: ".$_POST['email']."\n";
$msg .= "Bericht: ".$_POST['bericht']."\n";
mail($recipient, $subject, $msg, $mailheaders) or die ('Couldn\'t send mail!');
unset($_SESSION['naam'], $_SESSION['email'], $_SESSION['email']);
if (isset($_SESSION['bericht'])) {
unset($_SESSION['bericht']);
}
header ('location:hulp2.php?page=q');
}
}
?>
Code (php)
Moet worden:
Maar ik kan m'n bericht niet meer wijzigen..
Reden van de foutmelding van die headers die jij kreeg is trouwens dat session_start(); helemaal bovenaan het script moet staan omdat het header gegevens verzend. Net zoiets als header();
Gewijzigd op 09/08/2004 15:19:00 door dutchcamel
Oh..ik zie trouwens dat ik hulp2.php gebruikt heb ipv index.php... Kun je zelf wel veranderen denk ik zo :)
Kwartet :P
ik heb nu alles zo gedaan.
maar als dat header() niet werkt dan heb ik er toch eigenlijk niks aan?
Het werkt dus verder perfect, alleen nu krijg je beide keren een leeg scherm te zien. Omdat ie die page= niet kan ophalen, dus heb ik e headers() weg moeten halen
Zie: www.dedoorbraak.org
Gewijzigd op 09/08/2004 15:37:00 door Jules
w8, ik gebruik nu natuurlijk gewoon echo(); :)
Ah ok... Ik zou wel nog maken dat bij de mededeling "kan niet verzenden" of iets anders wat er komt te staan nog een link erbij staat om terug te gaan :)
maar dan zijn alsnog alle velden weer leeg.
Hoe moet ik de string van de link terug opstellen?