28. april 2003 - 21:48
Der er
24 kommentarer og 1 løsning
PHP FORM
Hej! Er der en der kan rette i dette php script...så man ikke kan afsende formularen uden at have indtastet data i alle felter! Desuden skal data indtastet i "email" være en rigtig e-mail adresse med et @.... ---- <FORM method="post" action="mail_modtaget.php"> Dit Navn: <INPUT TYPE="text" SIZE="20" NAME="navn"> Din E-mail: <INPUT TYPE="text" SIZE="20" NAME="email"> Din besked: <TEXTAREA WRAP="physical" ROWS="5" COLS="20" NAME="besked"></TEXTAREA> <INPUT TYPE="submit" VALUE="Send" NAME="Submit:"></TD> </FORM> ---- mvh Thomas Kristiansen
Annonceindlæg fra Geoinfo
Slettet bruger
28. april 2003 - 21:57
#1
Hvis du vil gøre det i PHP skal det laves i mail_modtaget.php, eller samle begge filer i en (mit forslag)
28. april 2003 - 22:00
#2
Simpel validering: <form method="post" action="mail_modtaget.php"> dit navn: <input type="text" size="20" name="navn"> din e-mail: <input type="text" size="20" name="email"> din besked: <textarea wrap="physical" rows="5" cols="20" name="besked"></textarea> <input type="submit" value="send" name="submit"></td> </form> <?php if(isset($_POST['submit')) { if(!isset($_POST['navn'],$_POST['besked']) && !ereg("@", $_POST['email'])) { echo "Ikke korrekt"; } else { // Korrekt udfyldt } } ?>
28. april 2003 - 22:03
#3
Lidte bedre: if(!isset($_POST['navn'],$_POST['besked']) && !preg_match("/^([\w|\.|\-|_]+)@([\w||\-|_]+)\.([\w|\.|\-|_]+)$/i", $_POST['email'])) {
28. april 2003 - 22:07
#4
Og en der rent faktisk virker ;o) <?php if(isset($_POST['submit'])) { if(empty($_POST['navn']) || empty($_POST['besked']) || !preg_match("/^[\w|\.|\-|_]+@[\w||\-|_]+\.[\w|\.|\-|_]+$/i", $_POST['email'])) { echo "Ikke korrekt"; } else { echo "Korrekt"; } } ?>
28. april 2003 - 22:11
#5
ja jeg skulle lige til at klage ;)
28. april 2003 - 22:13
#6
hmmm.....den virker ikke.... den sender udemærket, selvom der ikke er et @ i email feltet..?
28. april 2003 - 22:13
#7
..og selvom felterne ikke er udfyldt..?
28. april 2003 - 22:15
#8
28. april 2003 - 22:18
#9
hmmm.... i "mail_modtaget.php" bliver det hele sendt i en mail...
så den skal egentlig ikke skrive "ikke korrekt" eller "korrekt"
den virker ikke her
http://thomas-k.dk/mail.php
28. april 2003 - 22:18
#10
Her er koden jeg bruger på den side: <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> Dit navn:<br> <input type="text" size="20" name="navn"><br> Din e-mail:<br> <input type="text" size="20" name="email"><br> Din besked:<br> <textarea wrap="physical" rows="5" cols="20" name="besked"></textarea><br> <input type="submit" value="send" name="submit"></td> </form> <?php if(isset($_POST['submit'])) { if(!isset($_POST['navn'], $_POST['besked']) || !preg_match("/^[\w|\.|\-|_]+@[\w||\-|_]+\.[\w|\.|\-|_]+$/i", $_POST['email'])) { echo "Ikke korrekt"; } else { echo "Korrekt"; } } ?>
28. april 2003 - 22:19
#11
Istedet for echo "Korrekt"; skal du selvfølgelig indsætte din mail()-funktion.
28. april 2003 - 22:21
#12
den ligger i mail_modtaget.php....
Slettet bruger
28. april 2003 - 22:22
#13
saml det i en fil.
28. april 2003 - 22:28
#14
hvad skal man så angive i action="" ?? (spørger måske dumt, men jeg er ikke så kendt i php endnu)
28. april 2003 - 22:28
#15
Kopier det sidste eksempel jeg har skrevet, så burde det virke.
28. april 2003 - 22:35
#16
nope... ---- <FORM method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <TABLE BORDER="0" CELLSPACING="1"> <TR> <TD>Dit Navn:</TD> <TD><INPUT TYPE="text" SIZE="20" NAME="navn"></TD> </TR> <TR> <TD>Din E-mail:</TD> <TD><INPUT TYPE="text" SIZE="20" NAME="email"></TD> </TR> <TR> <TD valign="top">Din besked:</TD> <TD><TEXTAREA WRAP="physical" ROWS="5" COLS="20" NAME="besked"></TEXTAREA></TD> </TR> <TR> <TD></TD> <TD> <INPUT TYPE="submit" VALUE="Send" NAME="Submit:"></TD> </TR> </TABLE> </FORM> <?php if(isset($_POST['submit'])) { if(!isset($_POST['navn'], $_POST['besked']) || !preg_match("/^[\w|\.|\-|_]+@[\w||\-|_]+\.[\w|\.|\-|_]+$/i", $_POST['email'])) { echo "Ikke korrekt"; } else { mail("min@mail.dk","E M N E","Navn: $_POST[navn]\nE-mail: $_POST[email]\nBesked: $_POST[besked]","From: $_POST[email] <$_POST[email]>"); } } ?>
28. april 2003 - 22:36
#17
<INPUT TYPE="submit" VALUE="Send" NAME="Submit:"></TD> skal være: <INPUT TYPE="submit" VALUE="Send" NAME="submit"></TD>
28. april 2003 - 22:44
#18
ja nu virker det faktisk...men kan man ikke få en anden side til at åbne sig, når alt er udfyldt korrekt..? (istedet for echo "korrekt";)
28. april 2003 - 22:52
#19
Et popup-vindue, eller skal den bare skifte side?
28. april 2003 - 22:53
#20
helst skifte side....
28. april 2003 - 22:56
#21
hey, jeg fandt lige en fejl..man kan godt afsende formularen selvom besked eller navn ikke er udfyldt..?
28. april 2003 - 22:59
#22
Ændre denne linje: if(!isset($_POST['navn'], $_POST['besked']) || !preg_match("/^[\w|\.|\-|_]+@[\w||\-|_]+\.[\w|\.|\-|_]+$/i", $_POST['email'])) { til: if(empty($_POST['navn']) || empty($_POST['besked']) || !preg_match("/^[\w|\.|\-|_]+@[\w||\-|_]+\.[\w|\.|\-|_]+$/i", $_POST['email'])) {
28. april 2003 - 23:00
#23
Denne her kode indsætter du i filen mail_modtaget.php <?php if(isset($_POST['submit'])) { if(empty($_POST['navn']) || empty($_POST['besked']) || !preg_match("/^[\w|\.|\-|_]+@[\w||\-|_]+\.[\w|\.|\-|_]+$/i", $_POST['email'])) { echo "Ikke korrekt"; } else { mail("min@mail.dk","E M N E","Navn: $_POST[navn]\nE-mail: $_POST[email]\nBesked: $_POST[besked]","From: $_POST[email] <$_POST[email]>"); } } ?> og så ændre du action til action="mail_modtaget.php"
28. april 2003 - 23:10
#24
YES! Så virker det - og det er sådan jeg ville have det !! Tak for svarene! - og tålmodigheden ;) Du har fortjent dine point.
28. april 2003 - 23:15
#25
svar :) /Jesper Sørensen
Vi tilbyder markedets bedste kurser inden for webudvikling