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 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php