Flashhilfe.de - Flash Community

??? passwort geschützter bereich mit php

 


AntwortenRegistrieren Seite1  

abgemeldeter Benutzer#1
07.01.2005, 18:08

hallo leute,

Ich habe mich schon immer gefragt, wie man mit php ein formular zum einloggen
in eine geschützten bereich erstellt. Ich habe immer wieder gehört, dass das
nicht funktioniert, aber wie funktioniert das dann auf Internetseite wie z.B.
amazon.com oder andere seiten, wo man sich durch ein kleines login formular
einloggt? Irgendwelche hinweise? wo kann ich so ein script herunterladen? Danke.

~i love flash~
Michael1604#2
Benutzerbild von Michael1604
Beiträge: 8
Wohnort: Berlin
Registriert: Jan 2005

08.01.2005, 09:05

Welche Art von Login/Authentifizierung meinst Du denn genau?

Es gibt einmal die Möglichkeit, daß Du die Authentifizierung gegenüber der
Serversoftware (z.B. Apache) brauchst. Notwendig um überhaupt Inhalte
eines Directorys angezeigt zu bekommen, oder aber die Authentifizierung
innerhalb eines Skripts wie z.B. die Anmeldung hier im Forum.

Ich denke mal es handelt sich um den 2.Fall. ;-)

Du legst Dir einfach eine MySQL-Datenbank mit den Benutzerdaten an, die beim
Login abgefragt werden soll.

Der relevante Teil Deines Skriptes sieht dann ungefähr so aus:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
session_start
();
switch(
true){
    case 
$do=="logout":
       
session_unregister("username,passwort,login");
       
session_unset();
       
session_destroy();
    break;
    case 
$do=="login":
       
$pw =mysql_query("SELECT username,passwort FROM adminpw WHERE username = '$username' AND passwort = '$passwort'");
       
$num =mysql_num_rows($pw);

        if(
$num!=1){
            echo(
'<SPAN CLASS="warning">Sorry, falsches Passwort oder Benutzername.</SPAN>');
        }
        else{
           
$login=1;
           
session_register("username","passwort""login");
        }
    break;
}
?>


Ich bevorzuge die hier beschriebene Methode unter Verwendung von Sessions
anstatt Cookies. Sessions werden serverseitig angelegt, Cookies werden beim Client angelegt. Wenn der User Cookies nicht erlaubt, dann würde das in die Hose gehen. ;)

Gruß Michael

abgemeldeter Benutzer#3
Themenautor/in

08.01.2005, 09:57

Damit kenne ich mich leider überhaupt nicht aus, aber wie du erraten
hast handelt es sich um den 2.Fall. Ich werde das script einmal ausprobieren!
Also erstmal vielen Dank für deine Hilfe. su~ma

~i love flash~
abgemeldeter Benutzer#4
Themenautor/in

08.01.2005, 11:22

hallo nochmal,

vorweg gesagt ich kenne mich mit php nicht wirklich gut aus, aber ich habe
dein script ausprobiert. Das ganze habe ich so aufgebaut:

eine index.php file mit dem formular zum einloggen. Sieht so aus:

action: login.php
method: POST
enctype: application/x-www-form-urlencoded


im login.php file habe ich dein script untergebracht:


<?

session_start();
switch(true){
    case $do=="logout":
        session_unregister("username,passwort,login");
        session_unset();
        session_destroy();
    break;
    case $do=="login":
        $pw =mysql_query("SELECT username,passwort FROM adminpw WHERE username = '$username' AND passwort = '$passwort'");
        $num =mysql_num_rows($pw);

        if($num!=1){
            echo('<SPAN CLASS="warning">Sorry, falsches Passwort oder Benutzername.</SPAN>');
        }
        else{
            $login=1;
            session_register("username","passwort", "login");
        }
    break;
}
?>

jetzt soll, falls username und password stimmen, der benutzer zu
einer dritten file intern.php weitergeleitet werden.

Meine Fragen: Stimmt das soweit ? & Wie erstelle ich die mySQL datenbank
mit den benutzernamen und passwörtern ? wie sieht das ungefähr aus ?

Wie man sieht bin ich auf diesem gebiet nicht sehr bewandert deswegen bin
ich auf deine (eure) hilfe angewiesen. Danke

~i love flash~
Michael1604#5
Benutzerbild von Michael1604
Beiträge: 8
Wohnort: Berlin
Registriert: Jan 2005

09.01.2005, 09:08

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
--
-- Table structure for table `adminpw`
--

DROP TABLE IF EXISTS adminpw;
CREATE TABLE adminpw (
  adminname varchar(20) NOT NULL default '',
  passwort varchar(10) NOT NULL default '',
  PRIMARY KEY  (adminname)
) TYPE=MyISAM;

--
-- Dumping data for table `adminpw`
--

INSERT INTO adminpw (adminname, passwort) VALUES ('Name','passwort');


So sollte Deine Tabelle in der Datenbank aussehen. Es ist die simple Methode, sprich die Passwörter liegen in unverschlüsselter Form in der Datenbank.

Ich stelle Dir mal ein kommentiertes Beispielskript bereit.
Da ich denke das würde den Rahmen des Forums sprengen und ich mir keine Rüge
von Sebastian einfangen möchte kontaktierst Du mich diesbezüglich besser per E-Mail. ;-)

Gruß Michael

Sebastian#6
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6981
Wohnort: München
Registriert: Jan 2002

10.01.2005, 19:07

>> Forums sprengen und ich mir keine Rüge von Sebastian einfangen möchte
Nee nee nee. So was mach ich nicht.

Poste das Script bitte hier. Dann haben alle was davon.

Grüsse,
Sebastian Wichmann

Flashhilfe.de Webmaster
http://www.flashhilfe.de
JavaScript & JavaFX Freelancer || Flashhilfe @ Twitter || XING Profil
Michael1604#7
Benutzerbild von Michael1604
Beiträge: 8
Wohnort: Berlin
Registriert: Jan 2005

17.01.2005, 12:31

Vielen Dank für Dein Angebot das Skript hier zu posten.
Doch nach langem Hin und Her habe ich mich entschlossen doch eher ein Paket mit allem was man braucht (css, includes etc.) bereitzustellen welches nach entpacken und anlegen der DB auch gleich funktioniert.

Alles hier in einzelnen Skripten zu posten dient nicht gerade der Übersichtlichkeit und hilft somit keinem wirklich.

Wer also will, der wende sich vertrauensvoll per e-mehl an mich.
Ich bin gerne bereit jedem bei Fragen zu helfen.

Gruß Michael

abgemeldeter Benutzer#8
Themenautor/in

17.01.2005, 18:30

Hallo Leute
Erstmal schönen Dank für alles, aber leider habe ich noch ein paar Probleme:

Ich habe drei felder beim einlogg-bereich: name / password / email:
Leider funktioniert das etwas nicht ganz.

Hier ist das script für den login:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
session_start
();
session_register("username");

include (
'config.php');

$password=crypt($password,$schluessel);
$password .= "\n";
$log=0;

$userdatei fopen ("user.txt","r");
while (!
feof($userdatei)) 
{
$zeile fgets($userdatei,50);
$userdata explode("|"$zeile);
if (
$userdata[0]==$username && $userdata[1]==$password)
{
$log=1;
}
}


fclose($userdatei);


if (
$log==1){
}   else
    {
    echo 
"wrong password or username";
    }
?>


in der config.php steht folgendes:

PHP:
1
2
3
4
5
<?
$schluessel 
"SM";
$loginseite "intern.php";
$logoutseite "index.php";


das Anmelden übernimmt das script:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?
include("config.php");

$user_name = array();
if (
$username == "" || $password == "")
{
echo 
"<font color=\"#990000\">please fill in all fields</font><br><a href=\"\" onClick=\"history.forward()\">back</a>";
}
else
{
$userdatei fopen ("user.txt","r");
while (!
feof($userdatei)) 
{
$zeile fgets($userdatei,100);
$userdata explode("|"$zeile);
array_push ($user_name,$userdata[0]);
}
fclose($userdatei);

if (
in_array($username,$user_name))
{
echo 
"<b><font color=\"#FF0000\">username already exists</b></font><br><a href=\"\" onClick=\"history.forward()\">back</a>";
}
else
{
if (
$password==$password2)
{
$userdatei fopen ("user.txt","a");
fwrite($userdatei$username);
fwrite($userdatei"|");
$password=crypt($password,$schluessel);
fwrite($userdatei$password);
fwrite($userdatei"\n");
fclose($userdatei);
echo 
"registration successful<br><a href=\"$loginseite\">login here</a>";
}
else
{
echo 
"<b><font color=\"#FF0000\">wrong password</b></font><br><a href=\"$loginseite\">back</a>";
}
}
}
?>


in den geschützten seiten ist folgendes script:

PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php
session_start
();
?>

<?
if (!session_is_registered('username'))
{
die (
"you must login first");
}
?>


ich als anfänger weiß leider nicht was da nicht stimmt !
welches script muss in die seite nach dem man sich abgemeldet hat ?

Danke vielmals.

~i love flash~
MadHatter#9
Benutzerbild von MadHatter
Beiträge: 6
Registriert: Jan 2005

21.01.2005, 11:51

wieß ja nicht, ob hier noch ne antwort kommt, wollte aber trotzdem mal ne Frage dazwischen werfen, weil sie gut dazu passt.

Meine Frage gilt der SessionID.
Ich habe es irgendwo gesehen, dass diese in der Datenbank gespeichert wurden. Soviel ich weiß, verwaltet Apache ja selbst die SessionsIDs. Wozu dann also noch das Speichern in der DB.
Würde mich mal interessieren ob das irgendwelche Vorteile hat.

-------------------
if($ahnung==0) {
read('handbuch');
}
------------------------
if($ahnung==0) {
read(\'handbuch\');
}
Geändert von MadHatter am 21.01.05 um 11:52 Uhr
Michael1604#10
Benutzerbild von Michael1604
Beiträge: 8
Wohnort: Berlin
Registriert: Jan 2005

22.01.2005, 15:33

Vielleicht sagst Du uns mal was denn funktioniert und/oder über was sich PHP beschwert. Es muß doch eine Fehlermeldung geben, oder?

Gruß Michael


AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2022 Sebastian Wichmann - Flashhilfe.de