login  Naam:   Wachtwoord: 
Registreer je!
 Forum

PHP/MySQL en Active Directory

Offline dbe123 - 14/02/2016 18:26
Avatar van dbe123Lid Hoi,
Ik bijt al een paar dagen mijn tanden stuk op een code, die ik niet in elkaar gebokst krijg.
Ik hoop hier de nodige hulp te vinden.

Wat ik wil bereiken, is om de lijst van users in Active Directory te synchronizeren met een tabel in mijn MySQL database.
Dit moet gestuurd worden door PHP (met framework CodeIgniter, dus eigenlijk OOP).
Je ziet, ik ben met verschillende zaken bezig, vandaar dat ik mijn topic hier post... 

Het stukje code dat ik tot nu toe heb, kan hier worden gevonden.
http://pastebin.com/aXtcAP8g

Insert werkt, Update werkt, ophalen uit AD werkt...
Wat werkt er dan niet: het verwijderen van users uit de MySQL tabel, die niet meer in AD te vinden zijn.
Ik geraak niet uit de logica.

Als iemand me kan helpen, zou dit zéér welkom zijn.

Dank bij voorbaat.

1 antwoord

Gesponsorde links
Offline Thomas - 14/02/2016 19:29
Avatar van Thomas Moderator Topic loopt ook op phphulp.nl.

Als ik die code zo vlug scan op pastebin is er geen enkele code geschreven voor het verwijderen van users. Hiervoor zul je je uitgangspunt moeten veranderen.

Bij het ophalen van alle data via LDAP zul je een lijst bij moeten houden -op grond van een attribuut met een unieke waarde, zoals wellicht samaccountname (in LDAP, wat correspondeert met rise_id in je database)- van alle users die bekend zijn in LDAP. Na afloop zou je die resultaten kunnen vergelijken met de data in je database, bijvoorbeeld als volgt:

DELETE FROM ci_user WHERE rise_id NOT IN (<de ids in de lijst die je hebt bijgehouden>)

Dit zou ik echter zo niet doen, je gooit dan namelijk de data echt weg. Ik zou de records "flaggen" als zijnde deleted (door middel van een kolom is_deleted). Je moet hier dan wel in alle andere queries rekening mee houden zodanig dat je controleert dat je te maken hebt met een actieve user (WHERE is_deleted = 0). Op deze manier gaat er nooit data verloren.

Verder hoop ik ook voor jou dat alle database-queries die worden uitgevoerd in de loop van de uitvoering van de update_user_list() methode in een transactie staan zodat alle bewerkingen WEL of alle bewerkingen op je database IN HET GEHEEL NIET worden uitgevoerd. Stel nu dat halverwege de connectie wegvalt met LDAP of dat er iets anders misgaat in de communicatie dan heb je mogelijk stront, met potentieel rampzalige gevolgen voor (de integriteit van) je eigen database-data.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.17s