Avatar billede undertaker_skipper Nybegynder
07. august 2010 - 17:07 Der er 27 kommentarer

PHP - mailformular - IMAP

Jeg har haft en flash - php mailformular sor har virker super godt. Nu har one.com så gjort noget med pop3 serverne, så det nu hedder IMAP. Jeg har ikke en skif forstand på det, men har super brug for at der er en der har forstand på det, lige hjælper mig.

Flash coden for send kanppen ser sådan her ud, men tror ikke lige det er her den er gal.
------------------------------------------------
[quote]
on (release) {
    function checkemail(email) {
        var str = new String(email);
        var arr_email = str.split("@");
        if (arr_email.length != 2 || arr_email[1].indexOf(".")<1) {
            showerror("Forkert Email adresse");
            return false;
        } else {
            return true;
        }
    }
    function showerror(message) {
        gotoAndStop("error");
        error = message;
    }
    if (email != "" && email != undefined) {
        if (checkemail(email)) {
            loadVariables("sendmail.php", "", "POST");
            showerror("Mailen er blevet send");
        }
    } else {
        trace("empty");
        showerror("Du mangler at skrive din email adresse");
    }
}
[/quote]
------------------------------------------------
Her er så mit PHP script.

------------------------------------------------
[quote]
<?
$empf="p@teater.dk";
$vtext="Er modtaget.";
$betreff="Email Server";
$anrede="Billet";
$bestaetigung="Mail arrived";

$comment=str_replace("\\\"","\"",$comment);
$comment=str_replace("\'","'",$comment);
urlencode ($text);
$comment=str_replace("%0D","\n",$comment);

$inhalt=$anrede."   

".$navn."
".$email."

".$report;
mail($empf,$betreff,$inhalt,"From: ".$email);
mail($email,$bestaetigung,$vtext,"From: ".$empf);
?>
[/quote]
------------------------------------------------
Jeg ville sætte stor pris på, hvis nogle ville hjælpe mig med dette.

mvh
Peter
Avatar billede undertaker_skipper Nybegynder
07. august 2010 - 17:45 #1
Det ser ud til at problemet er at teksten fra mine input felter ikke kommer med. Mailen bliver send, men teksten kommer ikke med.

-Peter
Avatar billede erikjacobsen Ekspert
07. august 2010 - 19:14 #2
Hvor kommer $email, $navn, $comment fra i PHP-koden?
Avatar billede undertaker_skipper Nybegynder
07. august 2010 - 19:53 #3
De kommer fra nogle input bokse i mit flash doc.
Avatar billede majbom Novice
07. august 2010 - 20:19 #4
det har i hvert fald ikke noget med om one bruger IMAP eller POP3 (de bruger i øvrigt begge), da det er protokollen klienten bruger når der skal hentes mails fra serveren - når du sender med dit php-script, bruges højst sandsynligt SMTP-protokollen :)
Avatar billede undertaker_skipper Nybegynder
07. august 2010 - 20:43 #5
jeg kan bare ikke forstå, at jeg godt nok modtager mailen, men den ikke sender teksten med mere, fra mine input bokse på min flash side
Avatar billede erikjacobsen Ekspert
07. august 2010 - 22:54 #6
De variabler jeg nævner, og flere, får aldrig nogen værdi i dit PHP-script, hvis det er alt hvad vi ser. Derfor spørger jeg. Hvor giver du dem værdier fra $_GET eller $_POST - hvad det nu er din Flash sender dem som?
Avatar billede undertaker_skipper Nybegynder
07. august 2010 - 23:21 #7
Hej Erik

Jeg har i mit flash doc lavet 2 input text bokst. en hvor jeg under variabel har skrevet "navn", og den anden har "email" som variabel
Avatar billede erikjacobsen Ekspert
07. august 2010 - 23:26 #8
Man variabler opstår ikke af sig selv i PHP, så hvor giver du fx $email en værdi? Det viser du os ikke. Det må være noget i retning af:  $email = $_POST['email'];
Avatar billede undertaker_skipper Nybegynder
07. august 2010 - 23:48 #9
Jeg syndes ikke rigtig jeg mangler at oplyse noget.

Jeg har 2 input text på min flash side, som begge har et variabel navn(navn, email)

Så har jeg en sendknap på min flash side, som har den flash code jeg linket i den første post.

Og til sidst har jeg mit sendmail.php, som har de koder jeg linket i første post også.

Jeg har nu set det igennem igen, for at være sikker på om jeg havet overset noget. Men jeg kan ikke se jeg skulle have glæmt at oplyse noget.

Hvis det hjælper, kan jeg prøve at tage nogle dumps at det, og smide op?

-Peter
Avatar billede erikjacobsen Ekspert
07. august 2010 - 23:58 #10
Men variabler opstår ikke af sig selv i PHP. Så hvis det virkelig er den eneste kode du har, så er det da klart, at du ikke får data med over. $email er tom - den har aldrig fået en værdi. Det er der intet mystisk i.

Men det mystiske er hvor du har gjort af linierne, der skulle give dine variabler værdier, dem der skal ligne det her for alle felter: 

  $email = $_POST['email'];
Avatar billede undertaker_skipper Nybegynder
08. august 2010 - 00:44 #11
der er nogle linjer jeg har taget ud af php filen, eftersom der var // foran dem...det fulde php doc ser sådan har ud.

<?

//

// empfaenger hier email-adresse einfuegen
$empf="peter@net.dk";

// text fuer sender-bestaetigungsemail
$vtext="Den bestilling du har fortaget";

//subject fuer empfaengeremail
$betreff="Email Server";

//anredetext fuer empfaengeremail
$anrede="Billet bestilling";

// Betreff der Bestätigungsmail
$bestaetigung="Mail arrived";

$comment=str_replace("\\\"","\"",$comment);
$comment=str_replace("\'","'",$comment);
urlencode ($text);
$comment=str_replace("%0D","\n",$comment);

//ip des absenders
//$report = "mail was sent from:"."\n"."---------------------------------"."\n\n"."remote host: ".$REMOTE_HOST."\n".
//"remote adr: ". $REMOTE_ADDR."\n"."browser: ". $HTTP_USER_AGENT."\n\n\n\n";

//inhalt der empfaengeremail definieren var aus flashfilm
$inhalt=$anrede."   

".$navn."
".$email."

".$report;
// e-Mail wird abgeschickt und zur Bestätigung wird noch eine Mail an den Absender geschickt
mail($empf,$betreff,$inhalt,"From: ".$email);
mail($email,$bestaetigung,$vtext,"From: ".$empf);
// <---------------------- this is the end my friend ----------------------------->
?>
Avatar billede erikjacobsen Ekspert
08. august 2010 - 01:00 #12
Dem, der står med // foran er ganske rigtigt kommentarer, der ikke betyder noget for udførelsen.

Men du skal stadig have nogle linier, hvor du tildeler fx. $email en værdi. Ellers har den ingen værdi. Den er tom. Hvilket er årsagen til at du får en tom værdi i den mail du modtager.

Du kan se at

  $empf="peter@net.dk";

giver dig en modtager-email-adresse, men at fx. $email aldrig får en værdi.

Så derfor tilføjer du fx.

    $email = $_POST['email'];

...og de andre, der mangler.
Avatar billede undertaker_skipper Nybegynder
08. august 2010 - 01:07 #13
Så forstår jeg bare ikke, hvorfor det tidliger har virket. Jeg har aldrig haft problemer med det før.
Avatar billede erikjacobsen Ekspert
08. august 2010 - 09:16 #14
Det ville have virket for 10 år siden, og så i en årrække derefter som overgang. Men det er altså ret lang tid siden, at man kraftigt har anbefalet ikke at gøre det på den måde. "Måden" er at et felt i en form (HTML/Flash) automatisk bliver til en variabel, fx $email.

Det er uhensigtsmæssigt af flere grunde, herunder sikkerhed.

Der er ingen webhost med PHP, der har den indstilling længere. Vil jeg tro. Ellers er de i hvert fald et par lysår bagefter - og sådan nogen skal man ikke samle på.

Men du har fået løsningen. Ikke?
Avatar billede undertaker_skipper Nybegynder
08. august 2010 - 10:42 #15
Hej igen Erik

Jeg er da ked af at høre at dit ikke kan virke mere. Men har du så en ide til hvordan jeg så kan få det til at virke ?
Du skrev tidliger man kunne skrive  $email = $_POST['email'];
Og er der andre ting i mit php der skal rettes ?
Avatar billede erikjacobsen Ekspert
08. august 2010 - 12:57 #16
Det skal du ikke være ked af. Det var en ualmindelig dårlig beslutning, der så blev rettet. Dem er der flere af.

Du skal gøre det samme ved de andre felter i formen, som du gør med $email.

Nu læste jeg at det er one.com du bruger - utroligt hvad de kan slippe af sted med. ;)
Avatar billede undertaker_skipper Nybegynder
08. august 2010 - 13:31 #17
kan du prøve af skrive et eksempel på hvordan min pgp code skal se ud, hvis jeg nu kun bruger navn og email til at starte med. Så kan jeg vel selv udbygge når jeg har fået det til at virke?

-Peter
Avatar billede erikjacobsen Ekspert
08. august 2010 - 13:36 #18
Det synes jeg, at jeg har gjort mange gange. Du skal skrive

  $email = $_POST['email'];

før du kan bruge $email-variablen med det forventede indhold.
Avatar billede undertaker_skipper Nybegynder
08. august 2010 - 13:39 #19
hehe...ja, men jeg ved ikke lige hvor jeg skal skrive det ind i php coden.

<?
$empf="p@teater.dk";
$vtext="Er modtaget.";
$betreff="Email Server";
$anrede="Billet";
$bestaetigung="Mail arrived";

$email = $_POST['email'];
$navn = $_POST['navn'];

$report;
mail($empf,$betreff,$inhalt,"From: ".$email);
mail($email,$bestaetigung,$vtext,"From: ".$empf);
?>

Men er det sådan den skal se ud så?
Avatar billede erikjacobsen Ekspert
08. august 2010 - 14:42 #20
Ja, forsåvidt angår $email og $navn. Men du har da fjernet noget af din oprindelige kode.
Avatar billede undertaker_skipper Nybegynder
08. august 2010 - 14:53 #21
Det her mener du? Er det noget der også skal være med i filen ?

$comment=str_replace("\\\"","\"",$comment);
$comment=str_replace("\'","'",$comment);
urlencode ($text);
$comment=str_replace("%0D","\n",$comment);
$inhalt=$anrede."
Avatar billede erikjacobsen Ekspert
08. august 2010 - 16:58 #22
Du skal sådan set bare tage din oprindelige kode, og tilføje de 2 linier:

$email = $_POST['email'];
$navn = $_POST['navn'];

Så skulle den virke som før. Koden er stadig åben for misbrug, ved at man kan lave header-injection i mailen, men det var den så også før.

Alt fra en bruger kan misbruges, og en bruger, der giver dig en $email med linieskift kan bruge dit script til at sende SPAM.
Avatar billede undertaker_skipper Nybegynder
08. august 2010 - 19:23 #23
har du så en ide til at script, som ikke kan bruges til spam? Eller måske har en ide til hvor jeg kan finde et ?
Avatar billede erikjacobsen Ekspert
08. august 2010 - 22:56 #24
Nu vil jeg kun yde hjælp til selvhjælp her, så jeg kan ikke bare komme med et færdigt script. Sikkerhed er ingen absolut størrelse, og i dit tilfælde skal du jo have en mail tilbage til den email-adresse, brugeren skriver. Det er også en SPAM-mulighed.

Fornemmer jeg at du ikke rigtig ved noget om programmering og web? Du skulle tage at bruge tid på at lære noget om det.
Avatar billede erikjacobsen Ekspert
08. august 2010 - 22:57 #25
Men, hjælp til selvhjælp ;)  - så kan du forkaste en emailadresse, der indeholder linieskift, eller fjerne alt efter linieskift. Det skulle klare det med mail-header-injection.
Avatar billede undertaker_skipper Nybegynder
11. august 2010 - 00:07 #26
Hey Erik
Tak for alle dine gode råd. Jeg har ikke helt fundet ud af det, men finder nok en løsning på et tidspunkt.
Avatar billede majbom Novice
04. november 2010 - 14:28 #27
lukketid?
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