4.5.2: Login-Funktionalität

m.wohlers
Beiträge: 93
Registriert: Di 25. Mai 2004, 16:11
Wohnort: Bad Aibling
Kontaktdaten:

4.5.2: Login-Funktionalität

Beitrag von m.wohlers » So 7. Nov 2004, 15:34

Hallo Contenido-Team und -Freunde!

Mit den aktuellsten Schnappschüssen aus der 4.5.2'er Alpha-Reihe habe ich folgendes Problem: der Login für Frontend-Nutzer funktioniert nicht mehr richtig. Direkt nach dem Login erscheint die erste "gesperrte" Kategorie und $auth->user ist richtig gesetzt. Doch das war's dann - der nächste Seitenaufruf zeigt, daß man wieder ausgeloggt ist.

Im Error-Log erscheint folgendes:

Code: Alles auswählen

[07-Nov-2004 15:28:41] /cms/front_content.php?idcat=65&client=1%C3%83%C2%A2%C3%85%E2%80%99%C3%82%C2%A9=1%C3%A2%C5%92%C2%A9=1%E2%8C%A9=1&sid_1_1=fbda3c56fb04be1c340ac9650495b61f MySQL Error  (): update con_phplib_active_sessions set val='c2lkXzFfMTokdGhpcy0 ........ J2xhbmcnXSA9ICcxJzsg', changed='20041107152841' where sid='e9b5a08851c4d38aaea1d5ec4ecb75c0' and name='sid_1_1'

[07-Nov-2004 15:23:57] /cms/front_content.php?idart=136&idcat=105&oldidcat=36&oldidart=197 MySQL Error  (): update con_phplib_active_sessions set val='c2lkXzFfMTokdGhpcy0+aW4gPSAnMCc7ICR0aGlzLT5wdCA9IGFycmF5KCk7ICR0aGlzLT5wdFsnYXV0aCddID0gJzEnOyAkdGhpcy0....... ydjbGllbnQnXSA9ICcxJzsg', changed='20041107152357' where sid='1d91c98052d5576f2127696db9f07b15' and name='sid_1_1'

[07-Nov-2004 15:21:42] /cms/front_content.php?idcat=8&client=1%E2%8C%A9=1&sid_1_1=eb24b51dce7fc35b4e24e8631f1c3b38 MySQL Error  (): update con_phplib_active_sessions set val='c2lkXzFfMTokdGhpcy0+aW4gPSAnMCc7ICR0aGlzLT5wdCA9IGFycmF5KCk7ICR0aGlzLT5wdFsnYXV0aCddID0gJzEnOyAkdGhpcy0+cHRbJ2NmZ0NsaWVudCddID0gJzEnOyAkdGhpcy0........ NbJ2xhbmcnXSA9ICcxJzsg', changed='20041107152142' where sid='8fb89f4cb7b529ebb907d69a8dd84f42' and name='sid_1_1'

0gPSAndXBsb2FkLyc7ICRHTE9CQUxT ...................... bmcnXSA9ICcxJzsg', changed='20041107151045' where sid='15beca86d3925a2a2f56d7063582f37c' and name='sid_1_1'
Ist da schon etwas diesbezügliches bekannt und/oder wird es gefixt?

Danke für die Bemühungen...
Michael Wohlers

emergence
Beiträge: 10641
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 8. Nov 2004, 10:08

bekannt nein...
kann man sich das irgendwo ansehen ?
welches modul hast du verwendet ?
*** make your own tools (wishlist :: thx)

m.wohlers
Beiträge: 93
Registriert: Di 25. Mai 2004, 16:11
Wohnort: Bad Aibling
Kontaktdaten:

Beitrag von m.wohlers » Mo 8. Nov 2004, 11:16

Hallo emergence!

Danke für das Interesse... also der direkte Link zur entsprechenden Homepage ist http://haendler.dantotec.de

Für Dich habe ich einen Benutzer angelegt, lautend auf Deinen Benutzernamen hier im Forum und das Passwort ist "contenido".

Momentan läuft ein Login-Modul aus dem Forum, vorher wurde das über eine eigene Lösung gemäß der Doku vom Timo gemacht. Ergebnis war das gleiche, die Übergabe an die front_content.php ist ja nicht falsch zu machen :)
Michael Wohlers

emergence
Beiträge: 10641
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 8. Nov 2004, 11:38

ähm nein, so kann ich momentan nichts sagen...
muss das mit ner 4.5.2alpha version testen...
mal sehen ob die sql fehlermeldungen auch bei mir auftreten...
*** make your own tools (wishlist :: thx)

m.wohlers
Beiträge: 93
Registriert: Di 25. Mai 2004, 16:11
Wohnort: Bad Aibling
Kontaktdaten:

Beitrag von m.wohlers » Mo 8. Nov 2004, 11:42

Hallo emergence!

Danke für's Testen... Du hast gesehen, was passiert: direkt nach dem Login ist alles okay, aber beim nächsten Klick ist alles Weg und o.g. SQL-Fehler stehen im Log...

Ich habe noch nicht getestet, ab welchem Snapshot der Fehler auftritt... das muss ich noch nachholen.
Michael Wohlers

emergence
Beiträge: 10641
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 8. Nov 2004, 11:48

also bei der 4.5.2alpha
geht das wunderbar...

mir fehlt da irgendwie die meldung die der mysql server zurückliefert...

führ mal folgendes query via phpmyadmin aus

Code: Alles auswählen

update con_phplib_active_sessions set val='123', changed='20041108114331' where sid='376d20666fbf2fea0831520559f945aa' and name='sid_1_1'
und teil mir die fehlermeldung mit...
*** make your own tools (wishlist :: thx)

m.wohlers
Beiträge: 93
Registriert: Di 25. Mai 2004, 16:11
Wohnort: Bad Aibling
Kontaktdaten:

Beitrag von m.wohlers » Mo 8. Nov 2004, 11:54

Hallo emergence!

Es gibt keine Fehlermeldung... :)

Was hat das zu bedeuten? Any ideas?
Michael Wohlers

emergence
Beiträge: 10641
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 8. Nov 2004, 12:09

wenn keine kommt hab ich ein problem, da ich den fehler nicht eingrenzen kann...

sobald man sich einloggt werden die login daten in die tabelle
con_phplib_active_sessions geschrieben...

contenido überprüft dann einfach nur ob in dieser tabelle der eintrag die login berechtigung hat...

nur funktioniert das bei dir nicht... die einträge kommen gar nie bei dir in diese tabelle da mysql einen fehler liefert...
die frage ist nur welcher...

ich hab mal ein posting hier im forum hineingestellt welches den mysql fehler mit protokolliert und im errorlog.txt mit anzeigt...
-> http://www.contenido.de/forum/viewtopic ... 0133#20133

vielleicht ist es dann möglich zu sagen warum das bei dir nicht geht...
*** make your own tools (wishlist :: thx)

m.wohlers
Beiträge: 93
Registriert: Di 25. Mai 2004, 16:11
Wohnort: Bad Aibling
Kontaktdaten:

Beitrag von m.wohlers » Mo 8. Nov 2004, 12:46

Hallo emergence!

Danke, das war's... dieses Code-Stückchen:

Code: Alles auswählen

$this->haltmsg("MySQL-Error: ".$this->Error." (".$this->Errno.")");
ist wirklich zu empfehlen. Warum ist das immer noch nicht im CVS eingebaut? -> Dringende Empfehlung an die Maintainer!

Das Error-Log liefert nun folgendes:

Code: Alles auswählen

[08-Nov-2004 12:28:42] MySQL-Error: Table 'usr_web39_1.con_phplib_active_sessions' doesn't exist (1146)
Das Geheimnis lag in einem neuen Modul (siehe Thread: http://contenido.de/forum/viewtopic.php?t=3624), welches eine neue Datenverbindung zu einer anderen Datenbank aufbaut.

Es findet sich folgender Aufbau im von mir leicht modifizierten Modul (analog zum Original aus dem Thread):

Code: Alles auswählen

$osc_connection = mysql_connect (OSC_DB_SERVER, OSC_DB_SERVER_USERNAME, OSC_DB_SERVER_PASSWORD);

if (!mysql_select_db (OSC_DB_DATABASE, $osc_connection))
{
    die ("Keine Verbindung zur Datenbank");
} 

...

$sql_result = mysql_query($sql, $osc_connection) or die("Fehler");

...

// Datenbankverbindung schliessen

mysql_free_result($sql_result);
mysql_close($osc_connection);
Nach dem Ändern der Datenbankverbindung und dem Schließen bleibt dennoch die "neue" Datenbank aktiv und die folgenden Contenido-DB-Zugriffe laufen in's Leere...

Ist das ein Bug? Sollte vielleicht nach jedem Modul wieder die "Standard-Verbindung" hergestellt werden?

Oder ist das Modul nicht regelkonform? Wie kann ich dann "standardisiert" am Schluß des Moduls wieder die "richtige" Verbindung aufbauen? Oder gibt es eine andere Möglichkeit?

Vielen herzlichen Dank auf jeden Fall für die sehr schnelle und kompetente Hilfe...
Michael Wohlers

emergence
Beiträge: 10641
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 8. Nov 2004, 13:04

m.wohlers hat geschrieben:Nach dem Ändern der Datenbankverbindung und dem Schließen bleibt dennoch die "neue" Datenbank aktiv und die folgenden Contenido-DB-Zugriffe laufen in's Leere...
das erklärt natülich einiges...
m.wohlers hat geschrieben:Ist das ein Bug? Sollte vielleicht nach jedem Modul wieder die "Standard-Verbindung" hergestellt werden?
ist ne gute frage...
mir wäre es am liebsten wenn es etwas wie
$dbext->new Db_External($dbname,$user,$pass);
geben würde...
und ne funktion wie
$dbext->close();

Oder ist das Modul nicht regelkonform? Wie kann ich dann "standardisiert" am Schluß des Moduls wieder die "richtige" Verbindung aufbauen? Oder gibt es eine andere Möglichkeit?
ähm bei
$db = new Db_Contenido; am beginn eines moduls
wäre es möglich das dann wieder die richtige db selektiert wird... weiss ich jetzt aber nicht...
Vielen herzlichen Dank auf jeden Fall für die sehr schnelle und kompetente Hilfe...
gerne und danke für die blumen...
*** make your own tools (wishlist :: thx)

m.wohlers
Beiträge: 93
Registriert: Di 25. Mai 2004, 16:11
Wohnort: Bad Aibling
Kontaktdaten:

Beitrag von m.wohlers » Mo 8. Nov 2004, 18:13

Hallo emergence!

Nichts zu danken, Ehre wem Ehre gebührt... mit Kritik spare ich schließlich auch nicht 8)

Problematischer sieht es da schon mit der "Lösung" des Problems aus, ich habe es nicht geschafft, die Datenbankverbindung wieder "zurückzubiegen". Egal ob per

Code: Alles auswählen

$dummy = new DB_Contenido;
oder manuell mit - trotzdem tritt derselbe Fehler auf...

Code: Alles auswählen

$dummy_connection = mysql_connect($contenido_host, $contenido_user, $contenido_password);
Hat jemand oder ganz im Speziellen der timo eine Idee?

PS: Sollten wir das nicht als Feature Request formulieren?
Michael Wohlers

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Mo 8. Nov 2004, 18:16

wenn du nur eine andere Datenbank ansprechen willst und keinen anderen Host, dann ist es bei MySQL recht einfach:

z.b.

SELECT * FROM <datenbank>.<tabelle>;

emergence
Beiträge: 10641
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 8. Nov 2004, 18:45

@timo
schon klar
soweit ich das noch im kopf habe ergibt sich das problem daraus, das wenn einmal eine db selektiert wurde bleibt diese verbindung bestehen...

ich meinte mit DB_External nichts anderes als die möglichkeit zwei komplett unterschiedliche db's ansprechen zu können...
bei der externen db sollte es durchaus möglich sein, einen eigenen host, user und pass definieren zu können...
die frage die sich mir jetzt stellt ob das so überhaupt möglich ist...

wenn man nun die db so anwählt wie du das meinst, wo zeigt das nachfolgende query hin(wenn keine db mitangegeben ist...) auf die zuletzt angegebene oder die ursprüngliche...
ich denke eher es ist die zuletzt angegebene...

ad. zurückbiegen
ich denke das müsste man dann mit mysql_select _db machen...
*** make your own tools (wishlist :: thx)

m.wohlers
Beiträge: 93
Registriert: Di 25. Mai 2004, 16:11
Wohnort: Bad Aibling
Kontaktdaten:

Beitrag von m.wohlers » Di 9. Nov 2004, 08:35

Hallo Timo!
timo hat geschrieben:wenn du nur eine andere Datenbank ansprechen willst und keinen anderen Host, dann ist es bei MySQL recht einfach:

z.b.

SELECT * FROM <datenbank>.<tabelle>;
Danke, ja... aber zum Einen spreche ich einen anderen Host an und zum anderen muß es ja auch eine "saubere" Lösung geben oder nicht?

Wie kann ich also am Ende eines Moduls wieder die "normale" Datenbankverbindung für Contenido wiederherstellen? Ich habe intensiv im Code gesucht aber nichts passendes gefunden...
Michael Wohlers

m.wohlers
Beiträge: 93
Registriert: Di 25. Mai 2004, 16:11
Wohnort: Bad Aibling
Kontaktdaten:

Beitrag von m.wohlers » Mi 10. Nov 2004, 18:30

Hallo timo und alle anderen!

Nochmal meine Frage, verzeiht die Ungeduld:

Wie kann ich also am Ende eines Moduls wieder die "normale" Datenbankverbindung für Contenido wiederherstellen?

Danke für Eure Bemühungen...
Michael Wohlers

Gesperrt