PDA

View Full Version : Zugriff auf Benutzerdatenbank von außerhalb



Seiten : 1 [2] 3

KM
19-10-05, 07:13
Hallo Niko,

also bevor wir jetzt völlig aneinander vorbeireden, schicke ich Dir mal ein Beispiel wie ich von einer PHP-Datei über ODBC auf unsere iSeries zugreife und mir Daten raushole. Vielleicht wird dann einiges klarer. Beim odbc_connect musst Du dann einfach nur den Hostnamen, den Benutzer und das Kennwort (im Klartext) mitgeben. Diese Informationen hast Du ja schon durch Deine Intranet-Anmeldung.

<html>
<body>
<?php
$conn=odbc_connect('HOST','Benutzer','Kennwort');
if (!$conn)
{
exit("Connection Failed: " . $conn);
} $sql="SELECT * FROM LIB.DATEI where TSARTN like '305%'";
$rs=odbc_exec($conn,$sql);
if (!$rs)
{ exit("Error in SQL");
}
echo '<table><tr>';
echo '<th align="left" width=150>Artikelnummer</th>';
echo '<th align="left" width=300>Produktname</th>';
echo '<th align="right" width=100>Gesamtbestand</th>';
echo '<th align="right" width=100>verfügbar</th></tr>';
while (odbc_fetch_row($rs))
{$TSARTN=odbc_result($rs,"TSARTN");
$TSBEZG=odbc_result($rs,"TSBEZG");
$TSLBST=odbc_result($rs,"TSLBST");
$TSVBES=odbc_result($rs,"TSVBES");
echo '<tr><td align="left" width=150>'.$TSARTN.'</td>';
echo '<td align="left" width=300>'.$TSBEZG.'</td>';
echo '<td align="right" width=100>'.number_format($TSLBST, 0).'</td>';
echo '<td align="right" width=100>'.number_format($TSVBES, 0).'</td>';}
odbc_close($conn);
echo "</table>";?>
</body>
</html>

JonnyRico
19-10-05, 07:25
Hallo KM,

ja du hast es schon richtig verstanden. Allerdings meinten unsere Spezialisten hier das das nicht funktionieren würde. Denn wenn ich dich richtig verstanden habe dann meinst du einfach über ODBC den Benutzernamen und das Passwort zu vergleichen. Das soll aber anscheinend nicht funktionieren, da du mit ODBC ja nur Datenbankzellen vergleichen kannst und das Passwort wird auf der AS400 verschlüsselt hinterlegt, also kann die Zelle nicht mit einem Klartextpasswort verglichen werden. So sagten es mir zumindest die Profis bei uns...

Mit freundlichen Grüßen

Niko Will

Moin,

ich kenne mich mit PHP zwar nicht aus aber du musst ja nicht selbst auf die "Benutzerdatenbank" zugreifen. Sondern übergibst im Connect den User und das Passwort. Wenn kein Fehler zurück kommt, stimmen die Angaben sonst halt nicht. Wo ist das Problem?

Gruß

Sascha

Fuerchau
19-10-05, 07:30
Sagte ich das nicht bereits ;) ?

JonnyRico
19-10-05, 07:35
Moin,

huch hast Recht. Man sollte vielleicht von oben anfangen zu lesen :D , aber dann verstehe ich das Problem hier wohl nicht.

Fuerchau
19-10-05, 07:42
Das Problem liegt wohl daran, dass bereits eine Verbindung (nämlich zum Lesen von Daten) mit einem "internen" Profil existiert.
Aber was hindert ein Programm denn daran eine 2. Verbindung aufzubauen, die dann wieder getrennt wird ?

martikx
19-10-05, 08:48
Hallo,

zum Thema "mehrmaliges Anmelden vermeiden" habe ich noch einen Tipp:
unsere Vorgehensweise dazu:

Anmelden mit ODBC-Connect
Ablegen der Anmeldeinformationen verschlüsselt in einem Cookie
Auslesen einer Menüdatenbank mit MySQL, die angibt welcher Nutzer welche PHP-Programme aufrufen kann
Starten der PHP-Programme aus dem Menüsystem heraus unter Auslesen des Cookies (weitere Anmeldung bei einem SQL-Zugriff auf iSeries entfällt).
Gruß
martikx

Wu-mc
19-10-05, 12:18
Hallo an alle,

hm... das habe ich so ja auch schon beim ersten mal verstanden und hab das auch so weitergegeben, aber die AS400 Cracks bei uns sagen das geht nicht, da ich kein Klartextpasswort mit einem verschlüsselten über SQL vergleichen kann!?!

Gruß

Niko Will

martikx
19-10-05, 12:34
Hallo,

auch nochmal zum mitschreiben: ID und Kennwort werden nicht mit SQL abgeglichen sondern über den ODBC-Connect verifiziert.

Die Anmeldeinformation kann aber trotzdem für die Dauer der Intranet-Session verschlüsselt abgelegt werden (auf Seite des PCs), so dass eine erneute Anmeldung vermieden werden kann, wenn mit SQL Daten von der AS/400 ausgelesen werden sollen.

Gruß
martikx

Wu-mc
19-10-05, 17:05
Hallo Martikx,

okay, also wenn jetzt soviele Meinungen für den ODBC Connect sind dann wird das schon ne Alternative sein. Hast du, oder sonst irgendjemand, ein Tutorial darüber?

Vielen Dank nochmal für die zahlreichen Antworten.

Mit freundlichen Grüßen

Niko Will

KM
19-10-05, 17:09
Schau doch mal auf folgende Seite. Da steht schon mal einiges darüber:

http://www-aix.gsi.de/doc/PHP4.3_DEUTSCH_FLAT.html#function.odbc-exec

Gruß,
KM