Anasayfa FORUMLAR Üye Girişi Dosyalar Dersler İpuçları Yardımcı Araçlar Hakkımızda
KİMLER BAĞLI
Toplam Üye: 32638
Aktif Üye: 0
Aktif Ziyaretçi: 803
Üye Adı
Şifre
Beni Hatırla
          Yeni Üye KayıtYeni Üye Kayıt
          Şifremi UnuttumŞifremi Unuttum
FORUMLAR
 Prince of Persia : Sands ..
(3904 okuma, 0 yanıt)
 Youtube Jacker İşe Yarama..
(8587 okuma, 8 yanıt)
 Netopsiyon Özel Nuke Sürü..
(47443 okuma, 61 yanıt)
 YouTube Videolarını Sorun..
(57734 okuma, 79 yanıt)
 Site yarışmasi Basvurular..
(21414 okuma, 25 yanıt)
 hiç birsey gözükmüyorrr..
(6198 okuma, 3 yanıt)
 Yardım Nuke ....
(11329 okuma, 11 yanıt)
 Mrb forum Yardım..
(4997 okuma, 2 yanıt)
 Üyelerin özel mesajlarını..
(7568 okuma, 5 yanıt)
 sitem yavaş açılıyo..
(6134 okuma, 3 yanıt)
 Nasipte Askere Gitmekte V..
(24002 okuma, 30 yanıt)
 Video stream nasil kullan..
(9180 okuma, 8 yanıt)
 Yeni Modul Oluşturdum ayr..
(10327 okuma, 8 yanıt)
 Forumu son 24 saatte kim ..
(6120 okuma, 3 yanıt)
 coppermine..
(8227 okuma, 7 yanıt)
 Yeni Forum Yaratıyorum Am..
(7682 okuma, 5 yanıt)
 Forum Sorunu..
(5898 okuma, 2 yanıt)
 Sağ Ve Sol Bloklar Yan Ya..
(10814 okuma, 10 yanıt)
 Admin paneli..
(8696 okuma, 6 yanıt)
 Forum Yonetim Sayfasi so..
(9103 okuma, 8 yanıt)
 Bilgide Haber Blok Yardım..
(4748 okuma, 1 yanıt)
 Türkçe karakter sorunu öl..
(9195 okuma, 7 yanıt)
 Güvenli Bir Php Sürümü..
(5221 okuma, 2 yanıt)
 titlede turkce karekter s..
(4940 okuma, 1 yanıt)
 5 DK SONRA İNTAHAR EDİCEM..
(13078 okuma, 14 yanıt)
 BBtonuke 2 Sorun..
(5667 okuma, 3 yanıt)
 Yeni Sitemde Hangi Php Nu..
(8431 okuma, 6 yanıt)
 Netopsion pagerank Kampan..
(7444 okuma, 5 yanıt)
 haber sitesi cms..
(92245 okuma, 112 yanıt)
 Pagerank Kampanyası İle İ..
(38200 okuma, 48 yanıt)
 Nukejmap site haritası ha..
(5443 okuma, 2 yanıt)
 flash sayfasına haber ekl..
(5604 okuma, 1 yanıt)
 Phaspeseo da Nerde hata y..
(4190 okuma, 0 yanıt)
 mail list toplu mail gönd..
(16410 okuma, 21 yanıt)
 Sothink dhtml menü..
(8270 okuma, 7 yanıt)
 dreamweaver..
(5885 okuma, 2 yanıt)
 Parse error, syntax error..
(8663 okuma, 6 yanıt)
 forum..
(5017 okuma, 1 yanıt)
 Forumdaki Konular ?..
(7919 okuma, 5 yanıt)
 Seo yükledim Güvenlik kod..
(6740 okuma, 3 yanıt)
 seonun kuruldugunu ve işl..
(7218 okuma, 4 yanıt)
 AEG ZD..
(6286 okuma, 2 yanıt)
 Kampanya Başvuruları..
(21375 okuma, 22 yanıt)
 Netopsiyon Pagerank İşbir..
(19767 okuma, 21 yanıt)
 Yeni Domain Googlede yok..
(5349 okuma, 2 yanıt)
 sayfa üretim yazısı..
(4776 okuma, 1 yanıt)
 Boglon.de Sitemin Hizini ..
(3890 okuma, 0 yanıt)
 Tema Taşırması?..
(4081 okuma, 0 yanıt)
 title nasıl değiştirlir..
(11472 okuma, 11 yanıt)
 2 tane ayri scrip..
(5358 okuma, 1 yanıt)
Netopsiyon Online: Forums
Netopsiyon Online :: Başlık görüntüleniyor - nusoap.php
 AramaArama   RütbelerRütbeliler   ProfilProfil   GirişGiriş 


nusoap.php

 
Bu forum kilitlendi: mesaj gönderemez, cevap yazamaz ya da başlıkları değiştiremezsiniz   Bu başlık kilitlendi: mesajları değiştiremez ya da cevap yazamazsınız    Netopsiyon Online Forum Ana Sayfa -> Eski Başlıklar
Önceki başlık :: Sonraki başlık  
Yazar Mesaj
heryerde
Mesaj: 1+
Mesaj: 1+





Kayıt: Jun 14, 2004
Mesajlar: 7
Konum: istanbul

MesajTarih: 2006-09-04, 13:51:39    Mesaj konusu: nusoap.php Alıntıyla Cevap Gönder

selamun aleykum
kardeşler php den anlıyosanız eğer bi sorum olcak size.
bi arama scripti var elimde bunun nusoap.php dosyasındaki charset ile sitemin ana charseti uymuyor yani utf-8 ile çalışıyo script bunu nasıl değiştircez ?
eğer anlarım diyosanız dosyayı gönderiyim bi şekilde nereye ne eklemem gerekli söyler misiniz.
Başa dön
Kullanıcının profilini görüntüle Özel mesaj gönder E-posta gönder Yazarın web sitesini ziyaret et
Bu Site Google Adsense ile Gelir Elde Ediyor









Tarih: 2024-05-04, 23:31:18    Mesaj konusu: Forum Arası Reklamlar


Başa dön
Aliosman
Teknik Yönetici
Teknik Yönetici





Kayıt: Jul 20, 2002
Mesajlar: 3836
Konum: Balıkesir

MesajTarih: 2006-09-06, 12:42:51    Mesaj konusu: Alıntıyla Cevap Gönder

Tam olarak yapamadığınız nedir net olarak anlayamadım. Kodları verirseniz ve biraz daha açıklarsanız yardımcı olmaya çalışırım.
Başa dön
Kullanıcının profilini görüntüle Özel mesaj gönder Yazarın web sitesini ziyaret et
heryerde
Mesaj: 1+
Mesaj: 1+





Kayıt: Jun 14, 2004
Mesajlar: 7
Konum: istanbul

MesajTarih: 2006-09-06, 20:59:21    Mesaj konusu: Re: nusoap.php Alıntıyla Cevap Gönder

[code:1:de86ab68d3]
<?php

/*

NuSOAP - Web Services Toolkit for PHP

Copyright (c) 2002 NuSphere Corporation

|| One small change made by Google Blogoscoped
|| search for "philipp"


This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

If you have any questions or comments, please email:

Dietrich Ayala
dietrich@ganx4.com
http://dietrich.ganx4.com/nusoap

NuSphere Corporation
http://www.nusphere.com

*/

/* load classes

// necessary classes
require_once('class.soapclient.php');
require_once('class.soap_val.php');
require_once('class.soap_parser.php');
require_once('class.soap_fault.php');

// transport classes
require_once('class.soap_transport_http.php');

// optional add-on classes
require_once('class.xmlschema.php');
require_once('class.wsdl.php');

// server class
require_once('class.soap_server.php');*/

/**
*
* nusoap_base
*
* @author Dietrich Ayala <dietrich@ganx4.com>
* @version v 0.6.3
* @access public
*/
class nusoap_base {

var $title = 'NuSOAP';
var $version = '0.6.3';
var $error_str = false;
var $debug_str = '';
// toggles automatic encoding of special characters
var $charencoding = true;

/**
* set schema version
*
* @var XMLSchemaVersion
* @access public
*/
var $XMLSchemaVersion = 'http://www.w3.org/2001/XMLSchema';

/**
* set default encoding
*
* @var soap_defencoding
* @access public
*/

var $soap_defencoding = 'UTF-8';
// var $soap_defencoding = 'ISO-8859-1';

/**
* load namespace uris into an array of uri => prefix
*
* @var namespaces
* @access public
*/
var $namespaces = array(
'SOAP-ENV' => 'http://schemas.xmlsoap.org/soap/envelope/',
'xsd' => 'http://www.w3.org/2001/XMLSchema',
'xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
'SOAP-ENC' => 'http://schemas.xmlsoap.org/soap/encoding/',
'si' => 'http://soapinterop.org/xsd');
/**
* load types into typemap array
* is this legacy yet?
* no, this is used by the xmlschema class to verify type => namespace mappings.
* @var typemap
* @access public
*/
var $typemap = array(
'http://www.w3.org/2001/XMLSchema' => array(
'string'=>'string','boolean'=>'boolean','float'=>'double','double'=>'double','decimal'=>'double',
'duration'=>'','dateTime'=>'string','time'=>'string','date'=>'string','gYearMonth'=>'',
'gYear'=>'','gMonthDay'=>'','gDay'=>'','gMonth'=>'','hexBinary'=>'string','base64Binary'=>'string',
// derived datatypes
'normalizedString'=>'string','token'=>'string','language'=>'','NMTOKEN'=>'','NMTOKENS'=>'','Name'=>'','NCName'=>'','ID'=>'',
'IDREF'=>'','IDREFS'=>'','ENTITY'=>'','ENTITIES'=>'','integer'=>'integer','nonPositiveInteger'=>'integer',
'negativeInteger'=>'integer','long'=>'integer','int'=>'integer','short'=>'integer','byte'=>'integer','nonNegativeInteger'=>'integer',
'unsignedLong'=>'','unsignedInt'=>'','unsignedShort'=>'','unsignedByte'=>'','positiveInteger'=>''),
'http://www.w3.org/1999/XMLSchema' => array(
'i4'=>'','int'=>'integer','boolean'=>'boolean','string'=>'string','double'=>'double',
'float'=>'double','dateTime'=>'string',
'timeInstant'=>'string','base64Binary'=>'string','base64'=>'string','ur-type'=>'array'),
'http://soapinterop.org/xsd' => array('SOAPStruct'=>'struct'),
'http://schemas.xmlsoap.org/soap/encoding/' => array('base64'=>'string','array'=>'array','Array'=>'array'),
'http://xml.apache.org/xml-soap' => array('Map')
);

/**
* entities to convert
*
* @var xmlEntities
* @access public
*/
var $xmlEntities = array('quot' => '"','amp' => '&',
'lt' => '<','gt' => '>','apos' => "'");

/**
* adds debug data to the class level debug string
*
* @param string $string debug data
* @access private
*/
function debug($string){
$this->debug_str .= get_class($this).": $string\n";
}

/**
* returns error string if present
*
* @return boolean $string error string
* @access public
*/
function getError(){
if($this->error_str != ''){
return $this->error_str;
}
return false;
}

/**
* sets error string
*
* @return boolean $string error string
* @access private
*/
function setError($str){
$this->error_str = $str;
}

/**
* serializes PHP values in accordance w/ section 5. Type information is
* not serialized if $use == 'literal'.
*
* @return string
* @access public
*/
function serialize_val($val,$name=false,$type=false,$name_ns=false,$type_ns=false,$attributes=false,$use='encoded'){
if(is_object($val) && get_class($val) == 'soapval'){
return $val->serialize($use);
}
$this->debug( "in serialize_val: $val, $name, $type, $name_ns, $type_ns, $attributes, $use");
// if no name, use item
$name = (!$name|| is_numeric($name)) ? 'soapVal' : $name;
// if name has ns, add ns prefix to name
$xmlns = '';
if($name_ns){
$prefix = 'nu'.rand(1000,9999);
$name = $prefix.':'.$name;
$xmlns .= " xmlns:$prefix=\"$name_ns\"";
}
// if type is prefixed, create type prefix
if($type_ns != '' && $type_ns == $this->namespaces['xsd']){
// need to fix this. shouldn't default to xsd if no ns specified
// w/o checking against typemap
$type_prefix = 'xsd';
} elseif($type_ns){
$type_prefix = 'ns'.rand(1000,9999);
$xmlns .= " xmlns:$type_prefix=\"$type_ns\"";
}
// serialize attributes if present
if($attributes){
foreach($attributes as $k => $v){
$atts .= " $k=\"$v\"";
}
}
// serialize if an xsd built-in primitive type
if($type != '' && isset($this->typemap[$this->XMLSchemaVersion][$type])){
if ($use == 'literal') {
return "<$name$xmlns>$val</$name>";
} else {
return "<$name$xmlns xsi:type=\"xsd:$type\">$val</$name>";
}
}
// detect type and serialize
$xml = '';
$atts = '';
switch(true) {
case ($type == '' && is_null($val)):
if ($use == 'literal') {
// TODO: depends on nillable
$xml .= "<$name$xmlns/>";
} else {
$xml .= "<$name$xmlns xsi:type=\"xsd:nil\"/>";
}
break;
case (is_bool($val) || $type == 'boolean'):

/* philipp */
$val = ($val) ? "true" : "false";

if ($use == 'literal') {
$xml .= "<$name$xmlns $atts>$val</$name>";
} else {
$xml .= "<$name$xmlns xsi:type=\"xsd:boolean\"$atts>$val</$name>";
}
break;
case (is_int($val) || is_long($val) || $type == 'int'):
if ($use == 'literal') {
$xml .= "<$name$xmlns $atts>$val</$name>";
} else {
$xml .= "<$name$xmlns xsi:type=\"xsd:int\"$atts>$val</$name>";
}
break;
case (is_float($val)|| is_double($val) || $type == 'float'):
if ($use == 'literal') {
$xml .= "<$name$xmlns $atts>$val</$name>";
} else {
$xml .= "<$name$xmlns xsi:type=\"xsd:float\"$atts>$val</$name>";
}
break;
case (is_string($val) || $type == 'string'):
if($this->charencoding){
$val = htmlspecialchars($val, ENT_QUOTES);
}
if ($use == 'literal') {
$xml .= "<$name$xmlns $atts>$val</$name>";
} else {
$xml .= "<$name$xmlns xsi:type=\"xsd:string\"$atts>$val</$name>";
}
break;
case is_object($val):
$name = get_class($val);
foreach(get_object_vars($val) as $k => $v){
$pXml = isset($pXml) ? $pXml.$this->serialize_val($v,$k,false,false,false,false,$use) : $this->serialize_val($v,$k,false,false,false,false,$use);
}
$xml .= '<'.$name.'>'.$pXml.'</'.$name.'>';
break;
break;
case (is_array($val) || $type):
// detect if struct or array
$keyList = array_keys($val);
$valueType = 'arraySimple';
foreach($keyList as $keyListValue){
if(!is_int($keyListValue)){
$valueType = 'arrayStruct';
break;
}
}
if($valueType=='arraySimple' || ereg('^ArrayOf',$type)){
$i = 0;
if(is_array($val) && count($val)> 0){
foreach($val as $v){
if(is_object($v) && get_class($v) == 'soapval'){
$tt = $v->type;
} else {
$tt = gettype($v);
}
$array_types[$tt] = 1;
$xml .= $this->serialize_val($v,'item',false,false,false,false,$use);
if(is_array($v) && is_numeric(key($v))){
$i += sizeof($v);
} else {
++$i;
}
}
if(count($array_types) > 1){
$array_typename = 'xsd:ur-type';
} elseif(isset($tt) && isset($this->typemap[$this->XMLSchemaVersion][$tt])) {
$array_typename = 'xsd:'.$tt;
} elseif($tt == 'array' || $tt == 'Array'){
$array_typename = 'SOAP-ENC:Array';
} else {
$array_typename = $tt;
}
if(isset($array_types['array'])){
$array_type = $i.",".$i;
} else {
$array_type = $i;
}
if ($use == 'literal') {
$xml = "<$name $atts>".$xml."</$name>";
} else {
$xml = "<$name xsi:type=\"SOAP-ENC:Array\" SOAP-ENC:arrayType=\"".$array_typename."[$array_type]\"$atts>".$xml."</$name>";
}
// empty array
} else {
if ($use == 'literal') {
$xml = "<$name $atts>".$xml."</$name>";;
} else {
$xml = "<$name xsi:type=\"SOAP-ENC:Array\" $atts>".$xml."</$name>";;
}
}
} else {
// got a struct
if(isset($type) && isset($type_prefix)){
$type_str = " xsi:type=\"$type_prefix:$type\"";
} else {
$type_str = '';
}
if ($use == 'literal') {
$xml .= "<$name$xmlns $atts>";
} else {
$xml .= "<$name$xmlns$type_str$atts>";
}
foreach($val as $k => $v){
$xml .= $this->serialize_val($v,$k,false,false,false,false,$use);
}
$xml .= "</$name>";
}
break;
default:
$xml .= 'not detected, got '.gettype($val).' for '.$val;
break;
}
return $xml;
}

/**
* serialize message
*
* @param string body
* @param string headers
* @param array namespaces
* @param string style
* @return string message
* @access public
*/
function serializeEnvelope($body,$headers=false,$namespaces=array(),$style='rpc'){
// serialize namespaces
$ns_string = '';
foreach(array_merge($this->namespaces,$namespaces) as $k => $v){
$ns_string .= " xmlns:$k=\"$v\"";
}
if($style == 'rpc') {
$ns_string = ' SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"' . $ns_string;
}

// serialize headers
if($headers){
$headers = "<SOAP-ENV:Header>".$headers."</SOAP-ENV:Header>";
}
// serialize envelope
return
'<?xml version="1.0" encoding="'.$this->soap_defencoding .'"?'.">".
'<SOAP-ENV:Envelope'.$ns_string.">".
$headers.
"<SOAP-ENV:Body>".
$body.
"</SOAP-ENV:Body>".
"</SOAP-ENV:Envelope>";
}

function formatDump($str){
$str = htmlspecialchars($str);
return nl2br($str);
}

/**
* returns the local part of a prefixed string
* returns the original string, if not prefixed
*
* @param string
* @return string
* @access public
*/
function getLocalPart($str){
if($sstr = strrchr($str,':')){
// get unqualified name
return substr( $sstr, 1 );
} else {
return $str;
}
}

/**
* returns the prefix part of a prefixed string
* returns false, if not prefixed
*
* @param string
* @return mixed
* @access public
*/
function getPrefix($str){
if($pos = strrpos($str,':')){
// get prefix
return substr($str,0,$pos);
}
return false;
}

function varDump($data) {
ob_start();
var_dump($data);
$ret_val = ob_get_contents();
ob_end_clean();
return $ret_val;
}
}

// XML Schema Datatype Helper Functions

//xsd:dateTime helpers

/**
* convert unix timestamp to ISO 8601 compliant date string
*
* @param string $timestamp Unix time stamp
* @access public
*/
function timestamp_to_iso8601($timestamp,$utc=true){
$datestr = date('Y-m-d\TH:i:sO',$timestamp);
if($utc){
$eregStr =
'([0-9]{4})-'. // centuries & years CCYY-
'([0-9]{2})-'. // months MM-
'([0-9]{2})'. // days DD
'T'. // separator T
'([0-9]{2}):'. // hours hh:
'([0-9]{2}):'. // minutes mm:
'([0-9]{2})(\.[0-9]*)?'. // seconds ss.ss...
'(Z|[+\-][0-9]{2}:?[0-9]{2})?'; // Z to indicate UTC, -/+HH:MM:SS.SS... for local tz's

if(ereg($eregStr,$datestr,$regs)){
return sprintf('%04d-%02d-%02dT%02d:%02d:%02dZ',$regs[1],$regs[2],$regs[3],$regs[4],$regs[5],$regs[6]);
}
return false;
} else {
return $datestr;
}
}

/**
* convert ISO 8601 compliant date string to unix timestamp
*
* @param string $datestr ISO 8601 compliant date string
* @access public
*/
function iso8601_to_timestamp($datestr){
$eregStr =
'([0-9]{4})-'. // centuries & years CCYY-
'([0-9]{2})-'. // months MM-
'([0-9]{2})'. // days DD
'T'. // separator T
'([0-9]{2}):'. // hours hh:
'([0-9]{2}):'. // minutes mm:
'([0-9]{2})(\.[0-9]+)?'. // seconds ss.ss...
'(Z|[+\-][0-9]{2}:?[0-9]{2})?'; // Z to indicate UTC, -/+HH:MM:SS.SS... for local tz's
if(ereg($eregStr,$datestr,$regs)){
// not utc
if($regs[8] != 'Z'){
$op = substr($regs[8],0,1);
$h = substr($regs[8],1,2);
$m = substr($regs[8],strlen($regs[8])-2,2);
if($op == '-'){
$regs[4] = $regs[4] + $h;
$regs[5] = $regs[5] + $m;
} elseif($op == '+'){
$regs[4] = $regs[4] - $h;
$regs[5] = $regs[5] - $m;
}
}
return strtotime("$regs[1]-$regs[2]-$regs[3] $regs[4]:$regs[5]:$regs[6]Z");
} else {
return false;
}
}



?><?php



/**
* soap_fault class, allows for creation of faults
* mainly used for returning faults from deployed functions
* in a server instance.
* @author Dietrich Ayala <dietrich@ganx4.com>
* @version v 0.6.3
* @access public
*/
class soap_fault extends nusoap_base {

var $faultcode;
var $faultactor;
var $faultstring;
var $faultdetail;

/**
* constructor
*
* @param string $faultcode (client | server)
* @param string $faultactor only used when msg routed between multiple actors
* @param string $faultstring human readable error message
* @param string $faultdetail
*/
function soap_fault($faultcode,$faultactor='',$faultstring='',$faultdetail=''){
$this->faultcode = $faultcode;
$this->faultactor = $faultactor;
$this->faultstring = $faultstring;
$this->faultdetail = $faultdetail;
}

/**
* serialize a fault
*
* @access public
*/
function serialize(){
$ns_string = '';
foreach($this->namespaces as $k => $v){
$ns_string .= "\n xmlns:$k=\"$v\"";
}
$return_msg =
'<?xml version="1.0"?'.">\n".
'<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"'.$ns_string.">\n".
'<SOAP-ENV:Body>'.
'<SOAP-ENV:Fault>'.
'<faultcode>'.$this->faultcode.'</faultcode>'.
'<faultactor>'.$this->faultactor.'</faultactor>'.
'<faultstring>'.$this->faultstring.'</faultstring>'.
'<detail>'.$this->serialize_val($this->faultdetail).'</detail>'.
'</SOAP-ENV:Fault>'.
'</SOAP-ENV:Body>'.
'</SOAP-ENV:Envelope>';
return $return_msg;
}
}



?><?php



/**
* parses an XML Schema, allows access to it's data, other utility methods
* no validation... yet.
* very experimental and limited. As is discussed on XML-DEV, I'm one of the people
* that just doesn't have time to read the spec(s) thoroughly, and just have a couple of trusty
* tutorials I refer to :)
*
* @author Dietrich Ayala <dietrich@ganx4.com>
* @version v 0.6.3
* @access public
*/
class XMLSchema extends nusoap_base {

// files
var $schema = '';
var $xml = '';
// define internal arrays of bindings, ports, operations, messages, etc.
var $complexTypes = array();
// target namespace
var $schemaTargetNamespace = '';
// parser vars
var $parser;
var $position;
var $depth = 0;
var $depth_array = array();

/**
* constructor
*
* @param string $schema schema document URI
* @param string $xml xml document URI
* @access public
*/
function XMLSchema($schema='',$xml=''){

$this->debug('xmlschema class instantiated, inside constructor');
// files
$this->schema = $schema;
$this->xml = $xml;

// parse schema file
if($schema != ''){
$this->debug('initial schema file: '.$schema);
$this->parseFile($schema);
}

// parse xml file
if($xml != ''){
$this->debug('initial xml file: '.$xml);
$this->parseFile($xml);
}

}

/**
* parse an XML file
*
* @param string $xml, path/URL to XML file
* @param string $type, (schema | xml)
* @return boolean
* @access public
*/
function parseFile($xml,$type){
// parse xml file
if($xml != ""){
$this->debug('parsing $xml');
$xmlStr = @join("",@file($xml));
if($xmlStr == ""){
$this->setError('No file at the specified URL: '.$xml);
return false;
} else {
$this->parseString($xmlStr,$type);
return true;
}
}
return false;
}

/**
* parse an XML string
*
* @param string $xml path or URL
* @param string $type, (schema|xml)
* @access private
*/
function parseString($xml,$type){
// parse xml string
if($xml != ""){

// Create an XML parser.
$this->parser = xml_parser_create();
// Set the options for parsing the XML data.
xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0);

// Set the object for the parser.
xml_set_object($this->parser, $this);

// Set the element handlers for the parser.
if($type == "schema"){
xml_set_element_handler($this->parser, 'schemaStartElement','schemaEndElement');
xml_set_character_data_handler($this->parser,'schemaCharacterData');
} elseif($type == "xml"){
xml_set_element_handler($this->parser, 'xmlStartElement','xmlEndElement');
xml_set_character_data_handler($this->parser,'xmlCharacterData');
}

// Parse the XML file.
if(!xml_parse($this->parser,$xml,true)){
// Display an error message.
$errstr = sprintf('XML error on line %d: %s',
xml_get_current_line_number($this->parser),
xml_error_string(xml_get_error_code($this->parser))
);
$this->debug('XML parse error: '.$errstr);
$this->setError('Parser error: '.$errstr);
}

xml_parser_free($this->parser);
} else{
$this->debug('no xml passed to parseString()!!');
$this->setError('no xml passed to parseString()!!');
}
}

/**
* start-element handler
*
* @param string $parser XML parser object
* @param string $name element name
* @param string $attrs associative array of attributes
* @access private
*/
function schemaStartElement($parser, $name, $attrs) {

// position in the total number of elements, starting from 0
$pos = $this->position++;
$depth = $this->depth++;
// set self as current value for this depth
$this->depth_array[$depth] = $pos;

// get element prefix
if($prefix = $this->getPrefix($name)){
// get unqualified name
$name = $this->getLocalPart($name);
} else {
$prefix = '';
}

// loop thru attributes, expanding, and registering namespace declarations
if(count($attrs) > 0){
foreach($attrs as $k => $v){
// if ns declarations, add to class level array of valid namespaces
if(ereg("^xmlns",$k)){
//$this->xdebug("$k: $v");
//$this->xdebug('ns_prefix: '.$this->getPrefix($k));
if($ns_prefix = substr(strrchr($k,':'),1)){
$this->namespaces[$ns_prefix] = $v;
} else {
$this->namespaces['ns'.(count($this->namespaces)+1)] = $v;
}
if($v == 'http://www.w3.org/2001/XMLSchema' || $v == 'http://www.w3.org/1999/XMLSchema'){
$this->XMLSchemaVersion = $v;
$this->namespaces['xsi'] = $v.'-instance';
}
}
}
foreach($attrs as $k => $v){
// expand each attribute
$k = strpos($k,':') ? $this->expandQname($k) : $k;
$v = strpos($v,':') ? $this->expandQname($v) : $v;
$eAttrs[$k] = $v;
}
$attrs = $eAttrs;
} else {
$attrs = array();
}
// find status, register data
switch($name){
case ('all'|'choice'|'sequence'):
//$this->complexTypes[$this->currentComplexType]['compositor'] = 'all';
$this->complexTypes[$this->currentComplexType]['compositor'] = $name;
if($name == 'all'){
$this->complexTypes[$this->currentComplexType]['phpType'] = 'struct';
}
break;
case 'attribute':
//$this->xdebug("parsing attribute $attrs[name] $attrs[ref] of value: ".$attrs['http://schemas.xmlsoap.org/wsdl/:arrayType']);
if(isset($attrs['name'])){
$this->attributes[$attrs['name']] = $attrs;
$aname = $attrs['name'];
} elseif(isset($attrs['ref']) && $attrs['ref'] == 'http://schemas.xmlsoap.org/soap/encoding/:arrayType'){
$aname = $attrs['http://schemas.xmlsoap.org/wsdl/:arrayType'];
} elseif(isset($attrs['ref'])){
$aname = $attrs['ref'];
$this->attributes[$attrs['ref']] = $attrs;
}

if(isset($this->currentComplexType)){
$this->complexTypes[$this->currentComplexType]['attrs'][$aname] = $attrs;
} elseif(isset($this->currentElement)){
$this->elements[$this->currentElement]['attrs'][$aname] = $attrs;
}
// arrayType attribute
if(isset($attrs['http://schemas.xmlsoap.org/wsdl/:arrayType']) || $this->getLocalPart($aname) == 'arrayType'){
$this->complexTypes[$this->currentComplexType]['phpType'] = 'array';
$prefix = $this->getPrefix($aname);
if(isset($attrs['http://schemas.xmlsoap.org/wsdl/:arrayType'])){
$v = $attrs['http://schemas.xmlsoap.org/wsdl/:arrayType'];
} else {
$v = '';
}
if(strpos($v,'[,]')){
$this->complexTypes[$this->currentComplexType]['multidimensional'] = true;
}
$v = substr($v,0,strpos($v,'[')); // clip the []
if(!strpos($v,':') && isset($this->typemap[$this->XMLSchemaVersion][$v])){
$v = $this->XMLSchemaVersion.':'.$v;
}
$this->complexTypes[$this->currentComplexType]['arrayType'] = $v;
}
break;
case 'complexType':
if(isset($attrs['name'])){
$this->currentElement = false;
$this->currentComplexType = $attrs['name'];
$this->complexTypes[$this->currentComplexType] = $attrs;
$this->complexTypes[$this->currentComplexType]['typeClass'] = 'complexType';
if(isset($attrs['base']) && ereg(':Array$',$attrs['base'])){
$this->complexTypes[$this->currentComplexType]['phpType'] = 'array';
} else {
$this->complexTypes[$this->currentComplexType]['phpType'] = 'struct';
}
$this->xdebug('processing complexType '.$attrs['name']);
}
break;
case 'element':
if(isset($attrs['type'])){
$this->xdebug("processing element ".$attrs['name']);
$this->currentElement = $attrs['name'];
$this->elements[ $attrs['name'] ] = $attrs;
$this->elements[ $attrs['name'] ]['typeClass'] = 'element';
$ename = $attrs['name'];
} elseif(isset($attrs['ref'])){
$ename = $attrs['ref'];
} else {
$this->xdebug('adding complexType '.$attrs['name']);
$this->currentComplexType = $attrs['name'];
$this->complexTypes[ $attrs['name'] ] = $attrs;
$this->complexTypes[ $attrs['name'] ]['element'] = 1;
$this->complexTypes[$this->currentComplexType]['phpType'] = 'struct';
}
if(isset($ename) && $this->currentComplexType){
$this->complexTypes[$this->currentComplexType]['elements'][$ename] = $attrs;
}
break;
case 'restriction':
$this->xdebug("in restriction for ct: $this->currentComplexType and ce: $this->currentElement");
if($this->currentElement){
$this->elements[$this->currentElement]['type'] = $attrs['base'];
} elseif($this->currentComplexType){
$this->complexTypes[$this->currentComplexType]['restrictionBase'] = $attrs['base'];
if(strstr($attrs['base'],':') == ':Array'){
$this->complexTypes[$this->currentComplexType]['phpType'] = 'array';
}
}
break;
case 'schema':
$this->schema = $attrs;
$this->schema['schemaVersion'] = $this->getNamespaceFromPrefix($prefix);
break;
case 'simpleType':
$this->currentElement = $attrs['name'];
$this->elements[ $attrs['name'] ] = $attrs;
$this->elements[ $attrs['name'] ]['typeClass'] = 'element';
break;
}
}

/**
* end-element handler
*
* @param string $parser XML parser object
* @param string $name element name
* @access private
*/
function schemaEndElement($parser, $name) {
// position of current element is equal to the last value left in depth_array for my depth
if(isset($this->depth_array[$this->depth])){
$pos = $this->depth_array[$this->depth];
}
// bring depth down a notch
$this->depth--;
// move on...
if($name == 'complexType'){
$this->currentComplexType = false;
$this->currentElement = false;
}
if($name == 'element'){
$this->currentElement = false;
}
}

/**
* element content handler
*
* @param string $parser XML parser object
* @param string $data element content
* @access private
*/
function schemaCharacterData($parser, $data){
$pos = $this->depth_array[$this->depth];
$this->message[$pos]['cdata'] .= $data;
}

/**
* serialize the schema
*
* @access public
*/
function serializeSchema(){

$schemaPrefix = $this->getPrefixFromNamespace($this->XMLSchemaVersion);
$xml = '';
// complex types
foreach($this->complexTypes as $typeName => $attrs){
$contentStr = '';
// serialize child elements
if(count($attrs['elements']) > 0){
foreach($attrs['elements'] as $element => $eParts){
if(isset($eParts['ref'])){
$contentStr .= "<element ref=\"$element\"/>";
} else {
$contentStr .= "<element name=\"$element\" type=\"$eParts[type]\"/>";
}
}
}
// attributes
if(count($attrs['attrs']) >= 1){
foreach($attrs['attrs'] as $attr => $aParts){
$contentStr .= '<attribute ref="'.$aParts['ref'].'"';
if(isset($aParts['wsdl:arrayType'])){
$contentStr .= ' wsdl:arrayType="'.$aParts['wsdl:arrayType'].'"';
}
$contentStr .= '/>';
}
}
// if restriction
if( isset($attrs['restrictionBase']) && $attrs['restrictionBase'] != ''){
$contentStr = "<$schemaPrefix:restriction base=\"".$attrs['restrictionBase']."\">".$contentStr."</$schemaPrefix:restriction>";
}
// "all" compositor obviates complex/simple content
if(isset($attrs['compositor']) && $attrs['compositor'] == 'all'){
$contentStr = "<$schemaPrefix:$attrs[compositor]>".$contentStr."</$schemaPrefix:$attrs[compositor]>";
}
// complex or simple content
elseif( count($attrs['elements']) > 0 || count($attrs['attrs']) > 0){
$contentStr = "<$schemaPrefix:complexContent>".$contentStr."</$schemaPrefix:complexContent>";
}
// compositors
if(isset($attrs['compositor']) && $attrs['compositor'] != '' && $attrs['compositor'] != 'all'){
$contentStr = "<$schemaPrefix:$attrs[compositor]>".$contentStr."</$schemaPrefix:$attrs[compositor]>";
}
// finalize complex type
if($contentStr != ''){
$contentStr = "<$schemaPrefix:complexType name=\"$typeName\">".$contentStr."</$schemaPrefix:complexType>";
} else {
$contentStr = "<$schemaPrefix:complexType name=\"$typeName\"/>";
}
$xml .= $contentStr;
}
// elements
if(isset($this->elements) && count($this->elements) > 0){
foreach($this->elements as $element => $eParts){
$xml .= "<$schemaPrefix:element name=\"$element\" type=\"".$eParts['type']."\"/>";
}
}
// attributes
if(isset($this->attributes) && count($this->attributes) > 0){
foreach($this->attributes as $attr => $aParts){
$xml .= "<$schemaPrefix:attribute name=\"$attr\" type=\"".$aParts['type']."\"/>";
}
}
// finish 'er up
$xml = "<$schemaPrefix:schema xmlns=\"$this->XMLSchemaVersion\" targetNamespace=\"$this->schemaTargetNamespace\">".$xml."</$schemaPrefix:schema>";
return $xml;
}

/**
* expands a qualified name
*
* @param string $string qname
* @return string expanded qname
* @access private
*/
function expandQname($qname){
// get element prefix
if(strpos($qname,':') && !ereg('^http://',$qname)){
// get unqualified name
$name = substr(strstr($qname,':'),1);
// get ns prefix
$prefix = substr($qname,0,strpos($qname,':'));
if(isset($this->namespaces[$prefix])){
return $this->namespaces[$prefix].':'.$name;
} else {
return $qname;
}
} else {
return $qname;
}
}

/**
* adds debug data to the clas level debug string
*
* @param string $string debug data
* @access private
*/
function xdebug($string){
$this->debug(' xmlschema: '.$string);
}

/**
* get the PHP type of a user defined type in the schema
* PHP type is kind of a misnomer since it actually returns 'struct' for assoc. arrays
* returns false if no type exists, or not w/ the given namespace
* else returns a string that is either a native php type, or 'struct'
*
* @param string $type, name of defined type
* @param string $ns, namespace of type
* @return mixed
* @access public
*/
function getPHPType($type,$ns){
global $typemap;
if(isset($typemap[$ns][$type])){
//print "found type '$type' and ns $ns in typemap<br>";
return $typemap[$ns][$type];
} elseif(isset($this->complexTypes[$type])){
//print "getting type '$type' and ns $ns from complexTypes array<br>";
return $this->complexTypes[$type]['phpType'];
}
return false;
}

/**
* returns the local part of a prefixed string
* returns the original string, if not prefixed
*
* @param string
* @return string
* @access public
*/
function getLocalPart($str){
if($sstr = strrchr($str,':')){
// get unqualified name
return substr( $sstr, 1 );
} else {
return $str;
}
}

/**
* returns the prefix part of a prefixed string
* returns false, if not prefixed
*
* @param string
* @return mixed
* @access public
*/
function getPrefix($str){
if($pos = strrpos($str,':')){
// get prefix
return substr($str,0,$pos);
}
return false;
}

/**
* pass it a prefix, it returns a namespace
* returns false if no namespace registered with the given prefix
*
* @param string
* @return mixed
* @access public
*/
function getNamespaceFromPrefix($prefix){
if(isset($this->namespaces[$prefix])){
return $this->namespaces[$prefix];
}
//$this->setError("No namespace registered for prefix '$prefix'");
return false;
}

/**
* returns the prefix for a given namespace (or prefix)
* or false if no prefixes registered for the given namespace
*
* @param string
* @return mixed
* @access public
*/
function getPrefixFromNamespace($ns){
foreach($this->namespaces as $p => $n){
if($ns == $n || $ns == $p){
$this->usedNamespaces[$p] = $n;
return $p;
}
}
return false;
}

/**
* returns an array of information about a given type
* returns false if no type exists by the given name
*
* typeDef = array(
* 'elements' => array(), // refs to elements array
* 'restrictionBase' => '',
* 'phpType' => '',
* 'order' => '(sequence|all)',
* 'attrs' => array() // refs to attributes array
* )
*
* @param string
* @return mixed
* @access public
*/
function getTypeDef($type){
if(isset($this->complexTypes[$type])){
return $this->complexTypes[$type];
} elseif(isset($this->elements[$type])){
return $this->elements[$type];
} elseif(isset($this->attributes[$type])){
return $this->attributes[$type];
}
return false;
}

/**
* returns a sample serialization of a given type, or false if no type by the given name
*
* @param string $type, name of type
* @return mixed
* @access public
*/
function serializeTypeDef($type){
//print "in sTD() for type $type<br>";
if($typeDef = $this->getTypeDef($type)){
$str .= '<'.$type;
if(is_array($typeDef['attrs'])){
foreach($attrs as $attName => $data){
$str .= " $attName=\"{type = ".$data['type']."}\"";
}
}
$str .= " xmlns=\"".$this->schema['targetNamespace']."\"";
if(count($typeDef['elements']) > 0){
$str .= ">";
foreach($typeDef['elements'] as $element => $eData){
$str .= $this->serializeTypeDef($element);
}
$str .= "</$type>";
} elseif($typeDef['typeClass'] == 'element') {
$str .= "></$type>";
} else {
$str .= "/>";
}
return $str;
}
return false;
}

/**
* returns HTML form elements that allow a user
* to enter values for creating an instance of the given type.
*
* @param string $name, name for type instance
* @param string $type, name of type
* @return string
* @access public
*/
function typeToForm($name,$type){
// get typedef
if($typeDef = $this->getTypeDef($type)){
// if struct
if($typeDef['phpType'] == 'struct'){
$buffer .= '<table>';
foreach($typeDef['elements'] as $child => $childDef){
$buffer .= "
<tr><td align='right'>$childDef[name] (type: ".$this->getLocalPart($childDef['type'])."):</td>
<td><input type='text' name='parameters[".$name."][$childDef[name]]'></td></tr>";
}
$buffer .= '</table>';
// if array
} elseif($typeDef['phpType'] == 'array'){
$buffer .= '<table>';
for($i=0;$i < 3; $i++){
$buffer .= "
<tr><td align='right'>array item (type: $typeDef[arrayType]):</td>
<td><input type='text' name='parameters[".$name."][]'></td></tr>";
}
$buffer .= '</table>';
// if scalar
} else {
$buffer .= "<input type='text' name='parameters[$name]'>";
}
} else {
$buffer .= "<input type='text' name='parameters[$name]'>";
}
return $buffer;
}

/**
* adds an XML Schema complex type to the WSDL types
*
* example: array
*
* addType(
* 'ArrayOfstring',
* 'complexType',
* 'array',
* '',
* 'SOAP-ENC:Array',
* array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'string[]'),
* 'xsd:string'
* );
*
* example: PHP associative array ( SOAP Struct )
*
* addType(
* 'SOAPStruct',
* 'complexType',
* 'struct',
* 'all',
* array('myVar'=> array('name'=>'myVar','type'=>'string')
* );
*
* @param name
* @param typeClass (complexType|simpleType|attribute)
* @param phpType: currently supported are array and struct (php assoc array)
* @param compositor (all|sequence|choice)
* @param restrictionBase namespace:name (http://schemas.xmlsoap.org/soap/encoding/:Array)
* @param elements = array ( name = array(name=>'',type=>'') )
* @param attrs = array(
* array(
* 'ref' => "http://schemas.xmlsoap.org/soap/encoding/:arrayType",
* "http://schemas.xmlsoap.org/wsdl/:arrayType" => "string[]"
* )
* )
* @param arrayType: namespace:name (http://www.w3.org/2001/XMLSchema:string)
*
*/
function addComplexType($name,$typeClass='complexType',$phpType='array',$compositor='',$restrictionBase='',$elements=array(),$attrs=array(),$arrayType=''){
$this->complexTypes[$name] = array(
'name' => $name,
'typeClass' => $typeClass,
'phpType' => $phpType,
'compositor'=> $compositor,
'restrictionBase' => $restrictionBase,
'elements' => $elements,
'attrs' => $attrs,
'arrayType' => $arrayType
);
}
}



?><?php



/**
* for creating serializable abstractions of native PHP types
* NOTE: this is only really used when WSDL is not available.
*
* @author Dietrich Ayala <dietrich@ganx4.com>
* @version v 0.6.3
* @access public
*/
class soapval extends nusoap_base {
/**
* constructor
*
* @param string $name optional name
* @param string $type optional type name
* @param mixed $value optional value
* @param string $namespace optional namespace of value
* @param string $type_namespace optional namespace of type
* @param array $attributes associative array of attributes to add to element serialization
* @access public
*/
function soapval($name='soapval',$type=false,$value=-1,$element_ns=false,$type_ns=false,$attributes=false) {
$this->name = $name;
$this->value = $value;
$this->type = $type;
$this->element_ns = $element_ns;
$this->type_ns = $type_ns;
$this->attributes = $attributes;
}

/**
* return serialized value
*
* @return string XML data
* @access private
*/
function serialize($use='encoded') {
return $this->serialize_val($this->value,$this->name,$this->type,$this->element_ns,$this->type_ns,$this->attributes,$use);
}

/**
* decodes a soapval object into a PHP native type
*
* @param object $soapval optional SOAPx4 soapval object, else uses self
* @return mixed
* @access public
*/
function decode(){
return $this->value;
}
}



?><?php



/**
* transport class for sending/receiving data via HTTP and HTTPS
* NOTE: PHP must be compiled with the CURL extension for HTTPS support
*
* @author Dietrich Ayala <dietrich@ganx4.com>
* @version v 0.6.3
* @access public
*/
class soap_transport_http extends nusoap_base {

var $username = '';
var $password = '';
var $url = '';
var $proxyhost = '';
var $proxyport = '';
var $scheme = '';
var $request_method = 'POST';
var $protocol_version = '1.0';
var $encoding = '';
var $outgoing_headers = array();
var $incoming_headers = array();
var $outgoing_payload = '';
var $incoming_payload = '';
var $useSOAPAction = true;

/**
* constructor
*/
function soap_transport_http($url){
$this->url = $url;
$u = parse_url($url);
foreach($u as $k => $v){
$this->debug("$k = $v");
$this->$k = $v;
}
if(isset($u['query']) && $u['query'] != ''){
$this->path .= '?' . $u['query'];
}
if(!isset($u['port']) && $u['scheme'] == 'http'){
$this->port = 80;
}
}

function connect($timeout){

// proxy
if($this->proxyhost != '' && $this->proxyport != ''){
$host = $this->proxyhost;
$port = $this->proxyport;
$this->debug("using http proxy: $host, $port");
} else {
$host = $this->host;
$port = $this->port;
}
// ssl
if($this->scheme == 'https'){
$host = 'ssl://'.$host;
$port = 443;
}

$this->debug("connection params: $host, $port");
// timeout
if($timeout > 0){
$fp = fsockopen($host, $port, $this->errno, $this->error_str, $timeout);
} else {
$fp = fsockopen($host, $port, $this->errno, $this->error_str);
}

// test pointer
if(!$fp) {
$this->debug('Couldn\'t open socket connection to server '.$this->url.', Error: '.$this->error_str);
$this->setError('Couldn\'t open socket connection to server: '.$this->url.', Error: '.$this->error_str);
return false;
}
return $fp;
}

/**
* send the SOAP message via HTTP
*
* @param string $data message data
* @param integer $timeout set timeout in seconds
* @return string data
* @access public
*/
function send($data, $timeout=0) {
$this->debug('entered send() with data of length: '.strlen($data));
// get connnection
if(!$fp = $this->connect($timeout)){
return false;
}
$this->debug('socket connected');

// start building outgoing payload:
// swap url for path if going through a proxy
if($this->proxyhost != '' && $this->proxyport != ''){
$this->outgoing_payload = "$this->request_method $this->url ".strtoupper($this->scheme)."/$this->protocol_version\r\n";
} else {
$this->outgoing_payload = "$this->request_method $this->path ".strtoupper($this->scheme)."/$this->protocol_version\r\n";
}
// make payload
$this->outgoing_payload .=
"User-Agent: $this->title/$this->version\r\n".
"Host: ".$this->host."\r\n";
// http auth
$credentials = '';
if($this->username != '') {
$this->debug('setting http auth credentials');
$this->outgoing_payload .= 'Authorization: Basic '.base64_encode("$this->username:$this->password")."\r\n";
}
// set content type
$this->outgoing_payload .= 'Content-Type: text/xml; charset='.$this->soap_defencoding."\r\nContent-Length: ".strlen($data)."\r\n";
// http encoding
if($this->encoding != '' && function_exists('gzdeflate')){
$this->outgoing_payload .= "Accept-Encoding: $this->encoding\r\n".
"Connection: close\r\n";
set_magic_quotes_runtime(0);
}
// set soapaction
if($this->useSOAPAction){
$this->outgoing_payload .= "SOAPAction: \"$this->soapaction\""."\r\n";
}
$this->outgoing_payload .= "\r\n";
// add data
$this->outgoing_payload .= $data;

// send payload
if(!fputs($fp, $this->outgoing_payload, strlen($this->outgoing_payload))) {
$this->setError('couldn\'t write message data to socket');
$this->debug('Write error');
}
$this->debug('wrote data to socket');

// get response
$this->incoming_payload = '';
//$strlen = 0;
while( $data = fread($fp, 32768) ){
$this->incoming_payload .= $data;
//$strlen += strlen($data);
}
$this->debug('received '.strlen($this->incoming_payload).' bytes of data from server');

// close filepointer
fclose($fp);
$this->debug('closed socket');

// connection was closed unexpectedly
if($this->incoming_payload == ''){
$this->setError('no response from server');
return false;
}

$this->debug('received incoming payload: '.strlen($this->incoming_payload));
$data = $this->incoming_payload."\r\n\r\n\r\n\r\n";

// remove 100 header
if(ereg('^HTTP/1.1 100',$data)){
if($pos = strpos($data,"\r\n\r\n") ){
$data = ltrim(substr($data,$pos));
} elseif($pos = strpos($data,"\n\n") ){
$data = ltrim(substr($data,$pos));
}
}//

// separate content from HTTP headers
if( $pos = strpos($data,"\r\n\r\n") ){
$lb = "\r\n";
} elseif( $pos = strpos($data,"\n\n") ){
$lb = "\n";
} else {
$this->setError('no proper separation of headers and document');
return false;
}
$header_data = trim(substr($data,0,$pos));
$header_array = explode($lb,$header_data);
$data = ltrim(substr($data,$pos));
$this->debug('found proper separation of headers and document');
$this->debug('cleaned data, stringlen: '.strlen($data));
// clean headers
foreach($header_array as $header_line){
$arr = explode(':',$header_line);
if(count($arr) >= 2){
$headers[trim($arr[0])] = trim($arr[1]);
}
}
//print "headers: <pre>$header_data</pre><br>";
//print "data: <pre>$data</pre><br>";

// decode transfer-encoding
if(isset($headers['Transfer-Encoding']) && $headers['Transfer-Encoding'] == 'chunked'){
//$timer->setMarker('starting to decode chunked content');
if(!$data = $this->decodeChunked($data)){
$this->setError('Decoding of chunked data failed');
return false;
}
//$timer->setMarker('finished decoding of chunked content');
//print "<pre>\nde-chunked:\n---------------\n$data\n\n---------------\n</pre>";
}

// decode content-encoding
if(isset($headers['Content-Encoding']) && $headers['Content-Encoding'] != ''){
if($headers['Content-Encoding'] == 'deflate' || $headers['Content-Encoding'] == 'gzip'){
// if decoding works, use it. else assume data wasn't gzencoded
if(function_exists('gzinflate')){
//$timer->setMarker('starting decoding of gzip/deflated content');
if($headers['Content-Encoding'] == 'deflate' && $degzdata = @gzinflate($data)){
$data = $degzdata;
} elseif($headers['Content-Encoding'] == 'gzip' && $degzdata = gzinflate(substr($data, 10))){
$data = $degzdata;
} else {
$this->setError('Errors occurred when trying to decode the data');
}
//$timer->setMarker('finished decoding of gzip/deflated content');
//print "<xmp>\nde-inflated:\n---------------\n$data\n-------------\n</xmp>";
} else {
$this->setError('The server sent deflated data. Your php install must have the Zlib extension compiled in to support this.');
}
}
}

if(strlen($data) == 0){
$this->debug('no data after headers!');
$this->setError('no data present after HTTP headers');
return false;
}
$this->debug('end of send()');
return $data;
}


/**
* send the SOAP message via HTTPS 1.0 using CURL
*
* @param string $msg message data
* @param integer $timeout set timeout in seconds
* @return string data
* @access public
*/
function sendHTTPS($data, $timeout=0) {
//global $t;
//$t->setMarker('inside sendHTTPS()');
$this->debug('entered sendHTTPS() with data of length: '.strlen($data));
// init CURL
$ch = curl_init();
//$t->setMarker('got curl handle');
// set proxy
if($this->proxyhost && $this->proxyport){
$host = $this->proxyhost;
$port = $this->proxyport;
} else {
$host = $this->host;
$port = $this->port;
}
// set url
$hostURL = ($port != '') ? "https://$host:$port" : "https://$host";
// add path
$hostURL .= $this->path;
curl_setopt($ch, CURLOPT_URL, $hostURL);
// set other options
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// encode
if(function_exists('gzinflate')){
curl_setopt($ch, CURLOPT_ENCODING, 'deflate');
}
// persistent connection
//curl_setopt($ch, CURL_HTTP_VERSION_1_1, true);

// set timeout
if($timeout != 0){
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
}

$credentials = '';
if($this->username != '') {
$credentials = 'Authorization: Basic '.base64_encode("$this->username:$this->password").'\r\n';
}

if($this->encoding != ''){
if(function_exists('gzdeflate')){
$encoding_headers = "Accept-Encoding: $this->encoding\r\n".
"Connection: close\r\n";
set_magic_quotes_runtime(0);
}
}

if($this->proxyhost && $this->proxyport){
$this->outgoing_payload = "POST $this->url HTTP/$this->protocol_version\r\n";
} else {
$this->outgoing_payload = "POST $this->path HTTP/$this->protocol_version\r\n";
}

$this->outgoing_payload .=
"User-Agent: $this->title v$this->version\r\n".
"Host: ".$this->host."\r\n".
$encoding_headers.
$credentials.
"Content-Type: text/xml; charset=\"$this->soap_defencoding\"\r\n".
"Content-Length: ".strlen($data)."\r\n".
"SOAPAction: \"$this->soapaction\""."\r\n\r\n".
$data;

// set payload
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $this->outgoing_payload);
//$t->setMarker('set curl options, executing...');
// send and receive
$this->incoming_payload = curl_exec($ch);
//$t->setMarker('executed transfer');
$data = $this->incoming_payload;

$cErr = curl_error($ch);

if($cErr != ''){
$err = 'cURL ERROR: '.curl_errno($ch).': '.$cErr.'<br>';
foreach(curl_getinfo($ch) as $k => $v){
$err .= "$k: $v<br>";
}
$this->setError($err);
curl_close($ch);
return false;
} else {
//echo '<pre>';
//var_dump(curl_getinfo($ch));
//echo '</pre>';
}
// close curl
curl_close($ch);
//$t->setMarker('closed curl');

// remove 100 header
if(ereg('^HTTP/1.1 100',$data)){
if($pos = strpos($data,"\r\n\r\n") ){
$data = ltrim(substr($data,$pos));
} elseif($pos = strpos($data,"\n\n") ){
$data = ltrim(substr($data,$pos));
}
}//

// separate content from HTTP headers
if( $pos = strpos($data,"\r\n\r\n") ){
$lb = "\r\n";
} elseif( $pos = strpos($data,"\n\n") ){
$lb = "\n";
} else {
$this->setError('no proper separation of headers and document');
return false;
}
$header_data = trim(substr($data,0,$pos));
$header_array = explode($lb,$header_data);
$data = ltrim(substr($data,$pos));
$this->debug('found proper separation of headers and document');
$this->debug('cleaned data, stringlen: '.strlen($data));
// clean headers
foreach($header_array as $header_line){
$arr = explode(':',$header_line);
$headers[trim($arr[0])] = trim($arr[1]);
}
if(strlen($data) == 0){
$this->debug('no data after headers!');
$this->setError('no data present after HTTP headers.');
return false;
}

// decode transfer-encoding
if($headers['Transfer-Encoding'] == 'chunked'){
if(!$data = $this->decodeChunked($data)){
$this->setError('Decoding of chunked data failed');
return false;
}
}
// decode content-encoding
if($headers['Content-Encoding'] != ''){
if($headers['Content-Encoding'] == 'deflate' || $headers['Content-Encoding'] == 'gzip'){
// if decoding works,
Başa dön
Kullanıcının profilini görüntüle Özel mesaj gönder E-posta gönder Yazarın web sitesini ziyaret et
Aliosman
Teknik Yönetici
Teknik Yönetici





Kayıt: Jul 20, 2002
Mesajlar: 3836
Konum: Balıkesir

MesajTarih: 2006-09-07, 00:48:22    Mesaj konusu: Alıntıyla Cevap Gönder

Bu script SOAP kodları içeriyor. Bu konuda yeterli değilim.
Başa dön
Kullanıcının profilini görüntüle Özel mesaj gönder Yazarın web sitesini ziyaret et
Bankocu
Editör
Editör





Kayıt: Jun 02, 2003
Mesajlar: 1842
Konum: Istanbul

MesajTarih: 2006-09-07, 10:05:14    Mesaj konusu: Re: nusoap.php Alıntıyla Cevap Gönder

Eğer sorun sadece karakter seti sorunu ise:
Alıntı:
var $soap_defencoding = 'UTF-8';
// var $soap_defencoding = 'ISO-8859-1';

yazan yer çıkış noktanız olabilir.
verdiğiniz kod UTF-8 e göre ayarlanmış. Sizin sistem ISO-8859-9 a göre çalışıyorsa:
Bu bölümü aşağıdaki gibi;
Alıntı:

// var $soap_defencoding = 'UTF-8';
var $soap_defencoding = 'ISO-8859-9';


yaparak deneme yapabilirsiniz.

Kodun tamamını incelemedim. Başka yerlerde de UTF-8 geçiyorsa onları da düzeltin.

Kolay Gelsin.
Başa dön
Kullanıcının profilini görüntüle Özel mesaj gönder Yazarın web sitesini ziyaret et
HunTürk
Mesaj: 1000+
Mesaj: 1000+





Kayıt: Apr 17, 2005
Mesajlar: 1279
Konum: ANKARA

MesajTarih: 2006-09-07, 10:24:04    Mesaj konusu: Alıntıyla Cevap Gönder

Php'nin Soap fonkisyonu her sunucuda olmaz. Sonradan eklenen bir fonksiyondur. Sunucuda ki php'nin soapı desteklediğine emin olun..
Başa dön
Kullanıcının profilini görüntüle Özel mesaj gönder Yazarın web sitesini ziyaret et
Rapturkiyecom
Mesaj: 100+
Mesaj: 100+





Kayıt: Nov 29, 2002
Mesajlar: 153
Konum: Konya / Merkez

MesajTarih: 2006-09-07, 10:24:20    Mesaj konusu: Alıntıyla Cevap Gönder

arkadasım su yazdıgın baslıgı Kod ıcıne alsan bu kadar yer kaplamaz.. lütfen..
Başa dön
Kullanıcının profilini görüntüle Özel mesaj gönder E-posta gönder Yazarın web sitesini ziyaret et AIM Adresi MSN Messenger
Önceki mesajları göster:   
Bu forum kilitlendi: mesaj gönderemez, cevap yazamaz ya da başlıkları değiştiremezsiniz   Bu başlık kilitlendi: mesajları değiştiremez ya da cevap yazamazsınız    Netopsiyon Online Forum Ana Sayfa -> Eski Başlıklar Tüm zamanlar GMT + 3 Saat
1. sayfa (Toplam 1 sayfa)

 
Geçiş Yap:  
Bu forumda yeni başlıklar açamazsınız
Bu forumdaki başlıklara cevap veremezsiniz
Bu forumdaki mesajlarınızı değiştiremezsiniz
Bu forumdaki mesajlarınızı silemezsiniz
Bu forumdaki anketlerde oy kullanamazsınız


Copyright © 2002-2024 Netopsiyon Bilişim Teknolojileri San. Tic. Ltd.Şti. - Bütün hakları saklıdır!
Bu site Netopsiyon.com.tr Sunucularında Barındırılmaktadır.
Netopsiyon Bilişim Teknolojileri San. Tic. Ltd.Şti. Netopsiyon Copyright