/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
mail() virker ikke -hvad gør jeg galt?
Fra : MooreHojer


Dato : 15-08-07 17:19

Hej NG

Jeg har forsøgt at bruge følgende kode til at sende en e-mail, men den
fejler.
Er der nogen der vil kigge på koden og se om I kan finde fejlen?

$to = $_POST['email'];
$subject = "subject_createUser_" . $_POST['language'] . "";
$body = "body_createUser_" . $_POST['language'] . "_" .
$_POST['emailformat'] . "";
$header = 'From: Admin - www.viborgip.dk <admin@viborgip.dk>' . "\r
\n";

if(mail($to , $$subject , $$body ,$header)) {
   echo "<h3><font color=\"green\">E-mail has been sent</font></h3>";
} else {
   echo "<h3><font color=\"green\">E-mail has <b>not</b> been sent</
font></h3>";
}


PHP kommer ikke med nogen fejlmeddelse, men mail() returnerer FALSE.

Hvis jeg udskriver variablerne med echo har de følgende værdi:

TO: simon@moorehojer.dk

SUBJECT: Du er nu oprettet som bruger på www.viborgip.dk

BODY: Du modtager denne mail fordi du har ønsket at blive oprettet som
bruger på www.viborgip.dk Vi har registreret følgende oplysninger om
dig: Navn: E-mail: Adresse: Telefon: Mobil: Sprog: E-mailformat: For
at aktivere din profil og vælge et brugernavn og et password skal du
trykke på linket herunder. http://www.viborgip.dk/admin/profile/profile_activate.php?id=
(det er vigtigt at hele linket kommer med, så hvis linket er knækket,
det vil sige at det er delt over to linier eller flere, så kopier
venligst hele linket og indsæt den i adresselinien) Hvis du skulle
opleve problemer er du meget velkommen til at kontakte mig. Min
emailadresse er: admin@viborgip.dk Webmasteren

TO: From: Admin - www.viborgip.dk


På Forhånd Tak!

--
MooreHojer


 
 
Bertel Lund Hansen (15-08-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 15-08-07 17:28

MooreHojer skrev:

> if(mail($to , $$subject , $$body ,$header)) {

Er de dobbelte dollartegn en kode- eller en skrivefejl?

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

MooreHojer (15-08-2007)
Kommentar
Fra : MooreHojer


Dato : 15-08-07 17:30

> > if(mail($to , $$subject , $$body ,$header)) {
>
> Er de dobbelte dollartegn en kode- eller en skrivefejl?

Det er variable variabler

--
MooreHojer


Bertel Lund Hansen (15-08-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 15-08-07 17:36

MooreHojer skrev:

> Det er variable variabler

Tror du ikke du skal undgå det indtil det virker?

(... og måske også bagefter)

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

John (16-08-2007)
Kommentar
Fra : John


Dato : 16-08-07 08:50

>> > if(mail($to , $$subject , $$body ,$header)) {
>>
>> Er de dobbelte dollartegn en kode- eller en skrivefejl?
>
> Det er variable variabler

Det forstår jeg ikke - hvad er det?



Bertel Lund Hansen (16-08-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 16-08-07 10:26

John skrev:

> Det forstår jeg ikke - hvad er det?

Man kan lave en variabel hvis navn er variabelt.

   $tekst1='Dette er en tekst.';
   $tekst2='Dette er en anden tekst.';
   $var_var='tekst1';
   echo $$var_var;
   $var_var='tekst2';
   echo $$var_var;

Resultat:

   Dette er en tekst.
   Dette er en anden tekst.

Jeg har brugt det et enkelt sted hvor jeg skulle gennemløbe nogle
formvariable som hed by1, by2, by3 osv., men det er let at løbe
sur i.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

John (16-08-2007)
Kommentar
Fra : John


Dato : 16-08-07 12:28

>> Det forstår jeg ikke - hvad er det?
>
> Man kan lave en variabel hvis navn er variabelt.
>
> $tekst1='Dette er en tekst.';
> $tekst2='Dette er en anden tekst.';
> $var_var='tekst1';
> echo $$var_var;
> $var_var='tekst2';
> echo $$var_var;
>
> Resultat:
> Dette er en tekst.
> Dette er en anden tekst.

Det forstår jeg stadigt ikke - hvad er forskellen fremfor dette:

$tekst1='Dette er en tekst.';
$tekst2='Dette er en anden tekst.';
$var_var=$tekst1;
echo $var_var;
$var_var=$tekst2;
echo $var_var;

Hvad er det smarte i det?



David Trasbo (16-08-2007)
Kommentar
Fra : David Trasbo


Dato : 16-08-07 13:17

John skrev:

>> $tekst1='Dette er en tekst.';
>> $tekst2='Dette er en anden tekst.';
>> $var_var='tekst1';
>> echo $$var_var;
>> $var_var='tekst2';
>> echo $$var_var;

> Hvad er det smarte i det?

Hvis jeg ikke har misforstået det, kan man udskrive variabler dynamisk.
F.eks. ved at hente navnet på den variabel man vil udskrive i en database
e.l.

--
David Trasbo.



Bertel Lund Hansen (16-08-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 16-08-07 13:42

David Trasbo skrev:

> Hvis jeg ikke har misforstået det, kan man udskrive variabler dynamisk.

Ja, det kan man.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Bertel Lund Hansen (16-08-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 16-08-07 13:22

John skrev:

> Det forstår jeg stadigt ikke - hvad er forskellen fremfor dette:

> $tekst1='Dette er en tekst.';
> $tekst2='Dette er en anden tekst.';
> $var_var=$tekst1;
> echo $var_var;
> $var_var=$tekst2;
> echo $var_var;

Ingen i det foreliggende modeleksempel.

> Hvad er det smarte i det?

Det antydede jeg med denne note:

   Jeg har brugt det et enkelt sted hvor jeg skulle gennemløbe
   nogle formvariable som hed by1, by2, by3 osv., men det er let
   at løbe sur i.

Man kan ikke få lov at give et HTML-form-element navnet "by[1]".
Man kan godt give det navnet "by1". Hvis man vil gennemløbe en
stribe navne på den form i en løkke, er man nødt til at bruge
$$-notation:

   for ($nr=0; $nr<7; ++$nr)
      echo $('by'.$nr);

Man kunne f.eks. også lave et sprogvalg på sine sider på den
måde.

   $dansk['Fejl3'] = 'Harddisken er ikke formateret!';
   ...

   $engelsk['Fejl3'] = 'The harddisk has not been formatted!';
   ...


   if (isset($_GET['sprog'])) $sprog=$_GET['sprog'];

og længere nede i koden:

   echo $$sprog['Fejl3'];

På den måde kunne man skrive alle programmets meddelelser ud fra
$$sprog uden at behøve teste sprog-variablen hver gang.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Dan Storm (16-08-2007)
Kommentar
Fra : Dan Storm


Dato : 16-08-07 14:00

Bertel Lund Hansen skrev:
> Man kan ikke få lov at give et HTML-form-element navnet "by[1]".
Sludder.
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<input type="text" name="by[1]" />
<input type="text" name="by[4]" />
<input type="text" name="by[6]" />
<input type="text" name="by[7]" />
</form>

print_r($_POST["by"]);
Giver:
Array
(
[by] => Array
(
[1] => Demstrup
[4] => Vinderslev
[6] => Løgumkluster
[7] => Pederstrup
)
)

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Peter Brodersen (16-08-2007)
Kommentar
Fra : Peter Brodersen


Dato : 16-08-07 14:27

On Thu, 16 Aug 2007 14:21:46 +0200, Bertel Lund Hansen
<unospamo@lundhansen.dk> wrote:

>Man kan ikke få lov at give et HTML-form-element navnet "by[1]".

Det er altså helt lovligt.

Jeg tror, myten opstod idet Thor Larholm i 2001 blev ved med at
insistere, at [] var ulovligt som en værdi til name.

name er dog af SGML-typen CNAME (og ikke af typen NAME eller ID), og
her må [] godt bruges.

Følgende sider validerer fint:
http://stock.ter.dk/html4.php
http://stock.ter.dk/xhtml1.php

--
- Peter Brodersen
Kendt fra Internet

Bertel Lund Hansen (16-08-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 16-08-07 14:49

Peter Brodersen skrev:

>>Man kan ikke få lov at give et HTML-form-element navnet "by[1]".

> Det er altså helt lovligt.

Okay, det vidste jeg ikke.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Thomas (15-08-2007)
Kommentar
Fra : Thomas


Dato : 15-08-07 17:43

<PHP kommer ikke med nogen fejlmeddelse, men mail() <returnerer FALSE.

kan det ikke være fordi at mail() funktionen ikke er tilgængelig på den
server du bruger?

Mvh. Thomas



MooreHojer (15-08-2007)
Kommentar
Fra : MooreHojer


Dato : 15-08-07 17:49

> kan det ikke være fordi at mail() funktionen ikke er tilgængelig på den
> server du bruger?

hvordan tjekker jeg det?

--
MooreHojer


Bertel Lund Hansen (15-08-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 15-08-07 18:32

MooreHojer skrev:

>> kan det ikke være fordi at mail() funktionen ikke er tilgængelig på den
>> server du bruger?

> hvordan tjekker jeg det?

Lav en simpel mail() til dig selv og send den.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

MooreHojer (15-08-2007)
Kommentar
Fra : MooreHojer


Dato : 15-08-07 17:56

> > Det er variable variabler
>
> Tror du ikke du skal undgå det indtil det virker?
>
> (... og måske også bagefter)

Der er ingen problemer med dem, de virker fint og er perfekte til
opgaven.
Teksterne i e-mailene ligger i variabler i en ekstern fil.
Variablernes navne er bygget op så de beskriver hvor de bruges,
hvilket sprog brugeren taler og hvilket e-mailformat brugeren ønsker,
så ved at bruge variable variabler kan jeg bruge den rigtige tekst ved
brug af kun 2 liniers kode:
subject = "subject_createUser_" . $_POST['language'] . "";
$body = "body_createUser_" . $_POST['language'] . "_" .

Så med mindre jeg finder en metoder der kan klare det nemmere tror jeg
at jeg beholder denne metode

--
MooreHojer


MooreHojer (15-08-2007)
Kommentar
Fra : MooreHojer


Dato : 15-08-07 18:08

Hvis det kan hjælpe er her et link til phpinfo() på min server:
http://www.viborgip.dk/phpinfo.php

--
MooreHojer


MooreHojer (15-08-2007)
Kommentar
Fra : MooreHojer


Dato : 15-08-07 18:38

Nu er problemet løst...
Når jeg ændrede:
$header = 'From: Admin - www.viborgip.dk <admin@viborgip.dk>' . "\r
\n";

til:
$header = 'From: admin@viborgip.dk' . "\r\n";

virker det.

Takker for hælpen

--
MooreHojer


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste