Op dit moment ben ik bezig met de ontwikkeling van een CMS. Stel dat er 10 klanten zijn die hiervan gebruik maken, dan loggen deze allemaal in op www.aaa.nl. Vervolgens maken ze gebruik van de FCKeditor op www.aaa.nl en de gewijzigde content van hun pagina gaat vervolgens een MySQL database op www.aaa.nl in.
Hierbij liep ik tegen het volgende probleem aan:
Hoe kan ik ervoor zorgen dat men op hun eigen website de bijgewerkte inhoud te zien krijgt? Kortom: hoe lees ik de database van www.aaa.nl uit op bijvoorbeeld www.bbb.nl?
Bij mijn vorige CMS deed ik het volgende: ik sloeg de bijgewerkte content van een webpagina op in bijvoorbeeld overons.inc.php op de domeinnaam www.aaa.nl. Vervolgens kwam de content via include() tevoorschijn op andere domeinnamen. Hierbij maakte ik dus geen gebruik van een database. Ik vind dit nu echter een nogal omslachtige manier, en werk liever met een overzichtelijke database waar alle content in wordt opgeslagen (ook i.v.m. backups).
Iemand een idee hoe ik mijn probleem kan oplossen?
Ook algemene tips over beveiliging, inbouwen van functies en de do's en dont's van het ontwikkelen van een CMS zijn heel erg welkom.
Bedankt voor je reactie!
Er zit een abonnement aan verbonden, vandaar dat communicatie met de database van www.aaa.nl moet plaatsvinden. Als men dan niet betaalt kan ik met een druk op de knop het systeem afsluiten.
Kan ik niet op een of andere manier op www.bbb.nl verbinding maken met de database van www.aaa.nl??
Dat ligt eraan of jouw host dat ondersteunt. Soms is het mogelijk, soms niet. Dit kan je doen door in mysql_connect() niet localhost mee te geven, maar de locatie van jouw database (www.aaa.nl of het IP-adres).
Wat je ook kan doen, zoals veel grote site's ook doen, is een API maken.
Dan kan de client site via daarmee gegevens ophalen. Wanneer het abbo verlopen is, krijgt hij niet meer nieuwe gegevens maar de melding dat hij moet betalen ofzo. Voordeel bij dit systeem is dat de client site dan wel nog steeds kan werken, maar geen recente data meer kan tonen..
Bedankt Tim!!
Nog even een vraagje: ligt het aan de host van www.aaa.nl of die het ondersteunt om verbinding te maken met een andere website? of ligt het aan de website waarvandaan de database wordt aangeroepen (dus bijvoorbeeld www.bbb.nl)?
EDIT: dat van die API klinkt ook wel aantrekkelijk!via google kan ik echter weinig vinden over het maken van api. Kan jij hier wellicht wel wat info over vinden? Heb er wel eens van gehoord, maar daar blijft het bij :p
Bedankt voor de tip, ga ik zeker verder mee aan de slag!
Kant en klare API systemen zijn er niet, reden daarvoor is dat die per website specifiek zijn en je dus zelf zult moeten bedenken. Je kan als startpunt ervan uitgaan dat je een soort XML of JSON zult moeten tonen aan de bbb website waar die vroeger SQL antwoord gegevens (de rijen) zou krijgen van de aaa server.
Ik weet niet of je ergens tutorials kan vinden over het maken van een API, maar je zou als inleiding enkele API's van grote sites kunnen bekijken en daar wat uit leren hoe zij het doen.
De DB server van aaa moet ingesteld zijn om externe connecties toe te laten
Het makkelijkste lijkt mij om inderdaad een externe mysql connectie op te zetten naar de server van www.bbb.nl. Dit moet echter wel veilig genoeg zijn..
idd een API maken door bijv een webservice (met authenticatie). je maakt classes en functies die vervolgens weer gebruikt kunnen worden op de webpage.
?
Onbekende gebruiker
09-09-2009 13:37
Justin schreef op 09.09.2009 11:04
Het makkelijkste lijkt mij om inderdaad een externe mysql connectie op te zetten naar de server van www.bbb.nl. Dit moet echter wel veilig genoeg zijn..
Is mogelijk, maar ik zou toch ook voor een API gaan, is een stuk veiliger!
Bedankt voor alle tips. Het is voor mij duidelijk dat ik het beste een API kan gebruiken. Heb de afgelopen 2 dagen lopen zoeken naar API's van grote bedrijven, zoals deze van Google:
<?php
// Copyright 2005, Google Inc. All rights reserved.
/**
* sample code to create an Adsense account through Adsense API
*/
require_once('lib/nusoap.php');
require_once('common.php');
$server = 'https://sandbox.google.com';
// Comment out the line above and uncomment the line below to use
// the production API server
// $server = 'https://www.google.com';
$namespace = 'http://www.google.com/api/adsense/v3';
// Set up the authentication headers
$email = "<developer_email>REPLACE WITH DEVELOPER EMAIL</developer_email>";
$password = "<developer_password>REPLACE WITH DEVELOPER PASSWORD</developer_password>";
$client_id = "<client_id>NOT RELEVANT</client_id>";
$header = $email . $password . $client_id;
// creating soap client
$wsdl = $server . '/api/adsense/v3/AccountService?wsdl';
$client = new soapclient($wsdl, true);
$err = $client->getError();
if ($err) {
showSoapClientError($err);
return;
}
$client->soap_defencoding = 'UTF-8';
// Set the headers; they are needed for authentication
$client->setHeaders($header);
if ($client->fault) {
showMyErrors($client);
return;
}
$err = $client->getError();
if ($err) {
showSoapClientError($err);
return;
}
// setting the parameters
$param = "<loginEmail>[email protected]</loginEmail>";
$param .= "<entityType><value>Individual</value></entityType>";
$param .= "<websiteUrl>http://test.aaa.com</websiteUrl>";
$param .= "<websiteLocale>en</websiteLocale>";
$param .= "<usersPreferredLocale>en_US</usersPreferredLocale>";
$param .= "<emailPromotionPreferences>true</emailPromotionPreferences>";
$param .= "<synServiceTypes><value>ContentAds</value></synServiceTypes>";
$param .= "<developerUrl>code.google.com</developerUrl>";
$param = "<ns1:createAccount xmlns:ns1=\"$namespace\">" . $param . "</ns1:createAccount>";
// invoke web service
showCall('createAccount', $param);
$response = $client->call('createAccount', $param, $namespace);
if ($client->fault) {
showMyErrors($client);
return;
}
$err = $client->getError();
if ($err) {
showSoapClientError($err);
return;
}
// get back the response
$response = $response['return'];
showCreatedPublisher($response);
// showing the soap
showRequestResponse($client);
?>
Ik heb echter geen idee hoe ik hiermee moet omgaan. Ik heb gegevens staan in een MySQL database die ik dus in een API bestand zet? En vervolgens vraag ik dat API bestand op een of andere manier op bij een andere server? Weet iemand hoe ik dit precies kan doen? Of heeft iemand eventueel een klein voorbeeldje??