PHP: DB-Resource für Session speichern

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Warlord
Beiträge: 128
Registriert: 10.03.2005 12:18:18
Wohnort: Norddeutschland

PHP: DB-Resource für Session speichern

Beitrag von Warlord » 22.02.2007 12:14:02

Ich würde gern einen PHP-Resource-Datentypen für eine Session speichern.

Genaugenommen möchte ich mich per Login-Screen im Browser "richtig" an einer Postgres-DB anmelden und dann bis zum Logout das gleiche DB-Handle benutzen. Leider können Resource-Typen nicht serialisiert werden, und ich will auch nicht Usernamen und Passwort (bzw. den ganzen Connection-String) im Cookie speichern.

Auch die Anmeldung mit einem technischen User und darunterliegender eigener User-Verwaltung ist für mich indiskutabel.

Irgendwelche Ideen, wie/ob man das hinbekommt?

Beim Speichern des Connection-Strings im Cookie habe ich gefühlsmäßig irgendwie Sicherheitsbedenken...

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 22.02.2007 12:40:15

Dann speicher den Connect-String halt einfach in der Session selbst. Die liegt nur auf deinem Server.

Benutzeravatar
Warlord
Beiträge: 128
Registriert: 10.03.2005 12:18:18
Wohnort: Norddeutschland

Beitrag von Warlord » 22.02.2007 13:45:49

Nichts desto trotz speichere ich dann aber ein Passwort zwischen. Gibt's keinen anderen Weg?

Benutzeravatar
HELLinG3R
Beiträge: 1328
Registriert: 15.04.2004 07:54:33

Beitrag von HELLinG3R » 22.02.2007 15:13:47

Reicht es dir nicht, persistente Verbindungen zu benutzen?
Perl macht Spass.

Benutzeravatar
Warlord
Beiträge: 128
Registriert: 10.03.2005 12:18:18
Wohnort: Norddeutschland

Beitrag von Warlord » 22.02.2007 17:38:49

Hmm, vielleicht stehe ich ja auf'm Schlauch :roll:, aber wenn ich in aaa.php eine Zeile wie

Code: Alles auswählen

$conn = pg_connect("host=hier db=bla user=ich pw=hurliburli");
habe, dann kann ich in bbb.php $conn nur schlecht weiter benutzen. Mir ist klar, daß php die gleiche Verbindung benutzt, wenn ich das pg_connect mit gleichem String wie in aaa.php aufrufe (steht jedenfalls in der Doku) nur wie kann ich die Resource $conn aus aaa.php in bbb.php benutzen :?:

Benutzeravatar
HELLinG3R
Beiträge: 1328
Registriert: 15.04.2004 07:54:33

Beitrag von HELLinG3R » 22.02.2007 21:41:56

warum willst du denn die ressourcedatei benutzen?
du bekommst doch automatisch die gleiche ressource zugeteilt (denke ich):

aaa.php:
$conn = pg_connect("host=hier db=bla user=ich pw=hurliburli");
var_dump($conn);

bbb.php:
$conn = pg_connect("host=hier db=bla user=ich pw=hurliburli");
var_dump($conn);

Wenn ich das manual richtig verstanden habe, dann musst du dich um das sharen der ressource nicht kümmern.
Perl macht Spass.

Benutzeravatar
Warlord
Beiträge: 128
Registriert: 10.03.2005 12:18:18
Wohnort: Norddeutschland

Beitrag von Warlord » 22.02.2007 22:36:27

Ich will, wie gesagt, das Passwort nicht zwischenspeichern und/oder mitschleppen. Ich möchte mich, wie ich es mit einer normalen Desktop-Anwendung kann, einmal :!: an der DB anmelden (mit Username und Passwort) und dann das erhaltene DB-Handle benutzen, um so viele Queries auszuführen wie ich will.

Wenn ich fertig bin (oder serverseitig nach einem Timeout) schmeiße ich das Handle weg und alles ist sicher.

Es geht mir nicht darum, daß ich aus Performance-Gründen die gleiche Connection brauche. Persitent oder nicht ist also egal. Und überhaupt:
In fact, to be extremely clear about the subject, persistent connections don't give you any functionality that wasn't possible with their non-persistent brothers. ... An important summary. Persistent connections were designed to have one-to-one mapping to regular connections. That means that you should always be able to replace persistent connections with non-persistent connections, and it won't change the way your script behaves. It may (and probably will) change the efficiency of the script, but not its behavior!
(PHP-Manual, Chapter 41)

Ich find's nur einfach sch$%&§ und unprofessionell, ein Passwort im Speicher zu halten. Implizit ist bei meinem Vorhaben sicherlich EINE (folglich persistente) Verbindung nötig... Die (wahrscheinlich) alles entscheidende Frage bleibt, wie ich eine Variable vom Typ Resource, die in Skript X angelegt wurde auch in den Skripts Y, Z, usw. verwenden kann.

Antworten