Re: Changing IP sent on header
| From: | Ricardo R Bonfim | Date: | Fri, 02 May 2014 20:11:33 +0000 |
| Subject: | Re: Changing IP sent on header | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-323236@lists.php.net to get a copy of this message | ||
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