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> Navn ................ </tt>
<INPUT type="text" size="45" name="NAVN">
<span class="style3"> *</span></p>
<p><tt> Adresse ............. </tt>
<INPUT type="text" size="45" name="ADRESSE">
<span class="style3"> *</span></p>
<p><tt> Postnr & by ......... </tt>
<INPUT type="text" size="45" name="POSTNR_BY">
<span class="style3"> *</span></p>
<p><tt> Telefonnummer ....... </tt>
<INPUT name="TELEFON" type="text" size="20" maxlength="15">
<span class="style3"> *</span></p>
<p><tt> E-mail .............. </tt>
<INPUT name="EMAIL" type="text" size="45" maxlength="30">
<span class="style3"> *</span></p>
<p><tt> Fødselså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ælge/fravælge">
E-mail oplysninger<BR>
<BR>
<INPUT name="NYHEDSBREV" type="checkbox" class="checkBox" value="
Jeg ønsker email-abonnement på nyhedsbrev m.m." title="Klik for
at vælge/fravælge">
E-Mail nyhedsbrevet<BR>
<BR>
<input name="MEDLEMSKAB" type="checkbox" class="checkBox" value="
Jeg vil gerne være medlem" title="Klik for at
vælge/fravælge">
Jeg vil gerne væ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