Avatar billede mr.t.man Nybegynder
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
Avatar billede ahv Nybegynder
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>
Avatar billede ahv Nybegynder
08. januar 2004 - 22:26 #2
2 sek der er flere fejl i din kode, regner med registre_globals er off.
Avatar billede ahv Nybegynder
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>
Avatar billede ahv Nybegynder
08. januar 2004 - 22:28 #4
<?pgp skal selvf. være <?php
Avatar billede mr.t.man Nybegynder
08. januar 2004 - 22:30 #5
ok.. prøver lige den!
Avatar billede ahv Nybegynder
08. januar 2004 - 22:30 #6
Den er ikke helt ok endnu giv mig 2 min.
Avatar billede ahv Nybegynder
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>
Avatar billede ahv Nybegynder
08. januar 2004 - 22:34 #8
Der skal også lige et semokolon bag på denne:

mysql_close($conn)

ret til

mysql_close($conn);
Avatar billede mr.t.man Nybegynder
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?
Avatar billede krydset Nybegynder
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>
Avatar billede krydset Nybegynder
08. januar 2004 - 22:43 #11
hvis man taster forkert mener du og bruger browsers back button?
Avatar billede ahv Nybegynder
08. januar 2004 - 22:44 #12
Jep giv mig 2 min.
Avatar billede ahv Nybegynder
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>
Avatar billede ahv Nybegynder
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>
Avatar billede ahv Nybegynder
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>
Avatar billede krydset Nybegynder
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;)
Avatar billede mr.t.man Nybegynder
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! :-)
Avatar billede krydset Nybegynder
08. januar 2004 - 23:01 #18
Helt ok osse bare hvis der var tale om det ;)

hygge
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester