Avatar billede dkeigil Nybegynder
26. juli 2010 - 00:19 Der er 16 kommentarer

PHP - Mail system

Hej derude, nogen der kan hjælpe mig med dette lille problem :i kan ikke se hvad jeg har gjort galt, jeg er også forholdsvis ny inden for PHP! :)



!!!!!!!!!!!!!HTML FILEN!!!!!!!!!!
<form action="mail.php" method="post">
    Navn: <br>
    <input type="text" name="navn" style="width: 200px;"> <br>
   
    E-mail: <br>
    <input type="text" name="mail" style="width: 200px;"> <br>
<hr>
    Emne: <br>
    <input type="text" name="mail" style="width: 200px;"><br>
    Besked: <br>
    <textarea name="besked" style="width: 200px; height: 100px;"></textarea> <br><br>

    <input type="submit" value="Send mail">
</form>

!!!!!!!!!!!PHP FILEN!!!!!!!!!!!!


<?php
if (isset($_POST['navn']) || isset($_POST['besked'] || ($_POST['mail']) || ($_POST['emne'])
{
header("Location: html.html"); 
}
else
{
$navn = $_POST['navn'];
$besked = $_POST['besked'];
$mail = $_POST['mail'];
$emne = $_POST['emne'];

    (empty($navn) || empty($besked) || empty($mail || empty($emne)) // Hvis felter ikke er udfyldt
    {
        echo "Alle felter skal udfyldes  <br><b><a href='html.html' title='Tilbage'>Jeg vil tilbage!<a></b>";
    }

    else  // Ellers send
    {
    if(ereg("@", $mail) // Er mailen gyldig?
    {
        $sendto = "Mail@mmmmm.com"; //Den mail der skal have beskeden
        $subject = $emne;
        $besked = "Besked: \n
                            Navn: " . $_POST['navn']. " \n
                            E-mail: " . $_POST['mail'] . " \n
                            Besked: " . $_POST['besked'];
       
}
else
{
echo "Din mail var ikke korrekt, prøv igen <br><b><a href='html.html' title='Tilbage'>Jeg vil tilbage!<a></b>";
}
        if(mail($sendto, $subject, $besked, "Mailen er fra: $mail\\r\\n" . "Besvar: $mail\\r\\n"));
      {
      echo "Emailen er nu sendt!";
      }
      else
      {
      echo "Der opstod et problem, prøv igen";
      }
    }
}
?>
Avatar billede wanze Nybegynder
26. juli 2010 - 00:38 #1
if (isset($_POST['navn']) || isset($_POST['besked'] || ($_POST['mail']) || ($_POST['emne'])
{
header("Location: html.html"); 
}

Hvis blot ét af felterne er sat, sender du brugeren direkte til html.html.
Avatar billede dkeigil Nybegynder
26. juli 2010 - 00:41 #2
Dvs. at if (isset($_POST['navn']) || isset($_POST['besked'] || ($_POST['mail']) || ($_POST['emne'])
{
header("Location: html.html"); 
} skal væk? :)
Avatar billede wanze Nybegynder
26. juli 2010 - 06:41 #3
Der er mange ting, der ikke giver mening i din kode. Du burde nok bare lige gennemgå den fra toppen af.
Avatar billede majbom Novice
26. juli 2010 - 07:02 #4
du skal ændre:

if (isset($_POST['navn']) || isset($_POST['besked'] || ($_POST['mail']) || ($_POST['emne'])


til:

if (!isset($_POST['navn']) || !isset($_POST['besked'] || !isset($_POST['mail']) || !isset($_POST['emne'])


og:

(empty($navn) || empty($besked) || empty($mail || empty($emne)) // Hvis felter ikke er udfyldt


til:

if(empty($navn) || empty($besked) || empty($mail || empty($emne)) // Hvis felter ikke er udfyldt
Avatar billede wanze Nybegynder
26. juli 2010 - 07:13 #5
if (!isset($_POST['navn']) || !isset($_POST['besked'] || !isset($_POST['mail']) || !isset($_POST['emne'])
Kan også kombineres til isset($var1,$var2,[...]). Dog er det lidt irrelevant, da de altid vil være sat, når man submitter en form, så der er kun behov for at kontrollere et enkelt felt.
Avatar billede majbom Novice
26. juli 2010 - 07:22 #6
nå ja, det er rigtigt...

men det er vel meget smart at teste at de er sat, hvis man vil sikre sig lidt bedre mod "angreb"...
Avatar billede wanze Nybegynder
26. juli 2010 - 16:29 #7
At kontrollere om de er sat gør det ikke mere sikkert. Hvis det skal hjælpe til med sikkerheden, skal indholdet jo valideres.
Avatar billede dkeigil Nybegynder
26. juli 2010 - 17:27 #8
Det ser sådanm her ud nu, men der er stadig ingen forskel, det virker nemlig ikke :) .. Er ret ny til PHP så kan ikke selv finde fejlene.

<?php
if (!isset($_POST['navn']) || !isset($_POST['besked'] || !isset($_POST['mail']) || !isset($_POST['emne']))
{
header("Location: html.html"); 
}
$navn = $_POST['navn'];
$besked = $_POST['besked'];
$mail = $_POST['mail'];
$emne = $_POST['emne'];

    if (empty($navn) || empty($besked) || empty($mail || empty($emne)) // Hvis felter ikke er udfyldt
    {
        echo "Alle felter skal udfyldes  <br><b><a href='html.html' title='Tilbage'>Jeg vil tilbage!<a></b>";
    }

    else  // Ellers send
    {
    if(ereg("@", $mail) // Er mailen gyldig?
    {
        $sendto = "Mail@hotmail.com"; //Den mail der skal have beskeden
        $subject = $emne;
        $besked = "Besked: \n
                            Navn: " . $_POST['navn']. " \n
                            E-mail: " . $_POST['mail'] . " \n
                            Besked: " . $_POST['besked'];
       
}
else
{
echo "Din mail var ikke korrekt, prøv igen <br><b><a href='html.html' title='Tilbage'>Jeg vil tilbage!<a></b>";
}
        if(mail($sendto, $subject, $besked, "Mailen er fra: $mail\\r\\n" . "Besvar: $mail\\r\\n"));
      {
      echo "Emailen er nu sendt!";
      }
      else
      {
      echo "Der opstod et problem, prøv igen";
      }
    }
}
?>
Avatar billede majbom Novice
26. juli 2010 - 17:35 #9
der er osse en fejl her:

if (empty($navn) || empty($besked) || empty($mail || empty($emne)) // Hvis felter ikke er udfyldt


skal rettes til:

if (empty($navn) || empty($besked) || empty($mail) || empty($emne)) // Hvis felter ikke er udfyldt


-> wanze - ja ja, selvfølgelig, men du kan jo få fejl hvis du tjekker med empty, hvis variablen ikke er defineret...
Avatar billede wanze Nybegynder
26. juli 2010 - 17:43 #10
Tror du ikke selv du lige kunne bruge et par minutter til at gennemgå din egen kode, dkeigel? Det kræver ikke særlig mange PHP-kompetencer at se, at du har 2 felter med name="mail", hvor det ene burde være "emne". :)

splazz: Det der med at udskrive fejl, når folk bevidst forsøger at "hacke" siden eller gøre andre ting, der ikke er intentionelle, går jeg ikke så meget ind for. Det giver blot brugeren et større indblik i koden. Hvis folk bevidst forsøger at gøre noget siden ikke er lavet til, så plejer jeg gerne bare at sende dem tilbage til siden de kom fra uden at fortælle dem noget som helst. De ved jo ganske udmærket godt, hvordan de skal bruge siden - og de ved også, at de ikke gør det rigtigt.

Her bunder det dog også lidt i, at han overhovedet ikke validerer sit indhold nogen steder.
Avatar billede dkeigil Nybegynder
26. juli 2010 - 17:57 #11
Jeg har da ikke 2 felter med ="mail"?
Avatar billede dkeigil Nybegynder
26. juli 2010 - 17:58 #12
Ahh :P Det er rettet for længst :) Det virker stadig ikke..
Avatar billede wanze Nybegynder
26. juli 2010 - 18:07 #13
Så smid den nye kode op, så vi ved, at det er rettet korrekt. Hvilken fejl får du, eller hvad sker der/sker der ikke?
Avatar billede dkeigil Nybegynder
26. juli 2010 - 18:10 #14
Der sker netop intet, den indlæser mail.php og så blir det blankt
Avatar billede majbom Novice
26. juli 2010 - 20:12 #15
-> wanze - det kan du selvfølgelig have ret i :)
Avatar billede majbom Novice
04. november 2010 - 14:22 #16
fik du det løst?
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