login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Help! CMS problemen

Offline Mmore - 17/03/2008 13:57
Avatar van MmoreMySQL interesse Hello,

Momenteel werk ik aan een website waar gebruik gemaakt wordt van 1) Joomla!, 2) phpBB3 en 3) wikimedia. Al deze systemen hebben eigen loginsystemen.

Die van phpBB3 wordt gebruikt als 'main' login systeem. Als je een account aanmaakt op het forum (phpBB3 forum) dan wordt deze account ook automatisch gemaakt in Joomla! en in Wikimedia.

Nu wil ik één centraal login formlier hebben, zodat de gebruiker niet drie keer hoeft in te loggen. Dit brengt echter meer met zich mee dan dat ik gedacht had. Ik kom absoluut niet uit de complexiteit die bijv. phpBB3 met zich meeneemt. Elk script verwijst weer naar een ander script die op haar beurt weer naar een functie verwijst en so on.

Ik heb momenteel één pagina met daarop alle login formulieren centraal. Is er een manier om al deze formulieren tot één formulier samen te voegen?

Dit is de centrale pagina: http://www.fmliveonline.com/login.php

13 antwoorden

Gesponsorde links
Offline TotempaaltJ - 17/03/2008 16:56
Avatar van TotempaaltJ PHP interesse Ik weet de code niet, maar hier is een voorstel:
Je maakt zelf een klein login scriptje, wat alledrie de sessies, daar werkt het mee, denk ik, aanmaakt! 
Offline thomasje - 17/03/2008 17:01
Avatar van thomasje MySQL beginner kan je niet eens wat code plaatsen, zodat we eens kunnen kijken hoe de techniek er achter in elkaar zit.
Offline Mmore - 17/03/2008 17:20 (laatste wijziging 17/03/2008 23:01)
Avatar van Mmore MySQL interesse Uiteraard! Ik zal als ik zometeen terug kom van werk of anders morgen een update plaatsen. Moet me nu gaan haasten voordat ik te laat kom.

Update, 22.59
Okay, hier ben ik weer. Het probleem waar ik dus echt mee te kampen kreeg is dat deze 3 afzonderlijke systemen dusdanig ingewikkeld in elkaar zitten (begrijp me niet verkeerd, ik kan prima met PHP overweg, maar dit is arabisch voor mij) en dat ik dus wel de formulieren van een afstand weet aan te roepen, maar dat ik niet kan traceren welke sessie's er precies aangeroepen worden.

Vooral phpBB en WikiMedia zijn een probleem.
Offline Grayen - 17/03/2008 23:13
Avatar van Grayen PHP ver gevorderde 2 ideeen die ik nog heb, vind ze wel lelijk, maar ze werken waarschijnlijk wel.

Maar een formulier gebruiken, action="" zetten, op die pagina met het login formulier dan een php code toevoegen die zo requesten stuurt naar die andere paginas's waarbij POST variables worden meegestuurd (met sockets en dergelijke)

of maak gebruik van AJAX code om naar alle drie de pagina's een request te sturen.

Zo zou je 3 login formulieren kunnen samenvoegen tot één. Het mooist zou zijn als je dat van BigBoss zou kunnen toepassen. Anders die met die sockets binnnen PHP en als laatst (vanwege de javascript) de AJAX oplossing.

Offline Mmore - 17/03/2008 23:35 (laatste wijziging 18/03/2008 15:12)
Avatar van Mmore MySQL interesse Okay, dat eerste lijkt me helaas niet erg realistisch. Ik heb uren (Letterlijk, helaas) in de code gezeten, maar de functie's zijn mij echt te ingewikkeld. De community van phpBB3 is ook niet erg behulpzaam.

De sockets, wat je daarmee bedoeld is bijv. dat hij eerst inlogt in systeem 1, en dat aan het einde van systeem een redirect staat naar systeem 2 etc? Kan ik daar een wat uitgebreidere beschrijving van krijgen? Alvast erg bedankt, I hate these kind of trouble.
Offline Grayen - 18/03/2008 16:29
Avatar van Grayen PHP ver gevorderde http://www.php.net/manual/en/ref.sockets.php#70064

Hier staat een class die je zou kunnen gebruiken, let er wel op dat de $sPostData een string verwacht, die zou je kunnen maken met http_build_query($_POST, null, '&'); vervolgens stuur je een request naar alle drie de login pagina's (dus het zijn geen redirects)

Dan krijg je iets als:

  1. <?php
  2. if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['login']))
  3. {
  4. // De absolute path naar dit bestand zijn map
  5. $sAbsolutePath = 'http://www.example.com';
  6.  
  7. $aKeys = array('phpbb', 'wikimedia', 'joomla');
  8.  
  9. // Geen &amp; plaatsen, want dat is alleen als het in html staat ;-)
  10. $aActions = array
  11. (
  12. 'phpbb' => 'forums/ucp.php?mode=login',
  13. 'wikimedia' => 'wiki/index.php?title=Special:Userlogin&action=submitlogin&type=login&returnto=Main_Page',
  14. 'joomla' => 'index.php'
  15. );
  16.  
  17. $aFieldNames = array
  18. (
  19. 'phpbb' => array
  20. (
  21. 'username' => 'username',
  22. 'password' => 'password',
  23. 'remember' => 'autologin',
  24. 'login' => 'login'
  25. ),
  26. 'wikimedia' => array
  27. (
  28. 'username' => 'wpName',
  29. 'password' => 'wpPassword',
  30. 'remember' => 'wpRemember',
  31. 'login' => 'wpLoginattempt'
  32. ),
  33. 'joomla' => array
  34. (
  35. 'username' => 'username',
  36. 'password' => 'passwd',
  37. 'remember' => 'remember',
  38. 'login' => 'Submit'
  39. )
  40. );
  41.  
  42. foreach ($aKeys as $sKey)
  43. {
  44. $sUrl = $sAbsolutePath.'/'.$aActions[$sKey];
  45.  
  46. $aNames = $aFieldNames[$sKey];
  47.  
  48. $aNewPost = array();
  49.  
  50. foreach ($_POST as $sKey => $mValue)
  51. {
  52. if (isset($aNames[$sKey]))
  53. {
  54. $aNewPost[$aNames[$sKey]] = $mValue;
  55. }
  56. }
  57.  
  58. $sPostData = http_build_query($aNewPost, null, '&');
  59.  
  60. // Bezoek de pagina, met POST variables
  61. $oRequest = new HttpRequest($sUrl);
  62. $oRequest->sendRequest('POST', $sPostData);
  63. }
  64. }
  65. ?>
  66. <form method="post">
  67. <p>
  68. <label for="username">Username</label>
  69. <br />
  70. <input type="text" name="username" />
  71. </p>
  72. <p>
  73. <label for="password">Password</label>
  74. <br />
  75. <input type="password" name="password" />
  76. </p>
  77. <p>
  78. <label for="remember">Remember me</label><input type="checkbox" name="remember" />
  79. </p>
  80. <p>
  81. <input type="submit" name="login" value="Login" />
  82. </p>
  83. </form>
Offline Mmore - 18/03/2008 17:15 (laatste wijziging 18/03/2008 17:16)
Avatar van Mmore MySQL interesse Ziet er (erg) goed uit. Ik krijg bij het uitvoeren echter het volgende probleem.
Citaat:
Fatal error: Class 'HttpRequest' not found in /home/fmliecom/public_html/fml.php on line 61
Het script is hier te vinden.  
Offline Grayen - 18/03/2008 17:58
Avatar van Grayen PHP ver gevorderde ehm, aan de locatie van het script heb ik niets, dan zie ik alleen je html, zou ik het willen verhelpen dat zou ik ook de bron moeten zien van de php code. Dus in vervolg de broncode laten zien.

Maar het probleem onstaat omdat je vergeten bent de class van http://www.php.net/manual/en/ref.sockets.php#70064 te kopieren en er bij te plaatsen.
Offline Mmore - 18/03/2008 18:50
Avatar van Mmore MySQL interesse Okay bedankt. Het wilt echter nog steeds niet werken. Het script laad wel *iets* maar ik heb geen idee wat en ik krijg geen errors? Plaatscode: 6144
Offline Grayen - 18/03/2008 21:12
Avatar van Grayen PHP ver gevorderde Dat is juist goed, want dat betekend dat het gelukt is. Als goed is ben je nu bij alle drie ingelogd. Ik heb het even gecontroleerd of het script werkte. En mijn test werkte goed. Ik weet natuurlijk niet zeker of het ook daadwerkelijk bij jouw werkt, want ik heb immers niet die drie onderdelen geinstaleerd, maar het zou moeten werken.

Dus zou zeggen controleer het of je nu ingelogd bent. Zo ja, dan kan je net zoiets maken voor het uitloggen.

Veel succes 
Offline Mmore - 19/03/2008 10:48
Avatar van Mmore MySQL interesse Hmm het wilt toch niet werken. Het doet zeg maar wat ik hierboven beschrijf, alleen wordt je niet ingelogd. Ik heb zelf even de formlieren nader bekeken en een aantal dingen vielen mij op.

Het formulier van joomla heeft naast de naam en wachtwoord variablen ook nog een aantal hidden variablen. Moeten deze niet meegestuurd worden, en kunnen deze ervoor zorgen dat het gehele systeem ineens niet meer werkt?

Een live voorbeeld is hier te vinden!

Echt heel erg bedankt voor de hulp!  
Offline Grayen - 19/03/2008 12:41 (laatste wijziging 19/03/2008 12:41)
Avatar van Grayen PHP ver gevorderde Ja die velden moeten er ook nog bij. De waardes van die velden, verschillen deze elke keer? of blijven ze constant? anders zou je $aNewPost = array_merge($aNewPost, array('veldnaam' => 'waarde')); kunnen doen als het joomla is, dus:

  1. if ($sKey === 'joomla')
  2. {
  3. $aNewPost = array_merge($aNewPost, array('veldnaam' => 'waarde'));
  4. }
Offline Mmore - 19/03/2008 18:51 (laatste wijziging 20/03/2008 16:33)
Avatar van Mmore MySQL interesse Okay, ik heb Joomla! voor het gemak er maar buiten gelaten. Ik heb besloten dat ik dit gedeelte eventueel wel in HTML en PHP kan schrijven.

Het nieuwe script fml.php Plaatscode: 6166
De class class.httpreq.php (van php site) Plaatscode: 6167
Een live voorbeeld

Het script wilt dus nog steeds niet werken. Omdat ik dacht dat het misschien aan Joomla! lag (zoals hierboven vermeld) heb ik dat eruit gehaald, maar dat wilt ook niet werken. Dit is de wiki waar het op zou moeten werken, en dit is het phpBB forum. Ik heb echt van alles geprobeerd, maar niets lukt  
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.478s