Passwortverwaltung realisieren
benny
- php
0 Johannes Zeller0 benny0 Johannes Zeller0 benny0 Oliver0 Johannes Zeller0 Tom
0 Tom
Hallo Community,
ich möchte gerne einen Passwortverwaltung für mehrere User via PHPmyAdmin durch eine MySQL Datenbank realisieren. Hat jemand
Erfahrung damit und mit der Einbindung in index.php Datei.
Ich bekomme einfach nicht den connect zu der Datenbank Anbindung
hin! Hat jemand Erfahrung mit der Einbindung der MySQL in die index.php?
Es handelt sich um ca. 10 User ist es vielleicht sinnvoller,
eine .inc Datei auszulagern?
Wie ist es eigentlich am sinnvollsten das Formular zu realisieren es soll ja vor der index.php laufen als formular.php wo sich die User anmelden.
Mein Lösungsansatz ist bis jetzt dieser:
<?php
// Session starten wenn ?section=admin geöffnet wurde
if(isset($_GET['section']) AND ("admin" == $_GET['section'])) {
session_start();
if(!isset($_SESSION['IP'])) {
$_SESSION['IP'] = $_SERVER['REMOTE_ADDR'];
}
if($_SESSION['IP'] != $_SERVER['REMOTE_ADDR']) {
echo "<p>\n";
echo " <a href="/">Zurück zur Homepage</a>\n";
echo "</p>\n";
die(); // Die Abarbeitung beenden sofort
}
echo "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\n";
echo " "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n";
echo "<html>\n";
echo " <head>\n";
echo " <title>index.php</title>\n";
echo " <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />\n";
echo " <link rel="stylesheet" type="text/css" href="page.css" />\n";
echo " </head>\n";
echo " <body>\n";
echo " <table style="width: 100%">\n";
echo " <tr>\n";
echo " <td colspan="2">\n";
include "banner.php";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td style="width: 200px">\n";
include "menu.php";
echo " </td>\n";
echo " <td>\n";
include "inhalt.php";
echo " </td>\n";
echo " </tr>\n";
echo " </table>\n";
echo " </body>\n";
echo "</html>\n";
?>
Many Thanks for your assistance in this case :-)
Benny
Hallo Benny,
Ich bekomme einfach nicht den connect zu der Datenbank Anbindung
hin! Hat jemand Erfahrung mit der Einbindung der MySQL in die index.php?
Wie hast du denn bisher versucht, um eine Verbindung mit der Datenbank aufzubauen und woran (Fehlermeldungen, etc.) ist es gescheitert?
Schöne Grüße,
Johannes
Wie hast du denn bisher versucht, um eine Verbindung mit der Datenbank aufzubauen und woran (Fehlermeldungen, etc.) ist es gescheitert?
Ich würde es so versuchen:
<?php
error_reporting(E_ALL);
include "";
@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
Ich muss dazu sagen, das ich noch nicht so oft mit PHPmyAdmin zu tun hatte. Aber wie Du sicherlich weisst steigen ja stetig die Ansprüche, bin bei PHP und MySQL noch nicht ganz angekommen :-)
Danke für Feedback!
Hallo Benny,
Ich würde es so versuchen:
Warum würdest du das nur tun, und tust es nicht direkt?
@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
Lass das @ weg, das verwirrt nur beim Debuggin. In einer Produktivumgebung solltest du eh die Anzeige von Fehler über die entsprechende Konfigurationsoption abstellen und stattdessen in ein Log-Datei schreiben lassen.
Ich würde dir ja gerne helfen, aber bisher hast du noch nicht wirklich erklärt, wo du ein Problem hast, das erschwert die Sache etwas ;-)
Schöne Grüße,
Johannes
Hey nochmal,
OK @ nehme ich weg und (Mysql_error()); nehme ich raus, im Moment teste ich nur local.
In der Tat ist wirklich etwas schwammig von mir alles.
Ich beschreibe es mal was ich eigentlich auf die Beine stellen möchte.
1.Es sol eine Page entstehen wo sich User einloggen können.
2.Wenn dies passiert ist wird der User auf die Homepage geleitet.
3.Das ist erstmal mein Grundgedanke!
Wie würdest Du eine Passwort Verwaltung realisieren?
:-)
Das Problem dürfte eher ein Berechtigungsproblem sein.
Die Kennwörter werden in mysql/user gespeichert und darauf haben die User im Normalfall nur Leserecht (sonst wird die Sache sehr unsicher!).
Ich trenne die User von Webseite und SQL. Die Webseite greift immer mit einem festen User/Passwort auf die Datenbank zu, der Zugriff auf die Webseite mache ich mit sessions und eine Datei in welcher ich User,Kennwort und Tabellennamen speichere.
Hallo Benny,
1.Es sol eine Page entstehen wo sich User einloggen können.
2.Wenn dies passiert ist wird der User auf die Homepage geleitet.
3.Das ist erstmal mein Grundgedanke!Wie würdest Du eine Passwort Verwaltung realisieren?
Ich würde, dies den Server erledigen lassen. Es gibt aber auch Situationen, wo man es mit PHP selber realisieren will.
Aber die Frage "wie würdet ihr das realisieren" ist einfach zu allgemein. Du musst schon erstmal selber überlegen, wie _du_ es realisieren würdest. Wenn du dir nicht sicher bist, ob deine Ideen wirklich so gut sind, kannst du deinen Vorschlag gerne erstmal hier zu Diskussion stellen. Dann kann man dir auch konkret sagen, welche Dinge nicht so gut wären und wie man das besser lösen kann.
Schöne Grüße,
Johannes
Hello,
Ich würde, dies den Server erledigen lassen. Es gibt aber auch Situationen, wo man es mit PHP selber realisieren will.
MMn ist dieser Zugriffsschutz nicht dynamisch einsetzbar.
Wenn sich während der Session (hier durch HTTP AUTH) an den Rechten etwas ändert, kommt der Client ins Schleudern.
Oder ist diese Macke (nochmaliges Senden von Status 401 löscht nicht die Zugangsdaten am Client) bei neueren Browsern nun behoben?
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hello benny,
ich möchte gerne einen Passwortverwaltung für mehrere User
Ok, bis hierher konnte ich es verstehen
via PHPmyAdmin durch eine MySQL Datenbank realisieren.
Nun wird es diffus. Möchtest Du für den phpMyAdmin eine Userverwaltung einrichten?
Oder möchtest Du die MySQL-Usertabellen "nur" mit phpMyAdmin verwalten?
Hat jemand Erfahrung damit
Ja. Im Prinzip schon. Aber: ...
Du müsstest spezifizieren, auf was die User einen (beschränkten) Zugriff haben sollen.
Sollen sie auf die MySQL-Datenbank direkten Zugriff haben, also z.B. über Port 3306,
oder sollen sie über ein HTTP-Interface auf Tabellen der Datenbank (beschränkten) Zugriff
haben. Dann wird es nämlich komplizierter. Der Erstzugriff wird immer erst durch einen
Stellvertreter stattfinden müssen, der evtl. die gültigen Rechte auslesen darf. Dann muss
auf der MySQL-Zugriff auf den tatsächlichen User innerhalb des PHP-Scriptes umgeschaltet werden
http://dev.mysql.com/doc/refman/5.1/en/mysql-change-user.html und
http://de2.php.net/manual/en/function.mysql-change-user.php
Alternativ kann man auch eine zweite Connection zum DBMS eröffnen.
und mit der Einbindung in index.php Datei.
Da kann ich Dir nun wieder nicht folgen, weil ich nicht weiß, was deine "index.php" alles
leisten soll später, oder ob es auch eine "login.php" gibt usw.
Ich bekomme einfach nicht den connect zu der Datenbank Anbindung
hin!
Wie wird denn die Verbindung aufgebaut und welche Statusmeldungen der Datenbank oder
Fehlermeldungen der API (PHP) kommen?
<?php
// Session starten wenn ?section=admin geöffnet wurde
if(isset($_GET['section']) AND ("admin" == $_GET['section'])) {
session_start();
if(!isset($_SESSION['IP'])) {
$_SESSION['IP'] = $_SERVER['REMOTE_ADDR'];
}
if($_SESSION['IP'] != $_SERVER['REMOTE_ADDR']) {
echo "<p>\n";
echo " <a href="/">Zurück zur Homepage</a>\n";
echo "</p>\n";
die(); // Die Abarbeitung beenden sofort
}echo "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\n";
echo " "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n";
echo "<html>\n";
echo " <head>\n";
echo " <title>index.php</title>\n";
echo " <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />\n";
echo " <link rel="stylesheet" type="text/css" href="page.css" />\n";
echo " </head>\n";
echo " <body>\n";
echo " <table style="width: 100%">\n";
echo " <tr>\n";
echo " <td colspan="2">\n";
include "banner.php";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td style="width: 200px">\n";
include "menu.php";
echo " </td>\n";
echo " <td>\n";
include "inhalt.php";
echo " </td>\n";
echo " </tr>\n";
echo " </table>\n";
echo " </body>\n";
echo "</html>\n";
?>
Nur für zukünftige Postings:
HTML benötigen wir hier für die Problemlösung nicht, denn es geht ja nicht um HTML, sondern um PHP und MySQL. Außerdem solltest Du Dir von vornherein angewöhnen, Aufgaben in Funktionen aufzuteilen, die ganz spezielle Fehlerwerte (Results, Statusmeldungen) zurückgeben.
Es hat sich in der Praxis bewährt, den Funktionen ein Fehlerergebnis beizubringen.
0 = kein Fehler
1 = ...
2 = ...
Da bist Du frei in der Gestaltung, nur die 0 für kein Fehler ist irgendwie Standard.
Und die Daten tauschst Du dann über einen "Blockbuffer" aus. Bei PHP beiten sich da referenzierte Arrays als Funktionsargument an, also beispielsweise so:
function open_db (&$_dbdata)
{
if (!is_array($_dbdata) and ....) return 1; ### Fehler bei der Datenübergabe
## hier alles machen...
## Alles OK bis zum Schluss?
return 0;
}
Sowie die Schachtelung in Bedingsebenen zu tief wird, darüber nachdenken, ob sich stattdessen nicht eine eigene Funktion lohnt. Leider kennt PHP keine Private Functions...
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom