Done!! Not sure why but after changing the value from header key from array to string on the stream context creation, it worked perfectly! Thanks Aziz =) 2014-05-02 17:11 GMT-03:00 Ricardo R Bonfim <ricobonfim@xxxxxxxxx>: > Well.. after searching for a while I found the same workaround... > > but no success on changing the HTTP_X_FORWARDED_FOR header value until now... > > Here's how my soapclient class is working to solve the problem.. > > class MySoapClient extends SoapClient { > > public function __construct( $wsdl ) { > $options = array( > 'trace' => 1, > 'exceptions' => 1, > 'stream_context' => stream_context_create( array( > 'http' => array( > 'header' => array( > 'X-FORWARDED-FOR: ' . $_SESSION['ip'], > ), > ) > ), > ); > > parent::__construct( $wsdl, $options ); > } > > } > > No error, but no HTTP_X_FORWARDED_FOR on the SoapServer too =( > > I found this bug report ( https://bugs.php.net/bug.php?id=49853 ) > which seems to explain why it's not working... > I was using PHP Version 5.2.17 when started the development, then I > changed to PHP Version 5.4.4-14, but no luck on this version too... > > Had anyone succeed in changing the http header before sending the soap request? > > 2014-05-02 16:05 GMT-03:00 Aziz Saleh <azizsaleh@xxxxxxxxx>: >> >> >> >> On Fri, May 2, 2014 at 10:45 AM, Ricardo R Bonfim <ricobonfim@xxxxxxxxx> >> wrote: >>> >>> Hello, >>> >>> I have a webservice which uses Soap to interact with clients, and I >>> want to log which is the IP I'm receiving requests from. >>> In a first moment, the requests will be sent directly from client >>> machine, by their own implementation of soap client, and I can get >>> their IPs looking on $_SERVER['REMOTE_ADDR'] variable, which's fitting >>> perfectly at the moment. >>> However, I've create a client page, which implements the soap client, >>> for users who don't want to implement could use. >>> The problem is: >>> >>> My page is callling the webservice by ajax, which is getting me some >>> trouble to find the client IP who is using the system. >>> >>> The use case would look like: >>> >>> 1- The Client log into the system. >>> 2- The Client access the "client page". >>> 3- The Client click on "Begin Transaction". >>> 4- System sends an ajax request to the server to begin the transaction. >>> 5- System receive the ajax request, and call the soap function >>> (SoapClient) to begin the transaction. >>> 6- System (SoapServer) receive the request,save the Client IP and >>> returns 1 for sucess. >>> >>> I have the right Client IP until setp #5 using the IP stored on >>> $_SESSION on step #1. >>> >>> I thought that I could change the IP from REMOTE_ADDR when sending the >>> request on step #5, but I haven't found a way to do that.. >>> >>> Anyone has an idea on how to solve this problem? >>> >>> -- >>> Att, >>> ____________________________________________________ >>> Ricardo R Bonfim >>> >>> -- >>> PHP General Mailing List (http://www.php.net/) >>> To unsubscribe, visit: http://www.php.net/unsub.php >>> >> >> Your system is acting as a proxy to the user. You will need to add (or >> modify) the HTTP_X_FORWARDED_FOR header to the user IP. Since Javascript >> can't detect user IP, you can do the following: >> >> ... >> 3 - Store the user IP in a session. The client click on "Being Transaction" >> ... >> 5 - Make the Soap call sending the new header with the IP in session. >> >> If you are the owner of the Soap Server, then you check for that IP, >> otherwise you might want to contact the owner to make it so that it is >> checked first. >> >> Aziz > > > > -- > Att, > ____________________________________________________ > Ricardo R Bonfim -- Att, ____________________________________________________ Ricardo R Bonfim -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php