/ 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
Evt. problem med at sende mail via php...
Fra : dhek


Dato : 27-06-05 17:35

Hej gruppe,

Jeg er ikke klar over om jeg har et reelt problem eller ej. Sagen er den jeg
har har en hjemmeside hvor jeg bruger php til at sende en mail med nogle
tilmeldingsoplysninger - dog erfarer jeg, jeg undertiden modtager tomme
mails - dvs. mails hvor evt. tilmeldingsdata skulle ikke er tilstede på
trods af jeg validerer html-formen via javascript inden afsendelse. Jeg er
godt klar over man i princippet sagtens kan sende en tilmelding hvis
javascript er disabled i browseren men derfor burde evt. udfyldte felter
stadig medtager. Har testet fra forskellige maskiner uden at opleve nogle
problemer, men modtager alligevel undertiden disse tomme tilmeldinger,
hvorfor jeg bliver lidt i tvivl om hvorvidt min fremgangsmåde virker korrekt
på alle maksiner med forskellige versioner af IE eller lignende. Derfor
håber jeg der er nogle kloge hoveder som jeg fortælle mig om jeg har et
problem eller ej.

Følgende viser selve php'en på den php-siden 'kvittering.php' som sender
mailen:

<?
$recipients = someName@someDomain.dk;
$subject = "Ny tilmelding";
$body = "Følgende viser data for tilmeldingen:
--------------------------------------------------------

Navn: $NAVN
Adresse: $ADRESSE
Postnummer og by: $POSTNR_BY
Telefonnummer: $TELEFON
E-mail: $EMAIL
Evt. fødselsår: $F_AAR

Evt. oplysninger: $OPLYSNINGER
Evt. nyhedsbrev: $NYHEDSBREV
Evt. medlemskab: $MEDLEMSKAB

Evt. tilmelding til arrangement: $Tilmelding";

mail($recipients,
$subject,
$body,
"From: webmaster <www-data@{$_SERVER['SERVER_NAME']}>\r\n" .
"Reply-to: www-data");
?>



Følgende viser formen med data som skal sendes:

<TABLE border="1" align="center" cellpadding="10">
<TR>
<TD width="90%" height="20" bordercolor="#000000" bgcolor="#CCCC99"><div
align="center" class="style1">Tilmeldingsformular</div></TD>
</TR>
<TR>
<TD bordercolor="#000000" bgcolor="#CCCC99">
<FORM action="./m_Tilmelding/kvittering.php" method="POST"
name="tilmelding" id="tilmelding" onSubmit="return verify();">
<p>
NB: Alle felter med '<span class="style3">*</span>' bedes venligst
udfyldt.</p>
<p><tt> &nbsp;&nbsp; Navn ................ </tt>
<INPUT type="text" size="45" name="NAVN">
<span class="style3"> *</span></p>
<p><tt>&nbsp;&nbsp; Adresse ............. </tt>
<INPUT type="text" size="45" name="ADRESSE">
<span class="style3"> *</span></p>
<p><tt>&nbsp;&nbsp; Postnr &amp; by&nbsp;......... </tt>
<INPUT type="text" size="45" name="POSTNR_BY">
<span class="style3"> *</span></p>
<p><tt>&nbsp;&nbsp; Telefonnummer&nbsp;....... </tt>
<INPUT name="TELEFON" type="text" size="20" maxlength="15">
<span class="style3"> *</span></p>
<p><tt>&nbsp;&nbsp; E-mail .............. </tt>
<INPUT name="EMAIL" type="text" size="45" maxlength="30">
<span class="style3"> *</span></p>
<p><tt>&nbsp;&nbsp; F&oslash;dsels&aring;r ........... </tt>
<INPUT name="F_AAR" type="text" size="10" maxlength="4">
</p>
<p><BR>
<INPUT name="OPLYSNINGER" type="checkbox" class="checkBox" value="
Send mig oplysninger" title="Klik for at v&aelig;lge/frav&aelig;lge">
&nbsp;&nbsp;E-mail oplysninger<BR>
<BR>
<INPUT name="NYHEDSBREV" type="checkbox" class="checkBox" value="
Jeg &oslash;nsker email-abonnement p&aring; nyhedsbrev m.m." title="Klik for
at v&aelig;lge/frav&aelig;lge">
&nbsp;&nbsp;E-Mail nyhedsbrevet<BR>
<BR>
<input name="MEDLEMSKAB" type="checkbox" class="checkBox" value="
Jeg vil gerne v&aelig;re medlem" title="Klik for at
v&aelig;lge/frav&aelig;lge">
&nbsp;&nbsp;Jeg vil gerne v&aelig;re medlem<BR>
</p>
<DIV align="center"><BR>
Tilmelding til arrangementer bedes angivet her: </DIV>
<DIV align="center"><BR>
<TEXTAREA name="Tilmelding" rows="6" cols="70"></TEXTAREA>
<BR>
<BR>
<INPUT name="submit" type="submit" class="button" title="Klik for
at sende oplysninger" value="Send">
<INPUT name="reset" type="reset" class="button" title="Klik for at
slette alle de indtastede oplysninger" value="Slet">
<br>
</DIV>
</FORM></TD>
</TR>
</TABLE>



Hvis det skulle have nogen interesse/betydning så ser javascriptet som
validerer formen således ud:

<!-- hide script from old browsers
// Function removes all unnecessary spaces from a string and returns it.
function trimSpaces(str)
{
var strArray = str.split(' ');
var newString = '';
var i;
for (i = 0; i < strArray.length; i++)
{
if (strArray[i] != '')
newString += strArray[i] + ' ';
}
return newString.replace(/(\s*)$/,'');
}


// Function verifies that form textboxes contain value.
function verify()
{
/* In the following regular expressions the "symbols" mean:
* \D : matches any non-digit character (short for [^0-9])
* \s : matches whitespace (short for [\f\n\r\t\v\u00A0\u2028\u2029])
* [^...] : negates the character set and matches all but the contained
characters
* + : short for {1,}. Matches one or more times
* * : short for {0,}. Matches zero or more times
* ^ : matches beginning of input (or new line with m flag)
* $ : matches end of input (or end of line with m flag)
* \u0020 : blank-tegn (space).
*/
var regExp_Navn = /^(\D[^\s\d]{1,})(\D[^\s\d]{2,})+$/;
var regExp_F_AAR = /^(\d{4})$/;
var regExp_EMAIL =
/^([^\*\+,\\@]{1,})\@([^\@\,\)\(\:\!\"\¤\&\<\>\{\[\}\+\*]{1,})\.([^\s0-9\@\_\.\+\*\/\\\,\:]{2,3})$/;
var regExp_TELEFON = /^([0-9\+\(\)\u0020]{1,15})$/;

// get form variables and trim unnecessary spaces
var NAVN_ = trimSpaces(document.tilmelding.NAVN.value);
var ADRESSE_ = trimSpaces(document.tilmelding.ADRESSE.value);
var POSTNR_BY_ = trimSpaces(document.tilmelding.POSTNR_BY.value);
var TELEFON_ = trimSpaces(document.tilmelding.TELEFON.value);
var EMAIL_ = trimSpaces(document.tilmelding.EMAIL.value);
var F_AAR_ = trimSpaces(document.tilmelding.F_AAR.value);

// write trimmed variables back to form, so that the corrected variables
also are the ones that are emailed
document.tilmelding.NAVN.value = NAVN_;
document.tilmelding.ADRESSE.value = ADRESSE_;
document.tilmelding.POSTNR_BY.value = POSTNR_BY_;
document.tilmelding.TELEFON.value = TELEFON_;
document.tilmelding.EMAIL.value = EMAIL_;
document.tilmelding.F_AAR.value = F_AAR_;

// test the trimmed variables for correctness
if(!regExp_Navn.test(NAVN_))
{
alert('Venligst kontroller du har indtastet både fornavn og efternavn.\n'
+ 'Eksempel på korrekt udfyldt navn kunne være:\n\n\t'
+ 'Rasmus B. Pedersen');
document.tilmelding.NAVN.focus();
document.tilmelding.NAVN.select();
return false;
}
else if (ADRESSE_ == "")
{
alert("Angiv venligst din adresse.");
document.tilmelding.ADRESSE.focus();
document.tilmelding.ADRESSE.select();
return false;
}
else if (POSTNR_BY_ == "")
{
alert("Angiv venligst dit postnummer og by.");
document.tilmelding.POSTNR_BY.focus();
document.tilmelding.POSTNR_BY.select();
return false;
}
else if(!regExp_TELEFON.test(TELEFON_))
{
alert('Venligst angiv et gyldigt telefonnummer.\n'
+ 'Eksempelvis: \n\t'
+ '12345678\n'
+ 'eller\n\t'
+ '+45 12345678');
document.tilmelding.TELEFON.focus();
document.tilmelding.TELEFON.select();
return false;
}
else if(!regExp_EMAIL.test(EMAIL_))
{
alert('Venligst angiv en gyldig email-adresse.\n'
+ 'Eksempelvis:\n\n'
+ 'navn@domæne.dk');
document.tilmelding.EMAIL.focus();
document.tilmelding.EMAIL.select();
return false;
}
else if (F_AAR_ != "" && !regExp_F_AAR.test(F_AAR_))
{
alert('Venligst angiv et gyldigt årstal, af formen: yyyy.\n'
+ 'Eksempelvis: 1979');
document.tilmelding.F_AAR.focus();
document.tilmelding.F_AAR.select();
return false;
}
else
return true; //Ensures that content are postet to server
}


function betingelser() {
windowSizeX = 350;
windowSizeY = 306;
newX = screen.width / 2 - windowSizeX / 2;
newY = screen.height / 2 - windowSizeY / 2;

awindow =
window.open("./m_Tilmelding/kontingent.htm","Kontingent","toolbar=0,top=" +
newY + ",left=" + newX +
",location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0,width="
+ windowSizeX + ",height=" + windowSizeY);
awindow.window.focus();
};
//-->



Håber der er nogen der kan hjælpe mig med at blive klog på om jeg har et
problem eller ej
På forhånd tak,

Daniel



 
 
Jacob Atzen (27-06-2005)
Kommentar
Fra : Jacob Atzen


Dato : 27-06-05 18:11

On 2005-06-27, dhek <dhek@REMOVEtiscali.dk> wrote:
> Jeg er ikke klar over om jeg har et reelt problem eller ej. Sagen er
> den jeg har har en hjemmeside hvor jeg bruger php til at sende en mail
> med nogle tilmeldingsoplysninger - dog erfarer jeg, jeg undertiden
> modtager tomme mails - dvs. mails hvor evt. tilmeldingsdata skulle
> ikke er tilstede på trods af jeg validerer html-formen via javascript
> inden afsendelse. Jeg er godt klar over man i princippet sagtens kan
> sende en tilmelding hvis javascript er disabled i browseren men derfor
> burde evt. udfyldte felter stadig medtager. Har testet fra forskellige
> maskiner uden at opleve nogle problemer, men modtager alligevel
> undertiden disse tomme tilmeldinger, hvorfor jeg bliver lidt i tvivl
> om hvorvidt min fremgangsmåde virker korrekt på alle maksiner med
> forskellige versioner af IE eller lignende. Derfor håber jeg der er
> nogle kloge hoveder som jeg fortælle mig om jeg har et problem eller
> ej.

[snip en masse kode]

Som du selv siger kan JavaScript kun validere, hvis brugerens browser
benytter JavaScript. Det er derfor bedre at validere dine input når de
rammer din webserver, dvs. i din PHP applikation.

I det aktuelle tilfælde kan du jo prøve at skrive de data du sender over
mail til en log-fil samtidig, så du kan se om der er forskel på
indholdet i loggen og i mailen.

Måden de forskellige browsere håndterer formular submits på er
standardiseret, så der bør ikke være nogen forskel på måden, hvorpå en
formular submittes.

--
Med venlig hilsen
- Jacob Atzen

dhek (27-06-2005)
Kommentar
Fra : dhek


Dato : 27-06-05 18:41

"Jacob Atzen" <jacob@aub.dk> wrote in message
news:slrndc0cp0.ddl.jacob@tank.aub.dk...
> On 2005-06-27, dhek <dhek@REMOVEtiscali.dk> wrote:
>> Jeg er ikke klar over om jeg har et reelt problem eller ej. Sagen er
>> den jeg har har en hjemmeside hvor jeg bruger php til at sende en mail
>> med nogle tilmeldingsoplysninger - dog erfarer jeg, jeg undertiden
>> modtager tomme mails - dvs. mails hvor evt. tilmeldingsdata skulle
>> ikke er tilstede på trods af jeg validerer html-formen via javascript
>> inden afsendelse. Jeg er godt klar over man i princippet sagtens kan
>> sende en tilmelding hvis javascript er disabled i browseren men derfor
>> burde evt. udfyldte felter stadig medtager. Har testet fra forskellige
>> maskiner uden at opleve nogle problemer, men modtager alligevel
>> undertiden disse tomme tilmeldinger, hvorfor jeg bliver lidt i tvivl
>> om hvorvidt min fremgangsmåde virker korrekt på alle maksiner med
>> forskellige versioner af IE eller lignende. Derfor håber jeg der er
>> nogle kloge hoveder som jeg fortælle mig om jeg har et problem eller
>> ej.
>
> [snip en masse kode]
>
> Som du selv siger kan JavaScript kun validere, hvis brugerens browser
> benytter JavaScript. Det er derfor bedre at validere dine input når de
> rammer din webserver, dvs. i din PHP applikation.
>
> I det aktuelle tilfælde kan du jo prøve at skrive de data du sender over
> mail til en log-fil samtidig, så du kan se om der er forskel på
> indholdet i loggen og i mailen.
>
> Måden de forskellige browsere håndterer formular submits på er
> standardiseret, så der bør ikke være nogen forskel på måden, hvorpå en
> formular submittes.

Hej Jacob, tak for dit svar - det kunne jeg godt tænke mig at prøve, men da
jeg ikke på nogen måde er en erfaren php-programmør kan jeg ikke bare lige
gøre det - måske jeg kan lokke dig til at skrive hvordan man gør?



Jacob Atzen (27-06-2005)
Kommentar
Fra : Jacob Atzen


Dato : 27-06-05 18:55

On 2005-06-27, dhek <dhek@REMOVEtiscali.dk> wrote:
> Hej Jacob, tak for dit svar - det kunne jeg godt tænke mig at prøve,
> men da jeg ikke på nogen måde er en erfaren php-programmør kan jeg
> ikke bare lige gøre det - måske jeg kan lokke dig til at skrive
> hvordan man gør?

Gør hvad?

--
Med venlig hilsen
- Jacob Atzen

dhek (27-06-2005)
Kommentar
Fra : dhek


Dato : 27-06-05 19:45


"Jacob Atzen" <jacob@aub.dk> wrote in message
news:slrndc0fcd.ddl.jacob@tank.aub.dk...
> On 2005-06-27, dhek <dhek@REMOVEtiscali.dk> wrote:
>> Hej Jacob, tak for dit svar - det kunne jeg godt tænke mig at prøve,
>> men da jeg ikke på nogen måde er en erfaren php-programmør kan jeg
>> ikke bare lige gøre det - måske jeg kan lokke dig til at skrive
>> hvordan man gør?
>
> Gør hvad?

Citat:
> I det aktuelle tilfælde kan du jo prøve at skrive de data du sender over
> mail til en log-fil samtidig, så du kan se om der er forskel på
> indholdet i loggen og i mailen.



Jacob Atzen (27-06-2005)
Kommentar
Fra : Jacob Atzen


Dato : 27-06-05 20:34

On 2005-06-27, dhek <dhek@REMOVEtiscali.dk> wrote:
>
> "Jacob Atzen" <jacob@aub.dk> wrote in message
> news:slrndc0fcd.ddl.jacob@tank.aub.dk...
>> On 2005-06-27, dhek <dhek@REMOVEtiscali.dk> wrote:
>>> Hej Jacob, tak for dit svar - det kunne jeg godt tænke mig at prøve,
>>> men da jeg ikke på nogen måde er en erfaren php-programmør kan jeg
>>> ikke bare lige gøre det - måske jeg kan lokke dig til at skrive
>>> hvordan man gør?
>>
>> Gør hvad?
>
> Citat:
>> I det aktuelle tilfælde kan du jo prøve at skrive de data du sender over
>> mail til en log-fil samtidig, så du kan se om der er forskel på
>> indholdet i loggen og i mailen.

$to = [en eller anden e-mail adresse]
$subject = [et emne]
$body = [beskeden]

mail($to, $subject, $body);
$fp = fopen('maillog', 'a+');
fwrite($fp, "Til: $to\nEmne: $subject\nBesked:\n$body\n");
fclose($fp);

--
Med venlig hilsen
- Jacob Atzen

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste