Noob bir soru.
Ben durumlu bir Web hizmeti tüketen bir PHP Web sitesi geliştiriyorum. Temelde, Benim Web sitesinin "kontrol akışı" aşağıdakilerden biridir:
- Kullanıcı bir sayfa gösterilir.
- Kullanıcının bir eylem gerçekleştirir.
- Web sitenin sunucu kullanıcı girişi parametre olarak kullanarak, Web hizmeti için bir istek yok.
- Web Servis sunucusu isteği yürütür ve süreç içinde durumundan B durumuna A gider.
- Web sitenin sunucu başka bir sayfaya kullanıcıyı yönlendirir ve biz 1 adım geri gidin.
Benim sorunum Web sitesi istekleri arasında Web Servisi'nin devletin izini kaybeder olmasıdır. Nasıl Web Sitesi Web Servisi'nin devletin takip yapabilirim? PHP'nin standart SoapClient
sınıfını kullanıyorum.
Ben bir oturum değişkeni içine SoapClient
nesne seri denedim:
# ws_client.php
<?php
function get_client()
{
if (!isset($_SESSION['client']))
$_SESSION['client'] = new SoapClient('http://mydomain/MyWS/MyWS.asmx?WSDL', 'r');
return $_SESSION['client'];
}
function some_request($input1, $input2)
{
$client = get_client();
$params = new stdClass();
$params['input1'] = $input1;
$params['input2'] = $input2;
return $client->SomeRequest($params)->SomeRequestResult;
}
function stateful_request($input)
{
$client = get_client();
$params = new stdClass();
$params['input'] = $input;
return $client->StatefulRequest($params)->StatefulRequestResult;
}
?>
# page1.php
<?php
session_start();
$_SESSION['A'] = some_request($_POST['input1'], $_POST['input2']);
session_write_close();
header('Location: page2.php');
?>
# page2.php
<?php
session_start();
echo $_SESSION['A']; // works correctly
echo stateful_request($_SESSION['A']); // fails
session_write_close();
?>
Ama çalışmıyor. Ne benim koduyla yanlış?