foutmelding form verzenden
Ik heb een script voor het verzenden van een formulier. Het bestand wordt wel goed verzonden.
Ik heb het al meerdere malen toegepast zonder problemen. Nu krijg ik plotseling deze fout melding:
Warning: strlen() expects parameter 1 to be string, array given in ..... on line 1975. De fout zit in de tweede regel.
$ph_section = "user template";
if (strlen($PHORM_ALERTTO) && !strlen($PHORM_TO) && !$PHORM_INFONLY && !$ph_GotData) {
$PHORM_TO = $PHORM_ALERTTO;
settype($PHORM_TO, "array");
}
if (isset($PHORM_TMPL) && isset($PHORM_TO) && !$ph_Abort) {
if ($ph_debug2) echo "<B>JS:</B> Mail Template(s)<BR>";
if (count($PHORM_TMPL) > $ph_MaxTMPL) $ph_Alerts['120'] = ph_Message("A120");
list(,$fPHORM_TO) = each($PHORM_TO);
list(,$fPHORM_SUBJECT) = each($PHORM_SUBJECT);
while ($ph_MaxTMPL-- && list($ph_key, $lPHORM_TMPL) = each($PHORM_TMPL)) {
if ($lPHORM_TMPL == ph_GENERIC) $lPHORM_TMPL = "$ph_root/files/generic.txt";
else $lPHORM_TMPL = "$ph_tpd/$lPHORM_TMPL";
$ph_Message = "";
$ph_Headers = "";
$ph_NonHeader = "";
$lPHORM_TO = "";
$lPHORM_FROM = "";
$lPHORM_SUBJECT = "";
$lPHORM_HEADERS = "";
$ph_TemplateHeaders = false;
if (ereg("(.+) +\+h$", $lPHORM_TMPL, $ph_regs)) {
$lPHORM_TMPL = trim($ph_regs[1]);
$ph_TemplateHeaders = true;
}
if ($ph_debug8) echo "Mail Template <B>$lPHORM_TMPL</B><BR>";
if (!$ph_Template = @implode("", file($lPHORM_TMPL))) {
$ph_Alerts['005'] = ph_Message("A005");
if ($php_errormsg) $ph_Alerts['005P'] = "%%%: $php_errormsg";
continue;
}
Kan iemand hier een oplossing voor vinden?
Gewijzigd op 23/09/2011 13:09:43 door Maarten Vossen
De errormelding is opzich duidelijk genoeg. Hij geeft aan dat de functie strlen een variabele als string moet krijgen, maar dat hij een array heeft gegeven.
In jou geval zou $PHORM_ALERTTO of $PHORM_TO een array zijn terwijl het een string moet zijn.
Dus ik moet de html aanpassen?
Welke code moet ik dan gebruiken?
Weet je wat het verschil is tussen een string en een array?
een string controleert of het correct ingevuld is.
althans dat denk ik.
dit staat nog verder in de code:
if (!strlen($lPHORM_TO)) $lPHORM_TO = $PHORM_TO[$ph_key];
if (!strlen($lPHORM_FROM)) $lPHORM_FROM = $PHORM_EFROM[$ph_key];
if (!strlen($lPHORM_SUBJECT)) $lPHORM_SUBJECT = $PHORM_SUBJECT[$ph_key];
if (!strlen($lPHORM_TO)) $lPHORM_TO = $fPHORM_TO;
if (!strlen($lPHORM_FROM)) $lPHORM_FROM = $PHORM_FROM;
if (!strlen($lPHORM_SUBJECT)) $lPHORM_SUBJECT = $fPHORM_SUBJECT;
$lPHORM_HEADERS.= ereg_replace("\r\n?", "\n", $PHORM_HEADERS[$ph_key]);
if (strlen($lPHORM_FROM)) {
if (strlen($lPHORM_HEADERS) && !ereg("\n$", $lPHORM_HEADERS)) $lPHORM_HEADERS.= "$ph_nl";
$lPHORM_HEADERS.= "From: $lPHORM_FROM$ph_nl";
}
Gewijzigd op 23/09/2011 13:58:06 door Maarten Vossen
Maarten Vossen op 23/09/2011 13:56:06:
in een array word de informatie van een variabele opgeslagen.
een string controleert of het correct ingevuld is.
althans dat denk ik.
een string controleert of het correct ingevuld is.
althans dat denk ik.
Daar was ik al bang voor. Deze informatie klopt niet. Wellicht is het handiger om eerst eens wat basisinformatie te gaan lezen over PHP. Je bent nu bezig dingen aan te passen terwijl je geen idee hebt wat je aan het doen bent.
Gewijzigd op 23/09/2011 14:02:11 door Ozzie PHP
dus de php in dit bestand klopt wel? maar moet het andere bestand dan aanpassen aan de array en string.
<form onsubmit="return checkform(this)" method="post" action="distribution_fox/phorm.php">
<input type="hidden" name="PHORM_CONFIG" value="quickconfig.php">
<tr>
<td class="form">
Incasso bedrag*
</td>
</tr>
<tr>
<td>
<input name="Incasso bedrag" id="Incasso bedrag" size="30">
</td>
</tr>
<tr>
<td class="form">
Opdrachten per jaar*
</td>
</tr>
<tr>
<td>
<select id="Opdrachten per jaar" name="Opdrachten per jaar">
<option value="0"></option>
<option value="1-10">1-10</option>
<option value="11-50">11-50</option>
<option value=">51">>51</option>
</selectT>
</td>
</tr>
maar kan je uitleggen waarom het nu opeens een foutmelding geeft en de afgelopen 5 keer niet?
Gewijzigd op 23/09/2011 14:26:14 door Maarten Vossen
Ik weet ook niet waarom je ineens een foutmelding krijgt. Je zal waarschijnlijk wel iets veranderd hebben in de code.
De opdrachtgever wacht er wel op dat het snel opgelost is.
Wil je wel vertellen waar de fout zit. Ik bedoel dan in welk bestand. php of html. array werken toch alleen in de php. dus als ik het bestand vervang voor een werkend formulier, dan moet het probleem toch ook opgelost zijn?
Zoek voor nu een snelle oplossing.
Maarten Vossen op 23/09/2011 14:31:21:
Ik heb alleen een probleempje.
De opdrachtgever wacht er wel op dat het snel opgelost is.
Wil je wel vertellen waar de fout zit. Ik bedoel dan in welk bestand. php of html. array werken toch alleen in de php. dus als ik het bestand vervang voor een werkend formulier, dan moet het probleem toch ook opgelost zijn?
Zoek voor nu een snelle oplossing.
De opdrachtgever wacht er wel op dat het snel opgelost is.
Wil je wel vertellen waar de fout zit. Ik bedoel dan in welk bestand. php of html. array werken toch alleen in de php. dus als ik het bestand vervang voor een werkend formulier, dan moet het probleem toch ook opgelost zijn?
Zoek voor nu een snelle oplossing.
Met alle respect, maar dat is absoluut niet mijn probleem. Als iemand jou inhuurt dan ben jij zelf verantwoordelijk... en als je dan al niet weet wat een array en een string is, tja... dan wordt het lastig.
wat ik ook raar vind is dat hetzelfde bestand op een andere server geen foutmelding geeft en bij een andere wel. waar kan dat aan liggen?
Ik heb helaas geen glazen bol, maar het kan zijn dat beide servers een andere php versie hebben.
Hoe kun je het in godsnaam in je hoofd halen op je op jouw niveau door een opdrachtgever in te laten huren.