Mail check probleempje...

Status
Niet open voor verdere reacties.

JB'tje

Gebruiker
Lid geworden
31 mei 2004
Berichten
556
Hallo allemaal.

Ik heb 2 dagen geleden de gehele 'error handler' van JPeetjes pagina overgenomen, geïnstalleerd en een beetje aangepast.
Toen kreeg ik honderden foutmeldingen binnen (bij het testen op de locale server), dus ben nog wel tijdje bezig met aanpassen van 'fout' gescripte stukken php en @'jes weghalen ;).

nu ben ik aangekomen bij het registratieformulier, waar een E-mail word verzonden. Ik gebruikte dit:
PHP:
if(@mail($to, $subject, $message, $from) == FALSE)
{
  $bericht = '<a class=\'report_red\'>Could not send an email to this email address.</a>';
}else{
// zeg dat alles goed is gegaan
Nu zijn: $subject, $message, $from allemaal standaard, en zijn dus goed ingevuld, maar $to zit vast aan een textbox waar je je E-mail adres moet invullen.
Het is dus mogelijk alles wat je maar wilt in te vullen in die tekstbox.
Een tijde geleden (voor het installeren van JPeetjes error handler) werkte deze code, maar nu krijg ik dit te zien: (ik vul in de textbox 'aapje' in)
Warning: mail(): SMTP server response: 504 <aapje>: Recipient address rejected: need fully-qualified address

Wat kan ik maken, dat ik geen error als deze te zien krijg, maar er wel word gecheked of de mail is verzonden.

Gegroet,
Jeffrey
 
$_POST['to'] / $_GET['to'] gebruiken ?
eeh, ik snap het niet helemaal.... :o

De code/functie 'mail' geeft automatisch een error terug als het fout gaat. Ik wil deze error graag onderdrukken en als het fout gaat een bericht aan de persoon die registreerd geven dat het fout gaat...

verder had ik al $_POST['']; gebruik...
PHP:
regel: 57|| $business['email'] = trim($_POST['email']);
regel: 130|| $to = $business['email']; // het e-mail addres.

Gegroet,
Jeffrey
 
$to kan een geldig E-mail adres zijn, maar het hoeft niet.... Ik heb geen '@' check en '.' check dus het is mogelijk bij de textbox van Email 'aapje' in te vullen.
Vervolgens zou er dan een E-mail naar 'aapje' gestuurd moeten worden, waarna ik vervolgens een error krijg die ik wil omzetten naar een bericht voor de persoon die zich registreerd....

vandaar dat ik dus dit gemaakt had:
PHP:
$business['email'] = trim($_POST['email']);
$to = $business['email']; // het e-mail addres.
$subject = 'bla'; $message = 'bla'; $from = 'admin@battlesoftime.com';

if(@mail($to, $subject, $message, $from) == FALSE)
{
  $bericht = '<a class='report_red'>Could not send an email to this email address.</a>';
}else{
// zeg dat alles goed is gegaan
als if false is, dan krijg je een error te zien, maar met de errorhandler van JPeetjes Do and Don'ts word er opgemerkt dat er een error is, waarna je vervolgens doorgelinkd word naar een 404 pagina.

ik zou dus graag een manier willen hebben waarmee ik de error die mail(); afgeeft kan omzetten naar een bericht die de speler te zien krijgt.

Gegroet,
Jeffrey
 
checker op $to maken voordat je de functie mail () aanroept ?

edit: en
$bericht = '<a class=\'report_red\'>Could not send an email to this email address.</a>';
Daar moet je escapen eh ?
 
ja, zou ik kunnen maken, maar dan is het alsnog mogelijk om 'aapje@aapje.aapje' in te vullen... dat evenmin een e-mail adres is....

Jeffrey
 
It is important to remember that the standard PHP error handler is completely bypassed. error_reporting() settings will have no effect and your error handler will be called regardless - however you are still able to read the current value of error_reporting and act appropriately. Of particular note is that this value will be 0 if the statement that caused the error was prepended by the @ error-control operator.

Also note that it is your responsibility to die() if necessary. If the error-handler function returns, script execution will continue with the next statement after the one that caused an error.
*moest het zelf zes keer doorlezen voor hij het volledig begreep*

Er wordt dus veel verantwoording bij jouw errorhandler gelegt, iets wat de makers van PHP zeer netjes hebben aangepakt als ik dat even mag zeggen :)


Overigens is een regexpje die controleert of het e-mailadres geldig is niet zo moeilijk hoor.
 
Laatst bewerkt:
*moest het zelf zes keer doorlezen voor hij het volledig begreep*
eerste keer gelezen: snap er niet veel van... ga het nog maar eens proberen ;)

Er wordt dus veel verantwoording bij jouw errorhandler gelegt, iets wat de makers van PHP zeer netjes hebben aangepakt als ik dat even mag zeggen :)
zeg wat je wilt :p
Overigens is een regexpje die controleert of het e-mailadres geldig is niet zo moeilijk hoor.
nou... das dan mooi....
eeh, hoe maak je dat dan??? en wat precies houd 'regexpje' in?

Gegroet,
Jeffrey
 
Geplaatst door JB'tje
nou... das dan mooi....
eeh, hoe maak je dat dan??? en wat precies houd 'regexpje' in?
PHP:
if( preg_match('/^([a-zA-Z0-9-_\.]+)(@){1}([a-zA-Z0-9-_\.]+)(\.){1}([a-zA-Z]){2,4}$/Us', $emailadres ) == FALSE )
{
  // Geen geldig e-mailadres.
}
:)

// Edit: quote me ff en neem de reguliere expressie (regexp, regex) dan over, 't forum vernaggelt de slashes een beetje.
 
Laatst bewerkt:
Ongeveer 1800 @'ds later.... en tientallen "isset()'s"
// Edit: quote me ff en neem de reguliere expressie (regexp, regex) dan over, 't forum vernaggelt de slashes een beetje.
Na lang na te denken snapte ik de regel... hehehe
code is gequote.. en het werkt zelf beter dan ik had verwacht !
dus, heel erg bedankt, zou me zelf niet gelukt zijn !

maar, nu zit ik met een probleempje.... ik snap niet alle code... ;)
PHP:
/^ //wat betekend dit?
([a-zA-Z0-9-_\ .]+) //tekens: a-z, A-Z, 0-9, -, _, . || + dat het vaker voorkomt?
(@) // volgende teken moet een @ zijn
{1} // deze  @ mag mar een keer voorkomen
([a-zA-Z0-9-_\.]+) // weer de tekens, komen X keer voor
(\ .) // nu moet er een . komen
{1} // komt een keer voor
([a-zA-Z]){2,4} // tekens, komen 2 tot 4 keer voor.
$/Us // nu snap ik dit ook niet...
ooh, warom moet er eigenlijk een slach voor de punt? "/."

Als ik het fout heb, zeg het me !

Gegroet,
Jeffrey
 
Laatst bewerkt:
/^ //wat betekend dit?
Moet beginnen met. Als je het binnen [] gebruikt, mag niet niet beginnen met.
([a-zA-Z0-9-_ .]+) //tekens: a-z, A-Z, 0-9, -, _, . || + dat het vaker voorkomt?
Tekens a t/m z, A t/m Z, 0 t/m 9, de dash (-), de underscore (_) en de punt (.) mogen voorkomen. De ^ ervoor geeft aan dat het eerste deel van de waarde van de 2e parameter, $emailadres, moet beginnen met één van deze tekens. De + betekent 1 of meer tekens. Oftewel, dit begin is niet optioneel, hij moet zo beginnen in $emailadres.
(@) // volgende teken moet een @ zijn
{1} // deze @ mag mar een keer voorkomen
Jup.
([a-zA-Z0-9-_.]+) // weer de tekens, komen X keer voor
De lengte van dat deel moet minstens 1 teken lang zijn :)
( .) // nu moet er een . komen
Eiglijk stond er '\.', omdat '.' een speciaal teken is in een regexp moet deze geëscaped worden. Het houdt simpelweg in dat er nu een punt (.) moet komen ja :)
{1} // komt een keer voor
Jup.
([a-zA-Z]){2,4} // tekens, komen 2 tot 4 keer voor.
Tekens, van a t/m z en van A t/m Z, die 2 t/m 4 keer voor mogen komen.

Dit is het domein van het e-mailadres:
.nl
.com
.co.uk
.info

2 - 4 tekens :)
$/Us // nu snap ik dit ook niet...
Preg modifiers, kun je wat over lezen op php.net :)

Maar dat zul je waarschijnlijk niet snappen, 't is dan ook vaag gelul wat daar staat. Beste is door gewoon te testen en te testen en te testen ;)
 
Ik zal het eens gaan testen en kijken wat het doet.

Heel erg bedankt voor jullie hulp,

Jeffrey :D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan