Archief - scriptje om e-mailadres in tekstveld te versturen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Quilombo

Legacy Member
Hallo allemaal (lang geleden :p),

Momenteel heb ik het volgende:

Code:
<form>
  <input type="text" id="email" size="15" maxlength="75" value="Vul je e-mailadres in" />
  <input type="submit" value="Verstuur" class="submit" />
</form>

En - ge voelt 'em al komen - nu zou 'k graag willen dat wanneer mensen hun e-mailadres intypen en op 'verstuur' klikken, dat ik een mailtje ontvang met hun e-mailadres.

Graag een bestand of wat code of whatever, maar ook de uitleg wat ik daar precies mee moet doen. Moet ik iets wijzigen in het htm-bestand, waar moet ik de code plakken, wat zet ik op de server etc. Als je een link kan geven waar het allemaal degelijk staat uitgelegd volstaat dat uiteraard ook.

Als het even kan zou ik graag hebben dat wanneer je in het tekstveld klikt, dat alle tekst (de standaardwaarde dus) geselecteerd wordt of verdwijnt, zodat bezoekers niet eerst 'Vul hier je e-mailadres in' moeten wissen.

Het is de bedoeling dat dat tekstveld op elke pagina van de site wordt weergegeven. Echter wil ik niet vijftig e-mails per dag ontvangen. Is het mogelijk om in dat scriptje eerst nog een test uit te voeren om te controleren of er wel een @ in staat, zodat ik alleen e-mailadressen toegestuurd krijg? Ik las ook ergens dat het id wijzigen ook al redelijk wat bescherming biedt, omdat bots dan niet weten wat ze moeten invullen. Klopt dat wat? Captcha lijkt me niet erg aangewezen hier, vermits het tekstveld op elke pagina staat en een extra afbeeldinkje het design niet ten goede komt.

Nadat er op 'verstuur' wordt geklikt zou je ook op een bevestigingspagina moeten komen, als dat mogelijk is. Een andere manier om bezoekers te laten weten dat hun actie gelukt is mag ook, maar zelf zou ik eigenlijk niet weten hoe dan.

Even recapituleren:
  • Script om e-mailadres in tekstveld te versturen naar mijn e-mailadres
  • Standaardwaarde verdwijnt wanneer je in het tekstveld klikt
  • Anti-spam, bij voorkeur zonder captcha (in mate van het mogelijke)
  • Na verzenden bezoeker laten weten dat de actie gelukt is

En dan nog een tweede vraagje: ik las ooit ergens dat, om je header te laten lezen door een screenreader maar niet te laten tonen op de site dat vaak het volgende wordt gedaan:

Code:
h1 {
  margin-left: -9999px;}

Maar ik las ook ergens dat zoiets niet door alle screenreaders wordt gelezen. Is dat nog steeds de manier om h1's te verbergen, of wat is momenteel de meest aanvaarde manier?

Vriendelijke groet en alvast bedankt

Duffman-

Legacy Member
Hoe gevorderd ben je met het maken van sites?
Kan je bv. in JavaScrip tgeen event koppelen aan een click in een textfield?

Quilombo

Legacy Member
Wups, m'n broer was nog ingelogd. Ik wilde dus zeggen dat ik xHTML en css redelijk goed kan, en javascript een heel klein beetje. Met een paar tutorials moet dat nog wel lukken denk ik (tenminste toch ervoor zorgen dat het textfield leeg wordt als je erin klikt), maar aangezien dat maar een paar regeltjes zijn en ik na deze site waarschijnlijk nooit nog iets maak zou 't gemakkelijk zijn als iemand het hier ff post.

Van asp of php of waar je dat e-mailadres ook mee wilt versturen ken ik niks.

Xavez

Legacy Member
ivm anti-spam: http://livegraphics.eu/blog/captchas-en-accessibility-spam-bots-op-hun-eigen-zwakte-pakken-1

dat e-mailadres gaat inderdaad via php (of een andere SS Language) moeten gebeuren. In php ga je dan via de mail() functie (zie php.net) de mail moeten versturen. Even wat opzoeken over variabelen en je bent er zo mee weg...

het vakje leegmaken wordt iets in de aard van onfocus getelementbyID[element].value=""

Om iets te verbergen en toch nog te laten lezen door een screenreader/brailleregel kan je idd dat gebruiken, in combinatie met een andere stylesheet met media="braille" die de h1 terug gewoon positioneert :).

/edit: ohja, weten dat de actie gelukt is is eenvoudig, je bouwt een controle in je php script in, geeft hij geen error, dan redirect je naar verstuurd.php, geeft hij wel een error dan redirect je naar fout.php :).


Heel basic komt het op zoiets neer (real world ga je nog wat gedetailleerdere error handling willen doen maar bon, 'tis de idee die telt...):

formulier.php:
HTML:
<form method="post" action="process.php" id="mailform">
<fieldset>
	<legend>Contactform</legend>
	<label for="name">First name and Name</label> <input name="n" id="name" tabindex="1" />
	<label for="email">E-mail address</label> <input name="e" id="email" tabindex="2" />
	<label for="txtURL" class="h">Please leave this field blank to verify you are not some kind of bot</label>
    <input type="text" title="Please leave this field blank to verify you are not some kind of bot" class="h" name="txtURL" value="" />
	<label for="subject">Select a subject from the list</label>
	<select name="o" id="subject" tabindex="3">
		<option value="Booking" selected="selected">Option one</option>
		<option value="General question">Option two</option>
	</select>
	<label for="text">Your message</label> <textarea name="t" id="text" rows="10" cols="60" class="formulier" tabindex="4"></textarea>
	<input type="submit" value="Send" class="button" tabindex="5" />
	<input type="hidden" name="success" value="succes.php" class="hide" />
</fieldset>
</form>

process.php:
Code:
<?php
@extract($_POST);
$name = stripslashes($n);
$email = stripslashes($e);
$subject = stripslashes($o);
$body = stripslashes($t);
$spam = stripslashes($txtURL);
if (empty($name) OR empty($email) OR empty($subject) OR empty($body) OR !empty($spam)) {
   header("location:problem.php");
}
else {
	mail('[email protected]',"$subject",$body,"From: $name <$email>");
	header("location:sent.php");
}
?>
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan