Hoewel alles lijkt te werken verschijnt op de betaalpagina van een registratieproces onderstaande meldingen:
Het gaat in deze php-file om de regel:Code:Warning: htmlspecialchars() expects parameter 1 to be string, array given in C:\domains\site\wwwroot\wp-content\plugins\event-espresso\gateways\targetpay\targetpay_vars.php on line 75 Warning: htmlspecialchars() expects parameter 1 to be string, array given in C:\domains\site\wwwroot\wp-content\plugins\event-espresso\gateways\targetpay\targetpay_vars.php on line 75
Zie eventueel de site via http://bit.ly/1nlHcUMPHP Code:
echo "<input type=\"hidden\" name=\"".htmlspecialchars($key)."\" value=\"".htmlspecialchars($value)."\">";
Hoe los ik het best dit probleem op?
- Parameter to String ERROR
-
09-02-2014, 12:01 #1
- Berichten
- 106
- Lid sinds
- 17 Jaar
Parameter to String ERROR
-
-
09-02-2014, 12:13 #2
- Berichten
- 796
- Lid sinds
- 16 Jaar
Re: Parameter to String ERROR
$value is een array, en er wordt een string verwacht.
print de output van je array even uit, dan kan je zien welke values je nodig hebt in je string.
Zet deze regels er even voor om de output van de array te zien:
print('<pre>');
print_r($value);
print('</pre>');
-
09-02-2014, 13:27 #3
- Berichten
- 796
- Lid sinds
- 16 Jaar
Re: Parameter to String ERROR
$key moet waarschijnlijk de key van je array worden en $value de value van je key.
Hoe worden beide variabelen voordien opgebouwd?
-
09-02-2014, 19:44 #4
- Berichten
- 442
- Lid sinds
- 16 Jaar
Re: Parameter to String ERROR
Waarschijnlijk heb je zoiets in je code zitten?
PHP Code:foreach($array as $key=>$value){
//hidden velden hier.
}
Als je de rest van je code plaatst weten we iets meer.
-
09-02-2014, 20:35 #5
- Berichten
- 106
- Lid sinds
- 17 Jaar
Re: Parameter to String ERROR
Dank voor de reacties tot dusver, hier meer van de code vooraf:
PHP Code:foreach ( $items as $key => $item ) { $lastEvent = $item->event_name; $totalAmount += $item->final_price * absint($item->quantity); // $adjustment = abs( $item->orig_price - $item->final_price ); }
$home = home_url(); $targetPay = new TargetPayCore ("AUTO", $rtlo, "71c0ede08d631e269dac7e2b064f92c5", "nl", ($targetpay_settings['use_sandbox']));
if (!$_POST["bank"]) {
$banks = false; $temp = $targetPay->getBankList();
echo "<form method=\"POST\" name=\"gateway_form\" target=\"_blank\">";
if (file_exists(EVENT_ESPRESSO_GATEWAY_DIR . "/targetpay/targetpay-logo.png")) { $button_url = EVENT_ESPRESSO_GATEWAY_URL . "/targetpay/targetpay-logo.png"; } else { $button_url = EVENT_ESPRESSO_PLUGINFULLURL . "gateways/targetpay/targetpay-logo.png"; }
foreach ($_POST as $key => $value) { echo "<input type=\"hidden\" name=\"".htmlspecialchars($key)."\" value=\"".htmlspecialchars($value)."\">"; } echo "<select name=\"bank\" style=\"border: 1px solid #ccc; border-radius: 3px; font-family: inherit; padding: 0.428571429rem; margin: 0 1em 0 0\">"; foreach ($temp as $key=>$value) { echo '<option value="'.$key.'">'.$value.'</option>'; }
echo "</select>"; echo "<input type=\"submit\" value=\" ". __('Pay', 'targetpay') ." \">";
-
09-02-2014, 21:00 #6
- Berichten
- 442
- Lid sinds
- 16 Jaar
Re: Parameter to String ERROR
Bedankt voor deze code. Ik denk dat het komt doordat de variabel $key er 3 keer instaat.
verander de bovenste $key door iets anders zoals $key2 of $name, aan de hand van deze code blijkt dat deze variabel toch niet gebruikt wordt.
De 2de $key even ook aanpassen naar iets unieks, zelfde geld in dit geval voor $value
-
09-02-2014, 22:06 #7
- Berichten
- 796
- Lid sinds
- 16 Jaar
Re: Parameter to String ERROR
Bedankt voor deze code. Ik denk dat het komt doordat de variabel $key er 3 keer instaat.
verander de bovenste $key door iets anders zoals $key2 of $name, aan de hand van deze code blijkt dat deze variabel toch niet gebruikt wordt.
De 2de $key even ook aanpassen naar iets unieks, zelfde geld in dit geval voor $value
De eerste $key wordt effectief wel gebruikt, want alle onderliggende code staat in deze foreach-lus.
Plaats na deze regel:
foreach ($_POST as $key => $value) {
even volgende code:
print('<pre>');
print_r($key);
print_r($value);
print('</pre>');
Dan krijg je de output van beide arrays en kunnen we verder achterhalen wat er fout zit.
Post deze output hier even.
-
09-02-2014, 23:15 #8
- Berichten
- 442
- Lid sinds
- 16 Jaar
Re: Parameter to String ERROR
Je hebt gelijk.
Voor leesbaarheid en debug redenen doet ik dit altijd wel, maar wat jij nu aangeeft zou niet moeten kloppen.
Als print_r inderdaad een array terug geeft is dit juist het probleem.
De $key en $value moeten strings zijn, vandaar juist de fout.
Zie bijvoorbeeld deze code:
PHP Code:
$array_first = array( "bank" => "ING", "bedrag" => "10", "methode" => "ideal", "test" => "test1");
foreach($array_first as $key=>$value){ echo $key.' en '.$value.'<br/>';}
Wat ik dan vermoed is dat je een Two-Dimensional Array hebt.
zoals dit:
PHP Code:
$array_first = array( "bank" => "ING", "bedrag" => "10", "methode" => "ideal", "test" => "test1");
$array_temp[] = $array_first;
foreach($array_temp as $key=>$value){ echo $key.' en '.htmlspecialchars($value).'<br/>';}
http://devianceprojects.com/phptest/
Vermoeden is dat $_POST dus een Two-Dimensional Array is. Hoe dit kan is bijvoorbeeld doordat je een veld naam als name[] heb genoemd. Dit heb ik niet getest, dus dit kan ik fout hebben. De fout komt wel dergelijk door een Two-Dimensional Array.
-
10-02-2014, 20:34 #9
- Berichten
- 106
- Lid sinds
- 17 Jaar
Re: Parameter to String ERROR
Na het inbouwen van een work-around is de error nu kwijt :)
PHP Code:foreach ($_POST as $key => $value) {
if (!is_array($value)) {
echo "<input type=\"hidden\" name=\"".htmlspecialchars($key)."\" value=\"".htmlspecialchars($value)."\">";
}
}
-
10-02-2014, 20:58 #10
- Berichten
- 796
- Lid sinds
- 16 Jaar
Re: Parameter to String ERROR
Dus hoeven deze values niet meegegeven te worden bij een submit? Werkt de functionaliteit nu nog zoals het hoort?
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic