Re: Changing IP sent on header
| From: | Ricardo R Bonfim | Date: | Fri, 02 May 2014 20:41:43 +0000 |
| Subject: | Re: Changing IP sent on header | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-323237@lists.php.net to get a copy of this message | ||
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@gmail.com>:
> 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@gmail.com>:
>>
>>
>>
>> On Fri, May 2, 2014 at 10:45 AM, Ricardo R Bonfim <ricobonfim@gmail.com>
>> 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