je suis en train de changer cela:champ de contrôle formmail
foreach $require (@Required) {
# If the required field is the email field, the syntax of the email #
# address if checked to make sure it passes a valid syntax. #
if ($require eq 'email' && !&check_email($Config{$require})) {
push(@error,$require);
}
//////////////////////////////////////////////////////////////////////////////////
sub check_email {
# Initialize local email variable with input to subroutine. #
$email = $_[0];
# If the e-mail address contains: #
if ($email =~ /(@.*@)|(\.\.)|(@\.)|(\[email protected])|(^\.)/ ||
# the e-mail address contains an invalid syntax. Or, if the #
# syntax does not match the following regular expression pattern #
# it fails basic syntax verification. #
$email !~ /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z0-9]+)(\]?)$/) {
# Basic syntax requires: one or more characters before the @ sign, #
# followed by an optional '[', then any number of letters, numbers, #
# dashes or periods (valid domain/IP characters) ending in a period #
# and then 2 or 3 letters (for domain suffixes) or 1 to 3 numbers #
# (for IP addresses). An ending bracket is also allowed as it is #
# valid syntax to have an email address like: [email protected][255.255.255.0] #
# Return a false value, since the e-mail address did not pass valid #
# syntax. #
return 0;
}
else {
# Return a true value, e-mail verification passed. #
return 1;
}
}
dans ce:
foreach $require (@Required) {
if ($require eq 'fieldb' && !&check_fieldb($Config{$require})) {
push(@error,$require);
}
///////////////////////////////////////////////////////////////////////////////
sub check_fieldb {
# If field b is under 20% of field a: #
if ($fieldb <=($fielda/100)*20) {
# Return a false value, since field b is less than 20% of field a
return 0;
}
else {
# Return a true value, fieldb verification passed. #
return 1;
}
}
mais il ne fonctionne pas, retourne toujours 0. comment pourrais-je résoudre ce problème?
! Horreur de codage! - variables globales!! Ouch ouch mes yeux! Ne pensez même pas à demander de l'aide jusqu'à ce que vous passiez '$ fielda' et' $ fieldb' comme paramètres pour votre fonction. –
En outre, si vous avez accès au CPAN ... vous devriez utiliser Email :: Valid (http://search.cpan.org/~rjbs/Email-Valid-0.184/lib/Email/Valid.pm) pour vérifier pour –
Je ne veux pas valider le champ email, juste un champ numérique. quant aux variables globales, ce n'est pas mon script - je ne connais pas du tout perl – Jamie