Porblleem met formulier

Status
Niet open voor verdere reacties.

Sybil

Gebruiker
Lid geworden
20 sep 2006
Berichten
7
Ik krijg de volgende foutmelding als ik mijn formulier send:
De volgende fout heeft zich voorgedaan:
Bad or missing From address: ' <>'
Ga aub terug naar het invulformulier en probeer het opnieuw.

Dit is mijn java script:

Code:
<script type="text/javascript">	function doCheck() {		if (!validName())		{			return false;		}		if (!validEmail())		{			return false;		}		if (!validMessage())		{			return false;		}		return true;	}	function validName()	{		var str=document.mailform.Name.value;		if ((str == null) || (str.length == 0))		{			alert("Please enter your Name.");			return false;		}		return true;	}	function validEmail()	{		var str=document.mailform.Email.value;		if ((str == null) || (str.length == 0) || (str.indexOf("@")==-1))		{			alert("Please enter a valid Email Id.");			return false;		}		return true;	}	function validMessage()	{		var str=document.mailform.message.value;		if ((str == null) || (str.length == 0))		{			alert("Please enter your Message Details.");			return false;		}		if (str.length > 3000)		{			alert("Message Details too long. Maximum allowed length for Message is 3000 characters.");			return false;		}		return true;	}</script>

En dit het formulier:

Code:
<form name="mailform" method="post" action="./cgi-bin/mail.cgi" onsubmit="return doCheck()">
    <p><span class="style71"><span class="style57">
      <input type="hidden" name="code" value="V3v1DaSriNg0" />
    </span>Uw gegevens</span><span class="style67 style72"><span class="style77">:</span>:</span>
    <span class="style75">
    </span>    <span class="style67 style76">.</span></p>
      <table width="42%">  <tr>    <td width="33%" height="19" class="style5 style67 style71"> Naam: </td>    <td width="67%" height="19"><div align="left">
    <input name="Name" type="text" size="40" /> 
  </div></td>  </tr>  <tr>    <td width="33%" height="19" class="style5 style67 style71"> Email: </td>    <td width="67%" height="19"><div align="left">
    <input name="Email" type="text" size="40" /> 
  </div></td>  </tr>  <tr>    <td width="33%" height="19"><span class="style71">Telefoon:</span></td>    <td width="67%" height="19">
    <input name="telefoon" type="text" id="telefoon" size="40" /> </td>  </tr>  <tr>    <td width="33%" height="19" class="style5 style67 style71">Uw reactie: </td>    <td width="67%" height="19"><textarea name="Message" rows="8" cols="40"></textarea> </td>  </tr>  <tr>    
    <td width="33%" height="19">&nbsp;</td>
    <td width="67%" height="19"><div align="left">
      <input type="submit" class="style5" value="Verzenden" />
      <input type="reset" class="style5" value="Wissen" />
</div></td>  </tr></table>
  </form>

is er iemand die weet wat er fout gaat??



[Mod-edit] Code-tags geplaatst. [/edit]
 
Laatst bewerkt door een moderator:
Dan moet je je mail.cgi
even controleren, dit ivm gebruikte benamingen.
Moet wel kloppen met je form input.

:cool:
 
dat klinkt heel simpel!???

dit is het cgi script

Code:
#!C:/Perl/bin
# 
# v20060920.1415 - Jan Reilink - <info@vevida.com>
# mail.pl / mail.cgi
# Copyright 2004 - 2006 VEVIDA Services BV
#
  
use CGI;
use CGI::Carp "fatalsToBrowser";
$query = new CGI;
  
# $mail{From} wordt uit het formulier gehaald, de waardes "Name" en "Email" moeten in het 
# formulier aanwezig zijn. Dit is hoofdletter gevoelig.
# 
# U hoeft verder alleen maar de 4 onderstaande variabelen te wijzigen
# 
# $mail{To} '<postmaster@professionele-begeleiding.nl>';
# $subject = Reactie van de website 
# $url =  [url]http://www.professionele-begeleiding.nl[/url]
# $urlbedankt = Het adres van uw bedanktpagina, bijvoorbeeld [url]http://www.professionele-begeleiding.nl/bedankt.html[/url]
# 
# bedankt.html en feedback.html kunt u wijzigen zoals u wilt, het is echter niet aan te raden om iets in dit script
# te wijzigen.
#
# indien iemand een veld in van HTML-formulier niet invult wordt er een foutmelding getoond. Dit wordt via de 
# regel `if ($name eq "" || ...` geregeld. Deze variabelen dienen dan wel eerst gedefineerd te worden via:
# $variabelenaam = $query-&gt;param('naam_van_het_veld');
#
# Meer informatie : 
# * [url]http://theoryx5.uwinnipeg.ca/CPAN/data/Mail-Sendmail/Sendmail.html[/url]
# * [url]http://alma.ch/perl/Mail-Sendmail-FAQ.html[/url]
# * [url]http://perldoc.perl.org/CGI.html[/url]
#
  
$mail{To} = '<postmaster@professionele-begeleiding.nl>';
$subject = 'Reactie van Site';
$url = 'http://www.professionele-begeleiding.nl';
$urlformulier = 'http://www.professionele-begeleiding.nl/contact2.html';
$urlbedankt = 'http://www.professionele-begeleiding.nl/bedankt.html';
  
# hieronder niets wijzigen hoeft niets gewijzigd te worden.
# Get the form variables and strip HTML, carriage return and
# line feed characters.
# Controleer ook of alle invoervelden ingevuld zijn. Zo niet, geef een foutmelding en exit.
# Hier zou eventueel ook gecontroleerd kunnen worden of de invoer voldoet aan datgene
# wat wij verwachten ("invoer validatie").
#
# Door middel van het $query object kunnen bepaalde acties uitgevoerd worden. Bijvoorbeeld het 
# ophalen van gegevens uit het formulier (param()), het printen van HTML (p(), a({})) 
# enz. Zie voor meer informatie de CGI documentatie. Error bericht volgens de CGI class manier:
# [url]http://aspn.activestate.com/ASPN/docs/ActivePerl/5.8/lib/CGI.html[/url]
# 
# VEVIDA levert geen ondersteuning op zaken zoals bijvoorbeeld het aanpassen van de layout.
  
# Controleer of de hidden code uit het formulier meegegeven is en of deze code
# overeenkomt met vooraf gedefinieerde string (md5 hash van $secret_code met een niet vindbare
# waarde ervoor (geheim)).
# 
# WIJZIG DIT NIET!!
# De geheime code die meegegeven wordt via het formulier is: V3v1DaSriNg0
# hier wordt "geheim" vooraan geplakt en van "geheimV3v1DaSriNg0" wordt een md5 hash
# (checksum, fingerprint) gemaakt:
# 6a5949b7fc4a23136f2bbfdbbaf2f1c6
# WIJZIG DIT NIET!!
  
use Digest::Perl::MD5 'md5_hex';
$secret_code = md5_hex(geheim, $query->param('code'));
$our_code = "6a5949b7fc4a23136f2bbfdbbaf2f1c6";
  
if ($secret_code ne $our_code) {
# De code kwam niet overeen, we gaan er vanuit dat het script rechtstreeks
# aangeroepen werd. Een nette foutmelding is daarom niet nodig.
# exit();
print "codes not compliant";
}

$name = $query->param('naam');
$name =~ s/<[^>]*>//g;
$email = $query->param('emailadres');
$email =~ s/<[^>]*>//g;
$message = $query->param('opmerking');
$message =~ s/<[^>]*>//g;

$mail{From} = $name . ' <' . $email . '>';
my $server = 'localhost';

BEGIN { $| = 1;}
END {
if (!$loaded) {
exit();
}
}

use Mail::Sendmail;
$loaded = 1;
if ($server) {
$mail{Smtp} = $server;
}

$mail{Subject} = $subject;
$mail{Message} = "Naam: ". $name. "\n\n";
$mail{Message} .= "Emailadres: ". $email . "\n";
$mail{Message} .= "Bericht: \n". $message . "\n\n";

if (sendmail %mail) {
# Hier wordt de bevestiging of een foutmelding gegeven
if ($Mail::Sendmail::error) {
print $query->header;
print $query->start_html("Error sending mail..."),
$query->header,
$query->p("Er heeft zich een fout voorgedaan",
"Ga aub", $query->a({href=>"javascript:history.go(-1)"},"terug naar het invulformulier"),
"en probeer het opnieuw<br />content of $Mail::Sendmail::error:\n$Mail::Sendmail::error"),
$query->end_html;
exit();
}
# Redirect naar de bedankt pagina, volgens de CGI class manier:
# [url]http://aspn.activestate.com/ASPN/docs/ActivePerl/5.8/lib/CGI.html[/url]
# Een IIS webserver vereist dat de "NPH" header set is (1), ISAPI mode.
# print $query->;redirect(-uri=> $urlbedankt,
# -status=>302);


# redirect met Perl in CGI mode:
# print $urlbedankt;
print $query->redirect($urlbedankt);
}

# Error afhandeling
else {
print $query->header,
$query->start_html("Error while sending mail..."),
"De volgende fout heeft zich voorgedaan:\n",
$query->p($query->b($Mail::Sendmail::error),
"<br />\nGa aub", $query->a({href=>"javascript:history.back(-1)"},"terug naar het invulformulier"),
"en probeer het opnieuw.<br />\n"),
$query->end_html;
exit();
}

# EOF, End of File



[Mod-edit] Code-tag geplaatst. [/edit]
 
Laatst bewerkt door een moderator:
Code:
$name = $query->param('naam');
$name =~ s/<[^>]*>//g;
$email = $query->param('emailadres');
$email =~ s/<[^>]*>//g;
$message = $query->param('opmerking');

Die namen heb je nodig en komen uit het formulier, dus moet wel overeenkomen.
Zitten nu niet in het formulier.

:cool:



[Mod-edit] Code-tag geplaatst. [/edit]
 
Laatst bewerkt door een moderator:
Ok, ik snap het bijna, maar waar moet ik het precies veranderen in het script of in het formulier, ik denk in het formulier? maar weet je ook waar precies?
Ik heb er ook een input :telefoon bijgemaakt, moet die dan ook nog in het script?



[Mod-edit] Onnodige quote verwijderd. Klik “Reageer op vraag” ipv “Quote”. [/edit]
 
Laatst bewerkt door een moderator:
Het script VERWERKT.
Dus in het form moet de naam welke in het script gebruikt wordt worden aangehouden.
De telefoon laat je even zo,
kan altijd nog.

:cool:
 
Hartstikke bedankt, het is gelukt!!
Kan ik "telefoon" er gewoon zo bij maken?

Code:
$telefoon = $query->param('telefoon');
$telefoon =~ s/<[^>]*>//g;


$name = $query->param('naam');
$name =~ s/<[^>]*>//g;
$email = $query->param('emailadres');
$email =~ s/<[^>]*>//g;
$message = $query->param('opmerking');
$message =~ s/<[^>]*>//g;

En moet telefoon dan ook in dit rijtje?
Code:
$mail{Subject} = $subject;
$mail{Message} = "Naam: ". $name. "\n\n";
$mail{Message} .= "Emailadres: ". $email . "\n";
$mail{Message} .= "Bericht: \n". $message . "\n\n";



[Mod-edit] Onnodige quote verwijderd. Klik “Reageer op vraag” ipv “Quote”. [/edit]
[Mod-edit] Code-tags geplaatst. [/edit]
 
Laatst bewerkt door een moderator:
Dat lijkt mij wel.
Een gewone form pakt alles, met een petl script moet je inderdaad de
waardes van de name weer inlezen.
Maar als ik het goed heb zijn er beperkingen in het aantal messages.
Dan zou je al deze messages wederom in het perl script
onder één naam moeten brengen.
Dus als het hier fout gaat weet je in welke richting je moet zoeken.

:cool:
 
Damse / Heren, let even op de nodige tags als je een code plaatst.
Die buttons zijn er niet voor niets.

Bovenaan het raampje, als je een bericht typt, helemaal rechts # en <> en php.
 
Laatst bewerkt:
Damse / Heren, let even op de nodige tags als je een code plaatst.
Die buttons zijn er niet voor niets.

Bovenaan het raampje, als je een bericht typt, helemaal rechts # en <> en php.

sorry maar dit is abracadabra voor mij, wat bedoel je precies?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan