ist das denn ausreichend, lediglich die sql befehle in den vorhandenen bridges auf die neue tabelle umzuschreiben, müsste es nicht noch mehr Parameter geben?
ist das denn ausreichend, lediglich die sql befehle in den vorhandenen bridges auf die neue tabelle umzuschreiben, müsste es nicht noch mehr Parameter geben?
ich komme hier irgendwie nicht weiter...
die registrierung ist mehr oder weniger simpel zu händeln, da es sich lediglich um Einträge in die Datenbank handelt, die kaum verknüpfungen bedarfen,
aber
wie mache ich das mit den Sessions? Ich habe selbst nicht viel Erfahrung und Wissen über Sessions, ich weiß, dass Joomla diese per Keks aufn rechner speichert, ich weiß, dass es das andere System nicht tut, das speichert als Keks Userid und Userpass (verschlüsselt), ich weiß aber nicht, wie ich beide rythmen am besten mit einander verbinde, wenn man sich im ladder einloggt?
Mit Besten Grüßen
Du musst in Joomla ein user-Plugin erstellen, das beim Event onLoginUser den Cookie für das Laddersystem erstellt. Umgekehrt muss das laddersystem bei seinem logIn den Joomla-Cookie setzen oder du blendest hier den Login ganz aus.
Dann beim Joomla-Logout mit dem Event onLogoutUser auch den ladder-Cookie löschen.
Für das Registrieren würde ich es auch bei einem der beiden Systeme deaktivieren und in Joomla z.B. bei onAfterStoreUser den ladder-user anlegen, (evtl auch löschen bei onAfterDeleteUser oder onBeforeDeleteUser, das macht es dann auch beim Löschen im Admin glaube ich)
hi progandy,
ich habe das mit dem Cookie erstmal versucht, damit Joomla die beiden Kekse für das Laddersystem setzt, sobald sich jemand einloggt, leider ohne Erfolg, dazu kommt, dass ich die Abfrage auch nicht im Debug Modus gesehen habe, es kann also auch sein, dass die neue Athentification übergangen wird?
Hier mal das Plugin, vllt. habe ich ja nen groben Fehler gemacht:
PHP-Code:<?php
defined('_JEXEC') or die( 'Restricted access' );
jimport( 'joomla.plugin.plugin' );
include("config/config.php");
include("function/global.php");
class plgAuthenticationLadder extends JPlugin
{
function plgAuthenticationLadder(& $subject, $config) {
parent::__construct($subject, $config);
}
function onAuthenticate( $credentials, $options, &$response )
{
jimport('joomla.user.helper');
if (empty($credentials['password']))
{
$response->status = JAUTHENTICATE_STATUS_FAILURE;
$response->error_message = 'Empty password not allowed';
return false;
}
$conditions = '';
$db =& JFactory::getDBO();
$query = 'SELECT `id`, `pass`'
. ' FROM `users`'
. ' WHERE alias=' . $db->Quote( $credentials['username'] )
;
$db->setQuery( $query );
$result = $db->loadObject();
if($result)
{
if ($result->password == $credentials['password']) {
$tday=date("Y-m-d H:i:s");
mysql_query("UPDATE users SET lastlogin='$tday' WHERE alias=".$credentials['username']."");
setcookie("PID","");
setcookie("PPW","");
$cexpire="never";
cookie_crisp("PID", $response->id, $ccode, $cexpire);
cookie_crisp("PPW", $response->pass, "yes", $cexpire);
} else {
$response->status = JAUTHENTICATE_STATUS_FAILURE;
$response->error_message = 'Invalid password';
}
}
else
{
$response->status = JAUTHENTICATE_STATUS_FAILURE;
$response->error_message = 'User does not exist';
}
}
function cookie_crisp($cname, $cvalue, $ccode, $cexpire){
global $timeout;
if(($cname) && ($cvalue)){
setcookie("$cname");
if($ccode){
$cvalue=base64_encode($cvalue);
}
if(!$cexpire){
$cexpire=(time()+$timeout[cookie]);
}
if($cexpire=="never"){
$cexpire=(time()+60*60*24*365);
}
if($cexpire=="session"){
$cexpire=0;
}
$cpath="/";
$cdomain="";
setcookie("$cname","$cvalue",$cexpire);
}
}
}
Vielen Dank, das hat schon sehr gut weitergeholfen, nun eine allgemeine Frage, kann ich in dieser Datei keine anderen Funktionen unterbringen, wie z.b. meine cookie function?
Diese habe ich nämlich direkt darunter platziert (wobei Platzierung eigentlich egal sein sollten).
Fatal error: Call to undefined function cookie_crisp()
Oder könnte der Fehler eine andere Ursache haben?
Mit Besten Grüßen
noch was allgemeines:
dient onBeforeStoreUser und onAfterStoreUser für die Speicherung der Sessions oder zum anlegen von Accounts?
Mit Besten Grüßen
Die Store-Funktionen werden beim erstellen oder aktualisieren des Datenbankeintrags des Benutzers aufgerufen. (nicht Session, diese wird ja bei Login bzw. Logout geöffnet oder geschlossen)
Funktionen, die innerhalb einer Klasse definiert werden, rufst du mit this->Funktion() auf.
PHP-Code:class ... {
function bla() {
$x = this->cookie_crisp();
}
function cookie_crisp() {
return 5;
}
}
Besten Dank, jetzt kommt ein anderes Problem, der Cookie der erstellt wird, lässt sich nicht löschen, ich habe es mit folgender Weise versucht:
Aber leider passiert nix...PHP-Code:setcookie("PID", "", time()-60*60*24, "/nocommand/");
EDIT: Hat sich erledigt, habs hinbekommen...
Geändert von Smokeler (23.03.2010 um 21:54 Uhr)
Lesezeichen