[1] PEAR::SOAP Another order bug
| From: | Roland Schorr | Date: | Wed, 01 Dec 2004 14:32:42 +0000 |
| Subject: | [1] PEAR::SOAP Another order bug | ||
| References: | 1 | Groups: | php.soap |
| Request: | Send a blank email to php-soap+get-1672@lists.php.net to get a copy of this message | ||
Server.php: There's another Bug which uses the order given in the service's wsdl instead the order of the parameters in the request (see lines 512.. in Server.php). Simple Solution:
// validate each param's type
/**
* DISABLED (uses the wsdl order for params, which do not complaint to the order in the request
START>>
for($i=0; $i < count($p); $i++) {
// type not match
// if soap types do not match, we ok it if the mapped php types match
// this allows using plain php variables to work (ie. stuff like Decimal would fail otherwise)
// we only error if the types exist in our type maps, and they differ
if (strcasecmp($sig_t[$i],$p[$i])!=0 &&
(isset($this->_typemap[SOAP_XML_SCHEMA_VERSION][$sig_t[$i]]) &&
strcasecmp($this->_typemap[SOAP_XML_SCHEMA_VERSION][$sig_t[$i]],$this->_typemap[SOAP_XML_SCHEMA_VERSION][$p[$i]])!=0)) {
$param = $params[$i];
$this->_raiseSoapFault("soap request contained mismatching parameters of name $param->name had type [{$p[$i]}], which did not match signature's type: [{$sig_t[$i]}], matched? ".(strcasecmp($sig_t[$i],$p[$i])),'','','Client');
return false;
}
}
<<END
*/