Avatar billede trax Nybegynder
27. marts 2008 - 14:45 Der er 28 kommentarer

Problemer med $_post

Jeg har lavet en side, hvor folk skal kunne tilmelde sig en "børneklub".

Jeg har lavet en alm. form, som har add_medlem.php som action.

i add_medlem.php har jeg følgende som tilføjer i databasen:

$sql="INSERT INTO tabelnavn (navn, adresse, postnummer, city, telefonnummer, alder, foedselsdag, email) VALUES ('$_POST[navn]','$_POST[adresse]','$_POST[postnummer]','$_POST[city]','$_POST[telefonnummer]','$_POST[alder]','$_POST[foedselsdag]','$_POST[email]')";

Dette virker som det skal.

Dertil har jeg lavet et simpelt mail function.

Som modtager har jeg lavet dette:

$modtager = $_POST['mail'];

og til sidst selve mail:
mail($modtager, $to, $subject, $message, $headers);

Jeg har også forsøgt:
$modtager = "Nyt medlem <$_POST['mail']>";

$modtager = echo $_POST['mail'];

Uden held.

Hvor går det galt ?
Avatar billede erikjacobsen Ekspert
27. marts 2008 - 15:21 #1
Du skal vel bare

$modtager = $_POST['mail'];


mail($modtager, $subject, $message, $headers);
Avatar billede erikjacobsen Ekspert
27. marts 2008 - 15:21 #2
Avatar billede trax Nybegynder
27. marts 2008 - 15:28 #3
Det er jo netop det jeg har gjort - uden resultat.
Avatar billede erikjacobsen Ekspert
27. marts 2008 - 15:29 #4
Jeg har fjernet en parameter, der ikke skal være der.
Avatar billede trax Nybegynder
27. marts 2008 - 15:38 #5
Altså $to virker godt nok, den mail får jeg - men $modtager (som bliver indtastet i formen) bliver ikke modtaget
Avatar billede trax Nybegynder
27. marts 2008 - 15:39 #6
$modtager = $_POST['mail'];
$modtager = $_POST['mail'];

er nu ens for mig ?
Avatar billede dkfire Nybegynder
27. marts 2008 - 16:13 #7
Men den måde du benytter mail() på er ikke rigtig, du har ALT for mange paramtre med.
erikjacobsen viser dig hvordan brugen af mail() skal se ud. Hvis du er i tvivl, så se det link som er vist.
Avatar billede trax Nybegynder
27. marts 2008 - 16:45 #8
Jeg kan ikke se hvorfor jeg har for mange parametere ? jeg har bare lavet dem som arrays ?

Her er min samlede mail kode:

<?php 
    $modtager = $_POST['mail'];
                           
    $to = "Nyt medlem <min@email.dk>";

    $from = "From: navn <min@email.dk>";

    $subject = "Tilmelding til klubben";
   
    $message = "Test";   
 
    $headers  = "MIME-Version: 1.0\r\n";     
                           
                             
    $headers .= "$from\r\n";
     
    mail($modtager, $to, $from, $subject, $message, $headers);
?>
Avatar billede trax Nybegynder
27. marts 2008 - 16:46 #9
Den virker jo fint, bortset fra $modtager = $_POST['mail'];
Avatar billede dkfire Nybegynder
27. marts 2008 - 16:55 #10
Det er nu meget simpelt, mail() tager max 4 parametre, og du giver 6 parametre.

mail($modtager(1), $to(2), $from(3), $subject(4), $message(5), $headers(6));
Avatar billede erikjacobsen Ekspert
27. marts 2008 - 16:56 #11
Og trax, du synes sikker også at disse to er ens ;)

mail($modtager, $to, $from, $subject, $message, $headers);
mail($modtager, $subject, $message, $headers);
Avatar billede trax Nybegynder
27. marts 2008 - 17:44 #12
NU har jeg kortet det ned til dette:

<?php 
    $modtager = $_POST['mail'];
                           
    $modtager = "Nyt medlem <min@email.dk>";

    $from = "From: navn <min@email.dk>";

    $subject = "Tilmelding til klubben";
   
    $message = "Test";   
 
    $headers  = "MIME-Version: 1.0\r\n";     
                           
                             
    $headers .= "$from\r\n";
     
    mail($modtager, $subject, $message, $headers);
?>

Jeg modtager stadigt kun på $modtager = "Nyt medlem <min@email.dk>"; og ikke: $modtager = $_POST['mail'];
Avatar billede dkfire Nybegynder
27. marts 2008 - 18:08 #13
Nej og hvorfor tror du så du ikke gør det ??

$modtager = $_POST['mail'];  //Her tildeler du $modtager en værdi.
                         
$modtager = "Nyt medlem <min@email.dk>"; //Her tildeler du $modtager en anden værdi.

Du må selv gætte hvilken værdi $modtager har når du bruger den i mail().
Avatar billede dkfire Nybegynder
27. marts 2008 - 18:09 #14
Og lidt bedre formuleret:
$modtager = "Nyt medlem <min@email.dk>"; //Her tildeler du $modtager en ny værdi.
Avatar billede trax Nybegynder
27. marts 2008 - 20:34 #15
hvis man laver flere $headers (som også er i tilfældet) plejer det da at virke.

Hvordan kan de løses ellers?
Avatar billede dkfire Nybegynder
27. marts 2008 - 20:41 #16
Du laver ikke flere $headers, du lægger en værdi til $headers.
Hvis du vil have flere modtager af dine emails, så kan du gøre som følgende:

$modtager = $_POST['mail']; // Her tildeler du $modtager en streng.
                         
$modtager .= "; Nyt medlem <min@email.dk>"; //Her lægger du yderligere en streng til $modtager
Avatar billede trax Nybegynder
27. marts 2008 - 22:23 #17
ok, et punktum foran =  gør det hele ?
Avatar billede dkfire Nybegynder
27. marts 2008 - 23:35 #18
Ja, så lægger du strengværdien til din variabel.
Men når det handler om e-mails, så skal der et ; mellem hver adresse.
Avatar billede dkfire Nybegynder
27. marts 2008 - 23:44 #19
Og lidt bedre forklaring:
$variabel = "Hej";

Hvis vi vil lægge noget til vores streng i $variabel
$variabel .= " med dig";

er det samme som:

$variabel = $variabel . " med dig";

Og begge vil give med en echo af $variabel:
"Hej med dig"

Håber det gav lidt mening :-)
Avatar billede trax Nybegynder
28. marts 2008 - 18:42 #20
Det gjorde det.
Jeg har nu lavet
$modtager = $_post['mail'];
$modtager .= "; test <min@email.dk>";

og mail($modtager, ......)

Heg modtager stadigt kun $modtager .= "; test <min@email.dk>";
Avatar billede erikjacobsen Ekspert
28. marts 2008 - 18:57 #21
Du skal ikke skrive andet end en email-adresse i det første felt.
Avatar billede trax Nybegynder
28. marts 2008 - 19:52 #22
Den skal jo hentes fra formen - det er brugerens email jo.
Avatar billede dkfire Nybegynder
29. marts 2008 - 12:02 #23
aaahh kan det måske skyldes at du skrever $_post og ikke $_POST.
Mener vist nok at der er forskel på variabler med små og store bogstaver, således at $_post ikke er det samme som $_POST.
Når det drejer sig om server variabler, så husk altid at skrive dem med stort.

$modtager = $_POST['mail'];
$modtager .= "; test <min@email.dk>";
Avatar billede trax Nybegynder
29. marts 2008 - 17:10 #24
Det er skrevet med stort i koden, jeg skrev det med lille da jeg skrev det her.

Her er hele koden:

<?php
$modtager = $_POST['mail'];

$modtager .= "; Nyt medlem <min@email.dk>";

$subject = "Tilmelding til klubben";

$from = "From: AFSENDER <min@email.dk>";

$message = "Test";

$headers  = "MIME-Version: 1.0\r\n";

$headers .= "$from\r\n";

mail($modtager, $subject, $message, $headers);

?>
Avatar billede dkfire Nybegynder
30. marts 2008 - 12:26 #25
Hvis det er sådan at du IKKE laver en copy/plaste af din kode til her, hvordan kan vi så være sikker på at den kode du viser også er den kode du tester ??

Du burde i bare den ene email du modtager også kunne se den anden email-adresse. Hvis du ikke kan det, så er der fejl i din $_POST.

Du kan evt lave et udprint af din $_POST med:
print_r($_POST);

Er du helt sikker på at $_POST['mail'] findes og indeholder noget ??
Lav evt et echo $modtager så du kan se om begge modtagere er på.
Avatar billede dkfire Nybegynder
30. marts 2008 - 12:29 #26
Kan egentlig også godt være der lige er noget andet som skal ændres. Ret
$modtager .= "; Nyt medlem <min@email.dk>";
til:
$modtager .= ", Nyt medlem <min@email.dk>";
Avatar billede trax Nybegynder
30. marts 2008 - 15:01 #27
Jeg har fået det til at virke nu. mit udtræk fra formen hed "email" istedet for "mail". så $_POST['mail'] skulle ændres til $_POST['email']

Det beklager jeg. en eller anden smid et svar og får nogle point.

Grunden til at jeg ikke Copy/pastede koden, var at jeg ikke sad ved den computer hvor jeg kodede på.
Avatar billede dkfire Nybegynder
31. marts 2008 - 12:42 #28
Jeg ligger da gerne et svar :-)
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