Swift forumlier problemen
Ik heb Swift aan de praat en het werkt TOPPIE!
Wat me wel opvalt is dat wanneer iemand zijn e-mail verkeerd invult of een verld vergeet je de melding netjes krijgt dat ie iets fout gedaan hebt of bent vergeten MAAR... de velden zijn allemaal leeg!
Op zich bij een standaard formulier niet zo'n mega probleem maar grote forumlieren minder fijn.
Is daar een optie voor om dit te activeren?
Stef
Formuliercontrole
Je zou eens naar dit script kunnen kijken. Daar pas ik onder andere dat principe toe.
Bedankt voor je reactie.. ik zal eens kijken of ik dat voor elkaar krijg ;)
UPDATE
VEEEL te veel werk voor een simpel forumlier wat ik nu heb. Ik skip het maar... Geen idee hoe ik dit script moet combineren met Swift.. ben al blijf dat ik dat na 2 dagen aan de praat heb.
Gewijzigd op 01/01/1970 01:00:00 door Stef Segers
ps. Je hoeft uiteraard niet het hele script over te nemen, enkel de belangrijke onderdelen eruit te pikken. Het is alleen een voorbeeld waarin je kunt zien hoe dat werkt.
pps. Contactformulier met Swift Mailer, in dit script pas ik het ook toe. Zie regel 35.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Hier mijn form:
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
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
<table border="0" width="100%">
<tr>
<td>
<?php
//Display an error if something went wrong
if (!empty($_GET["error"]))
{
switch ($_GET["error"])
{
case "not_enough_info": ?>
<strong style="color: red;">U bent vergeten een veld in te vullen<strong><?php
break;
case "invalid_email": ?>
<strong style="color: red;">U heeft een verkeerd email address opgegeven</strong><?php
break;
}
}
?>
<form action="form_handle.php" method="post">
<table width="100%" border="0" cellspacing="2" cellpadding="2">
<tr>
<td valign="top">Volledige naam:</td>
<td valign="top"><input type="text" name="naam" /></td>
</tr>
<tr>
<td valign="top">E-mailadres:</td>
<td valign="top"><input type="text" name="email" /></td>
</tr>
<tr>
<td valign="top">Telefoon:</td>
<td valign="top"><input type="text" name="telefoon" /></td>
</tr>
<tr>
<td valign="top">Datum trouwerij:</td>
<td valign="top"><input type="text" name="datum_trouwerij" /></td>
</tr>
<tr>
<td colspan="2" valign="top"><input type="submit" value="Verstuur de email" /></td>
<td valign="top"> </td>
</tr>
</table>
</form>
</table>
</td>
</tr>
</table>
<tr>
<td>
<?php
//Display an error if something went wrong
if (!empty($_GET["error"]))
{
switch ($_GET["error"])
{
case "not_enough_info": ?>
<strong style="color: red;">U bent vergeten een veld in te vullen<strong><?php
break;
case "invalid_email": ?>
<strong style="color: red;">U heeft een verkeerd email address opgegeven</strong><?php
break;
}
}
?>
<form action="form_handle.php" method="post">
<table width="100%" border="0" cellspacing="2" cellpadding="2">
<tr>
<td valign="top">Volledige naam:</td>
<td valign="top"><input type="text" name="naam" /></td>
</tr>
<tr>
<td valign="top">E-mailadres:</td>
<td valign="top"><input type="text" name="email" /></td>
</tr>
<tr>
<td valign="top">Telefoon:</td>
<td valign="top"><input type="text" name="telefoon" /></td>
</tr>
<tr>
<td valign="top">Datum trouwerij:</td>
<td valign="top"><input type="text" name="datum_trouwerij" /></td>
</tr>
<tr>
<td colspan="2" valign="top"><input type="submit" value="Verstuur de email" /></td>
<td valign="top"> </td>
</tr>
</table>
</form>
</table>
</td>
</tr>
</table>
En hier mijn formhandler.php
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
53
54
55
56
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
53
54
55
56
<?php
//Check if the required fields were sent
// Redirect back to the form if not
if (empty($_POST["naam"]) || empty($_POST["email"])
|| empty($_POST["telefoon"]) || empty($_POST["datum_trouwerij"]))
{
//redirect back to form
header("Location: ./index.php?error=not_enough_info"); //This should really be an absolute URL if you know it
exit();
}
$name = $_POST['naam'];
$email = $_POST['email'];
$title = "Trouwreportage aanvraag";
$body = "Trouwreportage aanvraag via de landingspagina:\n\n";
$body .= "\n\n";
$body .= 'Naam: '.$_POST['naam']."\n\n";
$body .= 'Tel: '.$_POST['telefoon']."\n\n";
$body .= 'Email: '.$_POST['email']."\n\n";
$body .= 'Datum trouwerij: '.$_POST['datum_trouwerij']."\n\n";
if (!preg_match("/[a-zA-Z0-9_\\.-]+@[a-zA-Z0-9_\\.-]+/", $email))
{
header("Location: ./index.php?error=invalid_email");
exit();
}
require_once "Swift.php";
require_once "Swift/Connection/SMTP.php";
if (is_writable("/tmp"))
{
Swift_CacheFactory::setClassName("Swift_Cache_Disk");
Swift_Cache_Disk::setSavePath("tmp");
}
$swift =& new Swift(new Swift_Connection_SMTP("mail.xxx.nl"));
$sender =& new Swift_Address($email, $name);
$message =& new Swift_Message("Trouwreportage aanvraag");
$message->attach(new Swift_Message_Part($body));
$sent = $swift->send($message, "[email protected]", $sender);
$swift->disconnect();
if ($sent)
{
header("Location: ./success.php");
exit();
}
else
{
header("Location: ./index.php?error=sending_failed");
exit();
}
[/code]
//Check if the required fields were sent
// Redirect back to the form if not
if (empty($_POST["naam"]) || empty($_POST["email"])
|| empty($_POST["telefoon"]) || empty($_POST["datum_trouwerij"]))
{
//redirect back to form
header("Location: ./index.php?error=not_enough_info"); //This should really be an absolute URL if you know it
exit();
}
$name = $_POST['naam'];
$email = $_POST['email'];
$title = "Trouwreportage aanvraag";
$body = "Trouwreportage aanvraag via de landingspagina:\n\n";
$body .= "\n\n";
$body .= 'Naam: '.$_POST['naam']."\n\n";
$body .= 'Tel: '.$_POST['telefoon']."\n\n";
$body .= 'Email: '.$_POST['email']."\n\n";
$body .= 'Datum trouwerij: '.$_POST['datum_trouwerij']."\n\n";
if (!preg_match("/[a-zA-Z0-9_\\.-]+@[a-zA-Z0-9_\\.-]+/", $email))
{
header("Location: ./index.php?error=invalid_email");
exit();
}
require_once "Swift.php";
require_once "Swift/Connection/SMTP.php";
if (is_writable("/tmp"))
{
Swift_CacheFactory::setClassName("Swift_Cache_Disk");
Swift_Cache_Disk::setSavePath("tmp");
}
$swift =& new Swift(new Swift_Connection_SMTP("mail.xxx.nl"));
$sender =& new Swift_Address($email, $name);
$message =& new Swift_Message("Trouwreportage aanvraag");
$message->attach(new Swift_Message_Part($body));
$sent = $swift->send($message, "[email protected]", $sender);
$swift->disconnect();
if ($sent)
{
header("Location: ./success.php");
exit();
}
else
{
header("Location: ./index.php?error=sending_failed");
exit();
}
[/code]
In je formulier ga je vervolgens voor ieder inputveld bekijken of er al een waarde voor ingevuld is en zo ja, dan zet je deze in het value attribuut...
Gebeurt dit in het forumlier of in de formhandler....
En wat en waar vul ik in....
Als je het eerste te uitgebreid vindt, kijk dan eens naar het tweede dat ik gaf. Die is een stuk korter en is bovendien ook een mail script met Swift Mailer.
Verder draait mijn server php4 ... is dat een probleem?
Dan is sowieso het gebruik van Swift niet mogelijk aangezien php4 geen exceptions kent. En Swift gebruik die dingen voor de foutafhandeling...
Ik heb de versie 4 van Swift welke gewoon goed z'n werk doet....
Probleem is dat ik al meerdere malen getrecht heb over te stappen op PHP5.... maar IIS hangt wanneer ik dat wil doen en mijn productiemachine is al meerdere malen de dupe ervan geweest...
Maar goed.. ik laat het maar even voor wat het is... Swift werkt.. formhadeling met onthouden van gegevens helaas niet op een klein formulier.. jammer dan
Maar goed, Swift is helemaal niet van invloed op jouw probleem. Ik had het over dit script dat een stuk korter is.
Dan had ik toch hetzelfde script.. dat is GROOOOOOOOOOOOT
Ik dacht aan 2 regels ofzo;)
Stef