login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Externe website gebruik laten maken van db

Offline roy - 08/01/2010 00:25
Avatar van royPHP gevorderde Hoi.

Ik wil een service bieden aan externe websites. Zij kunnen bepaalde gegevens uit mijn database ophalen (als zij hier rechten voor hebben).

Is het mogelijk om een webservice te maken? Of moet ik dit anders aanpakken?

Graag meer informatie en/of voorbeelden.


Groeten,
Roy

45 antwoorden

Gesponsorde links
Offline Ultimatum - 08/01/2010 06:22
Avatar van Ultimatum PHP expert Je kan hier met een api werken. Zij vragen een url op en geven d.m.v. $_GET parameters op en dan kan je bijvoorbeeld een xml file terug geven met de juiste informatie.
Offline lemoinet - 08/01/2010 08:07
Avatar van lemoinet PHP gevorderde kijk eens of REST geen oplossing kan bieden
Offline roy - 08/01/2010 10:36
Avatar van roy PHP gevorderde @Ultimatum: dat klinkt precies als hetgeen dat ik wil. Kan je misschien een klein voorbeeldje geven over hoe die API eruit kan zien.

Is er misschien ergens anders meer informatie beschikbaar hierover?


Grt,
Roy
Offline Ontani - 08/01/2010 15:04
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
API is gewoon een naam voor een script dat op basis van parameters de juiste informatie terug geeft.

Maak gewoon een PHP script dat op basis van de parameters in de URL de juiste informatie uit de database haalt en dit als een xml bestand terug stuurd.
Offline roy - 08/01/2010 16:12
Avatar van roy PHP gevorderde en dat kan je dus vanaf een externe server verkrijgen?
Offline Ontani - 08/01/2010 16:27
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
als je gewoon http://api.jewebsite.ext/Users/All/

doet en je steekt daar een script dat een xml terug geeft met alle gegevens van alle gebruikers dan heb je toch je "API"
Offline roy - 08/01/2010 20:23
Avatar van roy PHP gevorderde Ok duidelijk,

Ik wil op basis van een aantal parameters de XML genereren en teruggeven. (Bijvoorbeeld: username, password, versie, soortmethode, variabele1, variabele2)

Hoe kan ik dat het veiligst doen? (het aanroepen van de API met deze gegevens?)

Grt,
Roy
Offline XenoX - 08/01/2010 20:34
Avatar van XenoX Gouden medailleGouden medaille

PHP expert
http://oauth.net/
Offline roy - 08/01/2010 20:39
Avatar van roy PHP gevorderde misschien nog alternatieven?
Offline nemesiskoen - 09/01/2010 16:47
Avatar van nemesiskoen Gouden medaille

PHP expert
Citaat:
Is het mogelijk om een webservice te maken


Ja inderdaad, hier moet je een webservice voor gebruiken. Er zijn verschillende mogelijkheden van protocols maar uiteindelijk blijft het principe toch hetzelfde. Dus zoek eens op SOAP of REST en dan vind je genoeg voorbeelden. Probeer zelf wat uit, en als je er niet uitkomt kan je hier wat code posten en vragen wat er mis is. Het is niet de bedoeling dat de mensen van dit forum al je code schrijven.
Offline roy - 13/01/2010 00:45
Avatar van roy PHP gevorderde REST en OAUTH zijn geen standaarden. Ik wil graag een standaard bieden aan mijn third partys... Kan iemand een andere suggestie doen?
Offline nemesiskoen - 13/01/2010 00:53
Avatar van nemesiskoen Gouden medaille

PHP expert
Wat bedoel je met "een standaard bieden aan third partys". Wat je ook kan doen is users aanmaken voor je databank en deze dan rechten toekennen, dan kunnen ze rechtstreeks select queries op je databank uitvoeren, maar ze kunnen geen gegevens CUD-opdracht doen.
Offline roy - 13/01/2010 01:01 (laatste wijziging 31/01/2010 12:52)
Avatar van roy PHP gevorderde Het mooiste zou zijn als ook websites gemaakt in een andere taal hier eenvoudig van gebruik kunnen maken.

Ik vraag me af of het volgende mogelijk is:
genereer stuk XML met parameters.

geef de XML mee aan een URL. Bijvoorbeeld:
jesite.nl/xmlparser.php?xml=jegegenereerdexml

Het resultaat van die aanroep is een XML bericht die vanuit iedere taal te lezen is.

Mijn vraag is: Hoe kan ik netjes/veilig die XML meegeven aan de URL?

Groeten,
Roy
Offline Martijn - 31/01/2010 13:08
Avatar van Martijn Crew PHP dat hoeft niet. Je kunt ook iets van een cURL functie maken (omdat file_get_contents() niet overal mag), die aanbieden, en dan is t gewoon een kwestie van die php pagina uitlezen die je xml heeft gemaakt
Offline roy - 31/01/2010 13:17 (laatste wijziging 18/02/2010 23:40)
Avatar van roy PHP gevorderde Het mooiste zou zijn een stukje XML sturen naar mijn XML parser en dan weer XML terug geven. Dit kan door JAVA/ASP/PHP/Javascript eenvoudig gebruikt/gelezen worden.

Mijn vraag is: Hoe kan ik netjes/veilig die XML meegeven aan de URL?

OF: kan dat alleen gedaan worden door losse variabelen mee te geven in te URL?


Bijvoorbeeld:
Website 1 (gemaakt in PHP)
Website 2 (gemaakt in .NET)
Website 3 (gemaakt in Java)
Website 4 (gemaakt in Ruby)
Willen gebruik maken van mijn webservice, die XML terug geeft.
Hoe kan ik dat het beste doen.
De bedoeling is dat de andere websites ook een aantal variabele meegeven. (authorizatie, methode, parameters)

met welke tech niet kan ik dat doen? Het is de bedoeling dat mijn website/webservice in PHP wordt gemaakt.
Offline henver - 19/02/2010 00:18
Avatar van henver HTML gevorderde Het is toch geen probleem als je een XML pagina terugstuurt? Ik denk dat elke taal wel ondersteuning biedt voor XML.
Offline Jelmerholland - 19/02/2010 08:22
Avatar van Jelmerholland PHP beginner D'r is toch ook zoiets als een .gz file?
Kweet niet hoe dit werkt, maar ik weet wel dat het werkt en dat het handig zijn voor apps bij een spelletje 
Offline roy - 19/02/2010 08:27
Avatar van roy PHP gevorderde @Henver: XML terugsturen is geen probleem. Maar hoe kunnen die externe websites XML naar mijn website/webservice sturen?

Offline TotempaaltJ - 19/02/2010 12:48
Avatar van TotempaaltJ PHP interesse Via POST of GET moet dat als het goed is gewoon te doen zijn (ik raad post aan). Maak een standaard, met daarin opties, authentication en de zoek/select query (of iets dergelijks). Zo moeilijk kan het niet zijn, je parst dat met een standaard XML Parser en voila!
Offline roy - 19/02/2010 14:02 (laatste wijziging 19/02/2010 17:18)
Avatar van roy PHP gevorderde Maar het is niet mogelijk dat die andere websites op 1 of andere manier XML naar mijn webservice/website sturen?

dus, het kan alleen met parameters in de URL??
Offline Jelmerholland - 19/02/2010 18:39
Avatar van Jelmerholland PHP beginner .gz file!
Offline TotempaaltJ - 19/02/2010 19:16
Avatar van TotempaaltJ PHP interesse
roy schreef:
Maar het is niet mogelijk dat die andere websites op 1 of andere manier XML naar mijn webservice/website sturen?

dus, het kan alleen met parameters in de URL??
Elke programmeertaal die jij hebt genoemd heeft een manier om externe bestanden aan te passen; cURL, file_get_contents, urllib etc. Deze kunnen dan ook POST en GET variabelen meesturen.
Als je echt wilt, kan je raar gaan doen en bijvoorbeeld met Google.be: Sockets gaan werken, maar dat raad ik af 
Offline roy - 20/02/2010 12:21
Avatar van roy PHP gevorderde Ik heb nergens genoemd dat ik externe bestanden wil bewerken.

Externe website -> stuurd XML (voor authenticatie en parameters -> mijn website -> geeft resultaat terug in XML

Die externe website kan ik verschillende talen geprogrammeerd zijn.

Vraag: Hoe stuur je XML van die externe website naar mijn website?

Offline TotempaaltJ - 20/02/2010 13:18 (laatste wijziging 20/02/2010 13:19)
Avatar van TotempaaltJ PHP interesse Ik bedoelde niet aan te passen, srry, ik bedoelde aan te vragen, voor de rest geld hetzelfde. In Python kan je bijv doen:
  1. import urllib
  2. import urllib2
  3.  
  4. xml = '''<query>
  5. <from>data</from>
  6. <select>value</select>
  7. <where type="equals">
  8. <column>name</column>
  9. <value>API Help</value>
  10. </where>
  11. </query>'''
  12. url = 'http://www.jouwweb.nl/api.php'
  13. values = { 'xml' : xml }
  14.  
  15. data = urllib.urlencode(values)
  16. req = urllib2.Request(url, data, headers)
  17. response = urllib2.urlopen(req)
  18. the_page = response.read()

Ik stuur nu, in POST, jou een stukje XML. Dit kan jij dan laten uitlezen met PHP, parsen en XML teruggeven, dat krijg ik dan in de variabele the_page.
Offline roy - 20/02/2010 13:22 (laatste wijziging 20/02/2010 15:14)
Avatar van roy PHP gevorderde prachtig voorbeeld!

  1. $ch = curl_init('http://www.mijnwebsite.nl/xml.php');
  2. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  3. curl_setopt($ch, CURLOPT_POST, 1);
  4. curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);


Hoe pak ik dan die XMP op mijnwebsite??

Heb je misschien ook zo'n voorbeeldje van Javascript / .NET ?

Koen schreef:
Vergeet niet om code tags te gebruiken. 
Offline TotempaaltJ - 20/02/2010 18:25
Avatar van TotempaaltJ PHP interesse Uhm, nee, ik kan niet zo goed Javascript, en helemaal geen .NET 

XML, bedoel je toch? Geen XMP Daarvan uitgaande:
In het scriptje xml.php kan je nu gewoon de POST variabele 'xml' uitlezen en die parsen met elke willekeurige PHP XML library ofzo. (Google.be: PHP en XML)
Offline roy - 21/02/2010 13:24
Avatar van roy PHP gevorderde Hi,

Ik stuur onderstaande vanaf website 1:

  1. <?php
  2. $xml = '<xmlrequest>
  3. <username>admin</username>
  4. </xmlrequest>
  5. ';
  6.  
  7. $ch = curl_init('http://www.mijndomein.com/api.php');
  8. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  9. curl_setopt($ch, CURLOPT_POST, 1);
  10. curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
  11. $result = @curl_exec($ch);
  12. if($result === false) {
  13. echo "Error performing request";
  14. }
  15. else {
  16. $xml_doc = simplexml_load_string($result);
  17. echo 'Status is ', $xml_doc->status, '<br/>';
  18. if ($xml_doc->status == 'SUCCESS') {
  19. echo 'Data is ', $xml_doc->data, '<br/>';
  20. } else {
  21. echo 'Error is ', $xml_doc->errormessage, '<br/>';
  22. }
  23. }
  24.  
  25. ?>


Hoe vang ik de XML op (op Website 2) ??
Hoe kan ik XML teruggeven?? (door het in een echo statement te zetten??)


Offline ikkedikke - 21/02/2010 14:03
Avatar van ikkedikke PHP expert Hier is WSDL voor bedacht. Binnen PHP zijn mooie systemen om dit soort services aan te bieden.

Het kost even wat moeite om het aan de praat te krijgen, maar daar bestaan mooie programma's voor.
Offline roy - 21/02/2010 14:05 (laatste wijziging 21/02/2010 16:15)
Avatar van roy PHP gevorderde ik vraag niet voor andere systemen..

Ik wil graag bovenstaande code werkend krijgen.., Heeft iemand een idee???
Offline UpLink - 21/02/2010 19:00 (laatste wijziging 21/02/2010 19:03)
Avatar van UpLink ... $HTTP_RAW_POST_DATA

Misschien is dit iets wat je verder kan helpen?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.211s