Avatar billede kiwankow Nybegynder
25. september 2009 - 11:46 Der er 14 kommentarer og
1 løsning

hjælp til if/then/else i php

Hej jeg forsøger at lave et script der sender login informationer til brugerens email, i tilfælde af at man har glemt dem. Problemet er bare at jeg ikke rigtig kan finde ud ad if/then funktionerne.


Jeg forestiller mig noget i stil med dette:

mail.php
--------
<?php
include("loginoplysninger.php")
IF
$correctanswer == $answer;
THEN
mail($mail,"Hermed fremsendes din login oplysninger","Dine login oplysninger er følgende: <br />Brugernavn: $username<br />Password: $password)
echo "Dine login oplysninger er sendt til din email";
ELSE
mail($mail,"Nogen har forsøgt at hente dine login oplysninger","I forsøgt på at hente dine login oplysninger er der svaret forkert på dit sikkerhedsspørgsmål)
echo "Du har svaret forkert på sikkerhedsspørgsmålet og indehaveren af denne konto er blevet gjort opmærksom herpå<br /><a href="mail.php">Klik her</a> for at gå tilbage og forsøge igen";
?>

<form action="mail.php" method="post">
Inden vi kan sende dig dine login oplysninger skal du svare korrekt på følgende sikkerhedsspørgsmål:<br /><br />
Svar: <input type="text" name="answer" style="width: 200px;"> <br><br>
<input type="submit" value="Send mail">
</form> 

Håber der er nogen der kan hjælpe mig færdig med dette script :-)
Avatar billede repox Seniormester
25. september 2009 - 12:44 #1
Det virker en smule forældet for mig at benytte sig af 'sikkerhedsspørgsmål'. Idag er folk så bevidste om brugen af deres emails og tilhørende adresser at det ville være mere intuitivt for en bruger at blot indtaste sin mail adresse og så vil han modtage loginoplysningerne.

Uanset, så ville her være et bud på at løse det du ønsker:
<?php
    include("loginoplysninger.php");
   
    if(isset($_POST["answer"]))
    {
        $answer = strtolower($_POST["answer"]);
       
        if($answer == strtolower($correctAnswer))
        {
            $subject = "Hermed fremsendes din login oplysninger";
            $body = "Dine login oplysninger er følgende:\nBrugernavn: ".$username."\nPassword: ".$password;
            $response = "Dine login oplysninger er sendt til din email.";
        }
        else
        {
            $subject = "Nogen har forsøgt at hente dine login oplysninger";
            $body = "I et forsøg på at hente dine login oplysninger er der svaret forkert på dit sikkerhedsspørgsmål";
            $response = "Du har svaret forkert på sikkerhedsspørgsmålet og indehaveren af denne konto er blevet gjort opmærksom herpå<br /><a href=\"mail.php\">Klik her</a> for at gå tilbage og forsøge igen";
        }
       
        mail($mail, $subject, $body);
       
       
    }

   
?>
<form action="mail.php" method="post">
Inden vi kan sende dig dine login oplysninger skal du svare korrekt på følgende sikkerhedsspørgsmål:<br /><br />
Svar: <input type="text" name="answer" style="width: 200px;"> <br><br>
<input type="submit" value="Send mail">
</form> 
<?php if(isset($response)): ?>
<p>
    <?php echo $response; ?>
</p>
<?php endif; ?>
Avatar billede jesperhgh Nybegynder
25. september 2009 - 12:45 #2
<?php
if(det er solskin) {
  vi tager til stranden;
  men først køber vi øl;
} else {
  vi tager til stranden;
  men først køber vi paraplyer;
}
?>

...er formattet på en php if (then) else.

http://dk.php.net/manual/en/control-structures.else.php
Avatar billede kiwankow Nybegynder
25. september 2009 - 13:12 #3
Hvis jeg skal forsøge at undlade sikkerhedspørgsmålet vil følgende så virke.? email adressen er angivet i loginoplysninger.php til $mail og ikke $correctmail derfor har jeg byttet om på disse to.

<?php
    include("loginoplysninger.php");
    if(isset($_POST["correctmail"]))
    {
        $correctmail = strtolower($_POST["correctmail"]);
        if($correctmail == strtolower($mail))
        {
            $subject = "Hermed fremsendes din login oplysninger";
            $body = "Dine login oplysninger er følgende:\nBrugernavn: ".$username."\nPassword: ".$password;
            $response = "Dine login oplysninger er sendt til din email.";
        }
        else
        {
            $response = "Du har indtastet forkert email adresse.<br /><a href=\"mail.php\">Klik her</a> for at gå tilbage og forsøge igen";
        }
        mail($mail, $subject, $body);
    }

<form action="mail.php" method="post">
Indtast din email adresse:<input type="text" name="correctmail" style="width: 200px;"><br /><br />
<input type="submit" value="Send">
</form> 
<?php if(isset($response)): ?>
<p>
    <?php echo $response; ?>
</p>
<?php endif; ?>
Avatar billede kiwankow Nybegynder
25. september 2009 - 13:13 #4
Hov jeg glemte at spørge hvordan man angiver hvem mailen er fra så modtageren kan se det..??
Avatar billede repox Seniormester
25. september 2009 - 13:26 #5
Min umiddelbare indskydelse ville være:
Hvad med at prøve om det virker?

Hvis du vil sætte en header på der angiver afsenderen kan du gøre det således:
$headers = "From: \"Dit Navn\" <dinmail@example.org>\r\n";

og så sætte den som fjerde parameter i mail()
mail($mail, $subject, $body, $headers);
Avatar billede kiwankow Nybegynder
25. september 2009 - 13:40 #6
hmm det giver følgende fejlmelding:

Parse error: syntax error, unexpected '<' in /mail.php on line 20
Avatar billede repox Seniormester
25. september 2009 - 13:47 #7
Ja, men det skyldes nok at du ikke har afsluttet PHP inden du startede på dit HTML.
Prøv at indsætte
?>
inden du skriver <form...
Avatar billede kiwankow Nybegynder
25. september 2009 - 13:50 #8
der manglede bare "?>"

Men der er nogle ting som ikke rigtig virker:

1. Den sender en tom mail, hvis man indtaster forkerte
oplysninger

2. I headeren vil jeg gerne kun have en statisk tekst, lige nu tager den servernavnet med

3. I body får den ikke variablerne med kun den statiske tekst
Avatar billede kiwankow Nybegynder
25. september 2009 - 13:55 #9
problem er løst ved at rykke mail sætningen op i første if sætning :-)
Avatar billede repox Seniormester
25. september 2009 - 17:28 #10
Det var godt.
Avatar billede kiwankow Nybegynder
25. september 2009 - 17:46 #11
Ved du hvordan jeg udelader servernavnet i afsender.
Avatar billede repox Seniormester
25. september 2009 - 18:26 #12
Ikke forstået? Er det fordi man ikke må se hvilket domæne du sender fra?
Avatar billede kiwankow Nybegynder
25. september 2009 - 18:53 #13
Det er ikke domænet der kommer med, men i afsenderfeltet står der navnet på den server jeg har lejet mit webhotel på. Det vil jeg gerne være fri for, hvis det er muligt, og det burde det vel være..??
Avatar billede repox Seniormester
25. september 2009 - 19:15 #14
Gjorde du som jeg sagde med den fjerde parameter i mail() funktionen?
Avatar billede kiwankow Nybegynder
25. september 2009 - 20:34 #15
Nej ikke første omgang der skrev jeg kun mit navn og ikke email adressen, fordi jeg kun vil have en statisk tekst uden email, men jeg bruger bare emailadressen det er fint nok. :-)
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