08. januar 2004 - 22:20
Der er
17 kommentarer og 1 løsning
PHP: Form funktioner
Hej! Jeg har nedenstående kode, der er en del af en gæstebog. Det jeg gerne vil have tilføjet er, at formen skal kontrollere hvorvidt alle felter er udfyldt eller ej. Desuden skal den kontrollere om der er udfyldt med en gyldig email-adresse (NAVN @ NAVN . DOMAIN). Hvis disse kriterier ikke er opfyldt, skal der komme en besked til brugeren der fortæller hvad der ikke er udfyldt korrekt, og beskeden skal selvfølgelig ikke sendes, før alle kriterier er opfyldt! Min kode ser sådan ud: ---------- <? $conn = mysql_connect("localhost", "XXXXXX", "XXXXXX"); mysql_select_db("XXXXXX"); if( isset( $_POST["skriv"] ) ){ $ip = getenv('REMOTE_ADDR'); $besked = str_replace("\n", "<BR>", $besked); $dato_array = getdate(); $dato = $dato_array["mday"] . "/" . $dato_array["mon"] . "-" . $dato_array["year"]; mysql_query("INSERT INTO gbog (navn, email, overskrift, dato, besked, ip, tid) VALUES ('$navn', '$email', '$overskrift', '$dato', '$besked', '$ip',now())"); } mysql_close($conn) ?> <form method="post" action="gbog.php"> <input type="hidden" name="skriv" value="1"> Navn: <input type="text" name="navn"><br> E-mail: <input type="text" name="email"><br> Overskrift: <input type="text" name="overskrift"><br> Besked: <textarea name="besked" cols="30" rows="5"></textarea><br> <input type="submit" value="send"> </form> ---------- Er der en, der har mod på at strikke lidt kode sammen? /mr.t.man
Annonceindlæg fra Computerworld
08. januar 2004 - 22:24
#1
Prøv: <? $conn = mysql_connect("localhost", "XXXXXX", "XXXXXX"); mysql_select_db("XXXXXX"); if( isset( $_POST["skriv"] ) ){ if (empty($_POST["navn"]) || empty($_POST["email"]) || empty($_POST["overskrift"]) || empty($_POST["besked"])) { echo "Alle felter skal udfyldes<br>"; } elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$_POST['mail'])) { "Den indtastede mail er ikke gyldig<br>"; } else { $ip = getenv('REMOTE_ADDR'); $besked = str_replace("\n", "<BR>", $besked); $dato_array = getdate(); $dato = $dato_array["mday"] . "/" . $dato_array["mon"] . "-" . $dato_array["year"]; mysql_query("INSERT INTO gbog (navn, email, overskrift, dato, besked, ip, tid) VALUES ('$navn', '$email', '$overskrift', '$dato', '$besked', '$ip',now())"); } } mysql_close($conn) ?> <form method="post" action="gbog.php"> <input type="hidden" name="skriv" value="1"> Navn: <input type="text" name="navn"><br> E-mail: <input type="text" name="email"><br> Overskrift: <input type="text" name="overskrift"><br> Besked: <textarea name="besked" cols="30" rows="5"></textarea><br> <input type="submit" value="send"> </form>
08. januar 2004 - 22:26
#2
2 sek der er flere fejl i din kode, regner med registre_globals er off.
08. januar 2004 - 22:28
#3
Sådan her; <?pgp $conn = mysql_connect("localhost", "XXXXXX", "XXXXXX"); mysql_select_db("XXXXXX"); if( isset( $_POST["skriv"] ) ){ if (empty($_POST["navn"]) || empty($_POST["email"]) || empty($_POST["overskrift"]) || empty($_POST["besked"])) { echo "Alle felter skal udfyldes<br>"; } elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$_POST['mail'])) { "Den indtastede mail er ikke gyldig<br>"; } else { $ip = getenv('REMOTE_ADDR'); $_POST["besked"] = nl2br($_POST["besked"]); $dato_array = getdate(); $dato = $dato_array["mday"] . "/" . $dato_array["mon"] . "-" . $dato_array["year"]; mysql_query("INSERT INTO gbog (navn, email, overskrift, dato, besked, ip, tid) VALUES ('$_POST[navn]', '$_POST[email]', '$_POST[overskrift]', '$dato', '$_POST[besked]', '$ip',now())"); } } mysql_close($conn) ?> <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <input type="hidden" name="skriv" value="1"> Navn: <input type="text" name="navn"><br> E-mail: <input type="text" name="email"><br> Overskrift: <input type="text" name="overskrift"><br> Besked: <textarea name="besked" cols="30" rows="5"></textarea><br> <input type="submit" value="send"> </form>
08. januar 2004 - 22:28
#4
<?pgp skal selvf. være <?php
08. januar 2004 - 22:30
#5
ok.. prøver lige den!
08. januar 2004 - 22:30
#6
Den er ikke helt ok endnu giv mig 2 min.
08. januar 2004 - 22:31
#7
Nu er den her vist; <?php $conn = mysql_connect("localhost", "XXXXXX", "XXXXXX"); mysql_select_db("XXXXXX"); if( isset( $_POST["skriv"] ) ){ if (empty($_POST["navn"]) || empty($_POST["email"]) || empty($_POST["overskrift"]) || empty($_POST["besked"])) { echo "Alle felter skal udfyldes<br>"; } elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$", $_POST["email"])) { echo "Den indtastede mail er ikke gyldig<br>"; } else { $ip = getenv('REMOTE_ADDR'); $_POST["besked"] = nl2br($_POST["besked"]); $dato_array = getdate(); $dato = $dato_array["mday"] . "/" . $dato_array["mon"] . "-" . $dato_array["year"]; mysql_query("INSERT INTO gbog (navn, email, overskrift, dato, besked, ip, tid) VALUES ('$_POST[navn]', '$_POST[email]', '$_POST[overskrift]', '$dato', '$_POST[besked]', '$ip',now())"); } } mysql_close($conn) ?> <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <input type="hidden" name="skriv" value="1"> Navn: <input type="text" name="navn"><br> E-mail: <input type="text" name="email"><br> Overskrift: <input type="text" name="overskrift"><br> Besked: <textarea name="besked" cols="30" rows="5"></textarea><br> <input type="submit" value="send"> </form>
08. januar 2004 - 22:34
#8
Der skal også lige et semokolon bag på denne: mysql_close($conn) ret til mysql_close($conn);
08. januar 2004 - 22:41
#9
Nu virker det! Kan man evt. på en eller anden måde, få dataene til at blive stående i felterne, så man ikke skal til at indtaste det hele igen?
08. januar 2004 - 22:42
#10
Prøv det <?php $conn = mysql_connect("localhost", "XXXXXX", "XXXXXX"); mysql_select_db("XXXXXX"); if( isset( $_POST["skriv"] ) ){ if ($_POST['skriv] == "" or $_POST['email'] == "" or $_POST['overskrift']=="" or $_POST['besked'] == ") { echo "Alle felter skal udfyldes<br>"; } elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$", $_POST["email"])) { echo "Den indtastede mail er ikke gyldig<br>"; } else { $ip = getenv('REMOTE_ADDR'); $_POST["besked"] = nl2br($_POST["besked"]); $dato_array = getdate(); $dato = $dato_array["mday"] . "/" . $dato_array["mon"] . "-" . $dato_array["year"]; mysql_query("INSERT INTO gbog (navn, email, overskrift, dato, besked, ip, tid) VALUES ('$_POST[navn]', '$_POST[email]', '$_POST[overskrift]', '$dato', '$_POST[besked]', '$ip',now())"); } } mysql_close($conn); ?> <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <input type="hidden" name="skriv" value="1"> Navn: <input type="text" name="navn"><br> E-mail: <input type="text" name="email"><br> Overskrift: <input type="text" name="overskrift"><br> Besked: <textarea name="besked" cols="30" rows="5"></textarea><br> <input type="submit" value="send"> </form>
08. januar 2004 - 22:43
#11
hvis man taster forkert mener du og bruger browsers back button?
08. januar 2004 - 22:44
#12
Jep giv mig 2 min.
08. januar 2004 - 22:45
#13
<?php $conn = mysql_connect("localhost", "XXXXXX", "XXXXXX"); mysql_select_db("XXXXXX"); if( isset( $_POST["skriv"] ) ){ if (empty($_POST["navn"]) || empty($_POST["email"]) || empty($_POST["overskrift"]) || empty($_POST["besked"])) { echo "Alle felter skal udfyldes<br>"; } elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$", $_POST["email"])) { echo "Den indtastede mail er ikke gyldig<br>"; } else { $ip = getenv('REMOTE_ADDR'); $_POST["besked"] = nl2br($_POST["besked"]); $dato_array = getdate(); $dato = $dato_array["mday"] . "/" . $dato_array["mon"] . "-" . $dato_array["year"]; mysql_query("INSERT INTO gbog (navn, email, overskrift, dato, besked, ip, tid) VALUES ('$_POST[navn]', '$_POST[email]', '$_POST[overskrift]', '$dato', '$_POST[besked]', '$ip',now())"); } } mysql_close($conn) ?> <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <input type="hidden" name="skriv" value="1"> Navn: <input type="text" name="navn" value="<?php echo $_POST["navn"]; ?>"><br> E-mail: <input type="text" name="email" value="<?php echo $_POST["mail"]; ?>"><br> Overskrift: <input type="text" name="overskrift" value="<?php echo $_POST["overskrift"]; ?>"><br> Besked: <textarea name="besked" cols="30" rows="5">value="<?php echo $_POST["besked"]; ?>"</textarea><br> <input type="submit" value="send"> </form>
08. januar 2004 - 22:45
#14
Hov -> Besked: <textarea name="besked" cols="30" rows="5">value="<?php echo $_POST["besked"]; ?>"</textarea> Skal være Besked: <textarea name="besked" cols="30" rows="5"><?php echo $_POST["besked"]; ?></textarea>
08. januar 2004 - 22:48
#15
og denne -> E-mail: <input type="text" name="email" value="<?php echo $_POST["mail"]; ?>"><br> skal være -> E-mail: <input type="text" name="email" value="<?php echo $_POST["email"]; ?>"><br>
08. januar 2004 - 22:49
#16
HUSK LIGE ikke brug den metode hvis der er tale om en form med password i, det vil være et kæmpe sikkerheds hul ;) ihvertfald skal du undlade at sætte den function ind i det input felt der er passworded /just a reminder;)
08. januar 2004 - 22:55
#17
Ja, så kom også e-mail'en også med ;-) Tak for hjælpen! krydset >> Nu skal jeg ikke bruge password, men tak for tippet! :-)
08. januar 2004 - 23:01
#18
Helt ok osse bare hvis der var tale om det ;) hygge
Vi tilbyder markedets bedste kurser inden for webudvikling