» »

php login s pomočjo soap-a

php login s pomočjo soap-a

xsenon ::

Pozdravljeni,

imam težavo z izdelavo login s pomočjo soapa v php-ju. Glede soapa sem še bolj začetnik. Sama ideja soapa mi je znana. Se pravi kaj je moj namen. Moj namen je narediti stran z dvema fildoma, kamor vpišeš uporabniško ime in geslo. Ti podatki bi se nato po soap-u poslali serverju, ki bi moj wsdl fajl prebral, na podlagi podatkov v wsdl-ju bi program preveril podatke v bazi in mi zopet po soapu vrnil 1(potrditev ok), če sta uporabniško ime in geslo pravilna ali 0 (geslo ni pravilno). Delo za bazmi in ostale stvari so mi popolnoma jasne, se pravi zanima me zgolj web service (soap, wsdl).

Zanima me kaj mi prporočate za izdelavo wsdl fajlov, prosil bi za kakšen simple tutorial client/server tako da dobim občutek kako zadeva resnično deluje.

LP
etpot - Exploit The Power Of Technology

krho ::

Sedajle te bom najprej vprašal, če mora biti nujno SOAP. Zadeva naj bi bila standard, pa je daleč od tega. Sam imam z njim cel kup sitnosti.
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net

xsenon ::

ja nujno mora biti soap na žalost... Sem tudi jaz bral da je vse standard samo se mi ne zdi ravno tako simpl... Težava je že v tem da sem pregledal google in nikjer našen nekega simple primera kjer bi bilo lepo razloženo kako sprogramirati server stran nato client stran s čim generirat wsdl file...
etpot - Exploit The Power Of Technology

AndrejS ::

Visual studio ma to lepo rešeno ... vse sam zgenerira, ampak ti žal hočeš to s php :(

xsenon ::

ja sej ravno to je point,ker imam v prihodnosti en večji projekt, pri katerem bom potreboval ravno to, zato bi se rad prej malo pripravil, da ne bo potem vse preveč novo.
etpot - Exploit The Power Of Technology

talmai ::

SOAP v PHPju je PITA. Maš default soap extension, NuSOAP library, WSO Web Services Framework... In pri vsakem od teh nekaj ne dela kot bi blo treba. Če nič drugega, se zatakne pri attachmentih.
Sam nikoli nisem pisal wsdljev, ampak sem samo delal cliente in serverje za že narejene. Ko imaš enkrat wsdl, je zadeva v teoriji precej enostavna. Tudi v javi maš (mislim, da vključen v JDK) wsimport, ki ti lepo iz wsdl-ja zgenerira razrede in na njih metode, ki delajo SOAP requeste. Sem imel v Javi precej manj problemov kot v PHP.

Torej, ko že maš wsdl je client (z default php soap ext.) easy. Instanciraš ga z lokacijo wsdl fajla in potem na njem kličeš v tem fajlu definirane akcije (npr. sendSms):
$client = new SoapClient("http://127.0.0.1:8080/SendSmsService?wsdl");
$result = $client->sendSms(array('address' =>'tel:555555', 'message' => 'ohai!'));

Server pa nekako takole:
function notifySmsReception($obj){
    ...
    return '';
}
$server = new SoapServer('sms_notification_service.wsdl');
$server->addFunction('notifySmsReception');
$server->handle();

Kako bi zgeneriral wsdl, mi pa ni jasno. Jaz bi ga šel sam prepisat iz kakšnega enostavnega primera, glede na to, da je tudi tvoj primer dokaj enostaven. Sicer pa se mi zdi, da ma NetBeans nek plugin za wsdlje generirat, nisem čist prepirčan... Fino pa, če prej probaš z nekim obstoječim soap servicom, da vidiš, če sploh prav delaš, šele potem pa pojdi sam pisat wsdl. Tutorialov je pa n+1, vsaj za uporabo obstoječih wsdljev.

Drugač pa, SOAP je tako bloated da glava peče.
"Bit je kot določna popolnoma nedoločna." (M. Heidegger)

Zgodovina sprememb…

  • spremenil: Primoz ()

matmul ::

Kaj pa če je za SOAP povezavo potreben certifikat? Problem imam z SoapClient-om za UJP (za ponudnika elektronskih poti) in sicer v njihov portal https://betaeracuni.ujp.gov.si/ (testno okolje) se prijaviš s svojim osebnim certifikatom in tako oni dobijo javni del ključa in mi dajo kot uporabnika vsa potrebna dovoljenja. Nato bi se moral povezat na https://betaeracuni.ujp.gov.si/b2b/serv..., a mi ni jasno kako. S pomočjo "certmgr.msc > Personal > Certificates" sem exportal javni_jaz.cer datoteko. Kako sedaj pravilno poklicati WSDL? V stilu:
$soapClient = new \SoapClient($wsdlUrl, [... 'javni_jaz.cer',...]

matmul ::

Če še pride komu prav...

Certifikat pravilno pretvoriš z
$ openssl pkcs12 -in osebno_potrdilo.pfx -out javni_kljuc.pem -clcerts


In nato pokličeš WSDL na naslednji način
<?php

$serviceUri = "https://betaeracuni.ujp.gov.si/b2b/service.svc";
$singleWsdl = "{$serviceUri}?singlewsdl";

/* Certificate creation:
    openssl pkcs12 -in mmulej.pfx -out try1.pem -clcerts
        here you have to type your password once, and then the new password twice (set+confirm)
        make sure the new password is different than your password, since everybody with access to code will see it.
 */
$params = [
    'local_cert' => 'javni_kljuc.pem',
    'passphrase' => "new_password", // change accordingly
    'trace' => 1,
    'exceptions' => 0
];

$soapClient = new \SoapClient("https://betaeracuni.ujp.gov.si/b2b/service.svc?singlewsdl", $params);

var_dump($soapClient->__getFunctions());


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

UJP Eracuni - B2B

Oddelek: Programiranje
143048 (1372) matmul
»

[Java]kompailiranje iz cmd

Oddelek: Programiranje
91314 (1038) ragezor
»

SMS iz linuxa

Oddelek: Pomoč in nasveti
444743 (2299) Apple
»

Java namizna aplikacija ter web service

Oddelek: Programiranje
91568 (1201) nuclear
»

[php] soap - web service

Oddelek: Programiranje
71683 (1592) jure1825

Več podobnih tem