Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Login per Formular (https://www.delphipraxis.net/34541-%5Bphp%5D-login-per-formular.html)

Nicolai1234 24. Nov 2004 14:39


[PHP] Login per Formular
 
Es gibt zwar schon einen Thread mit diesem Titel, aber da steht leider nicht das drin, was ich brauche!

Ich möchte für meine Internetseite gerne eine Passwortabfrage einbauen. Momentan habe ich es so gelöst, dass ich folgenden Teil per include an anfang jeder php-datei setze! Wenn das PW richtig ist, dann geht er weiter und wenn es falsch ist, dann öffnen er eben die seite, wo steht, dass es falsch war und führt den restlichen Code nicht mehr aus!
Code:
<? 
if (!isset($_SERVER['PHP_AUTH_USER']) || ($_POST['SeenBefore'] == 1) && ($_POST['OldUser'] == $_SERVER['PHP_AUTH_USER']) && ($_POST['OldPw'] == $_SERVER['PHP_AUTH_PW']))
{
header("WWW-Authenticate: Basic realm=\"Die Neutralen\" ");
header("HTTP/1.0 401 Unauthorized");
}
$db = mysql_pconnect('***.de',"zensur","*****");
$query = "use neutralz";
   if ( !mysql_query($query, $db) )
     die("Die Datenbank existiert nicht.");
function login()
{
$result = mysql_query("SELECT * FROM `od_forum_users` WHERE username='".$_SERVER['PHP_AUTH_USER']."'")or die (mysql_error());
  $anzahl= mysql_num_rows ($result);
for ($i=0;$i<$anzahl;$i++) {
       $row  = mysql_fetch_row ($result);
       if(md5($_SERVER['PHP_AUTH_PW'])==$row[3]) { $ok=1;} else {$ok=0;};
       }
       return $ok;
}
$a = login();
if ($a==0)
{
header("Location: ./finanzministerium.php");
exit;
}
?>
Damit bin ich eigentlich auch zufrieden, nur geht momentan immer dieses "weniger schöne" Windowslogin-Fenster auf, wo man dann seine Daten eingibt! Kann ich es irgendwie so machen, dass ich diese Variablen (also PW und Name) per Formular eingeben lassen kann?
Mit dem Prinzip, dass ich den code mit include jedesmal einfüge, bin ich eigentlich zufrieden! Daran würde ich also gerne nichts ändern!
Vielen Dank im voraus
Nicolai

jfheins 24. Nov 2004 14:48

Re: [PHP] Login per Formular
 
Das Windoof-Fenster, das aufpoppt, poppt auf, weil du Einen 401 header sendest.

Du müsstest diese Include-Datei so abänderen, dass sie:
:arrow: Statt 401 und 403 Headern einen Location: sendet,
der dann auf die Seite mit "hahahaha, FALSCHES PASSWORT !!!!!!!!" leitet
:arrow: die Formularvariablen verwendet

Nicolai1234 24. Nov 2004 14:50

Re: [PHP] Login per Formular
 
Zitat:

Zitat von jfheins
:arrow: die Formularvariablen verwendet

Aber die Daten werden ja vor dem Aufzuf jeder Seite abgefragt! Die Formulardaten, würden mir doch aber beim Aufruf der nächsten Seite "verloren" gehen, oder?

jfheins 24. Nov 2004 15:19

Re: [PHP] Login per Formular
 
Zitat:

Zitat von Nicolai1605
würden mir doch aber beim Aufruf der nächsten Seite "verloren" gehen, oder?

Sessions

yankee 24. Nov 2004 15:39

Re: [PHP] Login per Formular
 
Ich habe das so gemacht, dass ich eine normales HTML-Formular genommen habe und wenn Passwort richtig, dann wird username und passswd in sessionvariablen gespeichert und erspart so das ständige neueinloggen auf jeder Seite oder das stäöndige anfügen von username und passwd an die Links, was nebenbei auch Sicheheitstechnisch besser ist.
Allerdings brauche ich dafür nur eine einzieg php-Datei. Die entsprechenden php-Dateien für die einzelnen Seiten werden dann per include eingebunden. So brauche ich nur eine Datei mit passwortüberprüfung...

ich bin gerade nicht zu Hause, wenn du dich 'ne Stunde gedulden kannst, kann ich dir die indey.php mal senden...

Nicolai1234 24. Nov 2004 17:00

Re: [PHP] Login per Formular
 
Zitat:

Zitat von yankee
ich bin gerade nicht zu Hause, wenn du dich 'ne Stunde gedulden kannst, kann ich dir die indey.php mal senden...

Gerne

crazynet24 24. Nov 2004 19:09

Re: [PHP] Login per Formular
 
Zitat:

Zitat von yankee
Ich habe das so gemacht, dass ich eine normales HTML-Formular genommen habe und wenn Passwort richtig, dann wird username und passswd in sessionvariablen gespeichert und erspart so das ständige neueinloggen auf jeder Seite oder das stäöndige anfügen von username und passwd an die Links, was nebenbei auch Sicheheitstechnisch besser ist.
Allerdings brauche ich dafür nur eine einzieg php-Datei. Die entsprechenden php-Dateien für die einzelnen Seiten werden dann per include eingebunden. So brauche ich nur eine Datei mit passwortüberprüfung...

Arbeitest Du dabei auch ohne Cookies oder wie stellst Du sicher, dass jede weitere Kommunikation auch von immer der selben Gegenstelle kommt?
Mich würde Deine Datei mal interessieren weil ich auch über was "selbstgestricktes" Nachdenke...

viele Grüße

yankee 24. Nov 2004 21:22

Re: [PHP] Login per Formular
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, im Anhang die PHP-Datei.
Ist eine leicht "zensierte veränderte" Version, die
1. besser verständlcih sein sollte und
2. die ich mit gutem gewissen raugeben kann, da keine Infos enthalten.

Die function dbstart() macht nichts anderes als verbindung zur DB herzustellen, die db zu selecten und in die die connection zu returnen. Ganz unten habe ich zum Verständnis noch zwei Funtionen aus der shared reinkopiert...

Ansonsten solltet ihr für die include-dateien nat. einen Ort wählen, der vom web aus nicht erreichbar ist, sonst habt ihr ein Sicherheitsproblem (irgendwo in der httpd.conf vom apache kann man einen include-Pfad einstellen)

Bei fragen nicht verzagen, sondern einfach yankee fragen ;-)

crazynet24 26. Nov 2004 09:45

Re: [PHP] Login per Formular
 
Danke erstmal,

Zitat:

Ansonsten solltet ihr für die include-dateien nat. einen Ort wählen, der vom web aus nicht erreichbar ist, sonst habt ihr ein Sicherheitsproblem (irgendwo in der httpd.conf vom apache kann man einen include-Pfad einstellen)
auch für den Tip, der war mir bisher unbekannt...

Mir persönlich ist dabei nur nicht ganz klar, wie man den Nutzer eindeutig über die gesamte Session identifiziert, solange man nicht entweder Cookies setzt oder Variaben austauscht. Hast Du da eine Erklärung für?

fiasko 26. Nov 2004 09:58

Re: [PHP] Login per Formular
 
Hallo,

Zitat:

Zitat von crazynet24
Mir persönlich ist dabei nur nicht ganz klar, wie man den Nutzer eindeutig über die gesamte Session identifiziert, solange man nicht entweder Cookies setzt oder Variaben austauscht. Hast Du da eine Erklärung für?

das PHP generiert für jeden Benutzer eine eindeutige Session-ID wenn sie die Seite das erste mal aufrufen. Im einfachsten fall bekommt der Brwoser dann ein Cookie mit der ID zurück und übergibt diesen dann bei jeder weiteren Anfrage. Anhand der ID ist es PHP auch möglich für jeden "Benutzer" persistente Variablen zuzuweisen.

Falls Cookies nicht erlaubt sind gibt es noch den Ausweg das man die ID als Parameter an die PHP Datei übergibt. Wie das genau geht müßtest du mal das PHP-Manual lesen.

crazynet24 26. Nov 2004 15:04

Re: [PHP] Login per Formular
 
Zitat:

das PHP generiert für jeden Benutzer eine eindeutige Session-ID wenn sie die Seite das erste mal aufrufen. Im einfachsten fall bekommt der Brwoser dann ein Cookie mit der ID zurück und übergibt diesen dann bei jeder weiteren Anfrage. Anhand der ID ist es PHP auch möglich für jeden "Benutzer" persistente Variablen zuzuweisen.
also wird automatisch doch ein Cookie beim Client gesetzt, wenn session_start() aufgerufen wird? Somit ist natürlich klar, dass der Client eindeutig identifiziert werden kann.


Zitat:

Falls Cookies nicht erlaubt sind gibt es noch den Ausweg das man die ID als Parameter an die PHP Datei übergibt. Wie das genau geht müßtest du mal das PHP-Manual lesen
Man kann sich selbst eine eindeutige ID generieren und diese für die Verweildauer des Aufenthalts des Besuchers ständig über GET/POST/Adressanhang weiterreichen. Nachteil ist eben, dass beim Verlassen der Seite auf die Session hinüber ist, da die ID nicht fest in Datei gespeichert wird.

yankee 26. Nov 2004 16:32

Re: [PHP] Login per Formular
 
Zitat:

Zitat von crazynet24
Mir persönlich ist dabei nur nicht ganz klar, wie man den Nutzer eindeutig über die gesamte Session identifiziert, solange man nicht entweder Cookies setzt oder Variaben austauscht. Hast Du da eine Erklärung für?

Ich habe auch was gebraucht, bis ich gechekt habe, wie es funktioneiert. Aber es ist tatsächlich ganz simpel. Ich greife NUR in der geposteten Datei auf session-Funktionen zurück, sonst nirgends.
PHP macht dabei (fast) alles automatisch.
Mit dem Befehl
session_start()
bekommt der client per cookie eine ID zugewiesen. Wenn die ID bereits existiert (also wenn das nicht die erste Seite ist, die der User aufruft), wird die vorhandene Session fortgeführt. Jetzt kannst du Session-Variablen speichern:
$_SESSION["blabla"] :="mein Variableninhalt";
$_SESSION ist also ein assoziativer Array, in dem du einfach was reinspeichern kannst, was bei einem weiteren Seitenaufrufs des gleichen Users wieder in der Variable drin steht. Ich nutze das, um Passwort und Username zu speichern...
Um alle Sessionvariablen wieder zu löschen kannst du diese Funktion benutzen:
session_unset() //löscht alle session-Variablen
und um die session danach grundsätzlich zu beenden:
session_destroy()

Airblader 26. Nov 2004 16:44

Re: [PHP] Login per Formular
 
Ich habe zwangweise mal ein LogIn gemacht, basierend auf PHP&MySQL, weil ich damals ein GB gemacht habe.

Das GB selber wurde nie fertig (wurde langweilig), der Login aber wurde ja gleich am Anfang gemacht.

Wenn interesse besteht, pack ich mal die funktionen dazu beieinander und poste sie.

air

mh166 27. Nov 2004 19:31

Re: [PHP] Login per Formular
 
Mich würde das interessieren! Gib mal bitte!

mfg, mh166

Generalissimo 27. Nov 2004 20:20

Re: [PHP] Login per Formular
 
Noch ein Tip: Niemals Passworter solala speichern, sonder mit MD5(Passwort) - Funktion ein Hash machen den speichern und diesen auch immer vergleichen.

PS: denkt bei Cookies daran, das es User gibt, die diese abschalten

crazynet24 27. Nov 2004 21:05

Re: [PHP] Login per Formular
 
Naja, ich setze voraus, dass Nutzer Cookies anschalten, zumindest für die Verweildauer des Besuches. Wer diese nicht einschaltet, muss auf mein Webangebot verzichten. Ich halte das aber auch für ok, denn wer sich informiert, sollte schnell feststellen, dass Cookies völlig harmlos sind und allenfalls zum Usertracking missbraucht werden können.
Aber um ganz sicher zu gehen dass es auch bei Cookieparanoiden läuft kann sonst nur noch eine Session-ID über die Browserzeile weitergereicht werden, was in meinen Augen umständlich erscheint, außerdem durch den Anwender manipulierbar ist.

wo ich grad beim Thema bin:
@yankee:
Es gibt doch auch die Möglichkeit mit session_register anstatt
$_SESSION["blabla"] :="mein Variableninhalt";

Ich habe damit bisher öfters herumexperimentiert, allerdings nie zuverlässig auf die session-registrierten variablen zurückgreifen können. Ich nutze daher ebenfalls die $_SESSION["blabla"] Methode.
Hast Du damit Erfahrung?

mh166 29. Nov 2004 18:54

Re: [PHP] Login per Formular
 
Zitat:

Zitat von Airblader
Wenn interesse besteht, pack ich mal die funktionen dazu beieinander und poste sie.

Wie gesagt: ich hätte Interesse daran und es wäre nett, wenn du sie posten könntest!

mfg, mh166


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz