WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik



Im Homepage und Webhosting-Forum --- PW-Schutz am besten realisieren?

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.

Forum » PHP & MySQL » PW-Schutz am besten realisieren? - 23 Nov 2024 Antworten
im Forum für Webhosting Homepage gefunden:
PW-Schutz am besten realisieren?
webworker
Fachidiot
Threadstarter




Beiträge: 115

Hi,

wie kann ich einen Passwort-Schutz mittels PHP am besten realisieren?
Man soll sich bis zu einem Klick auf "Logout", bzw. bis zum Verlassen der Seite auf mehreren Seiten eingeloggt "bewegen" können.

if($user == $row[user] && $pw == $row1[passwort])
{
...
}

...

?
*g*

Wie kann ich es anstellen, dass das PW bis zum Verlassen der Seite / Logout klicken gespeichert wird?


  Profil   Editieren   Zitieren
kingkool
Mausakrobat




Beiträge: 154

ich würd dir entweder cookies vorschlagen, welche eher nicht so geeignet sind ,da nicht alle benutzer des web diese wollen würd ich sagen speicher das ganze in ner serverseitigen session.....

greetz
kool

---
--------------------------------------
http://www.alkool.ch

  Profil   Website   Editieren   Zitieren
Can
Halbgott




Beiträge: 1324

Genau, also prüf beim Login, ob das richtige Passwort angegeben wurde, wenn ja, legst du in ner SQL-Tabelle ne Session-ID an, die du dann in allen Links als Parameter übergibst. Natürlich musst du dann überall überprüfen, ob die Session-ID gültig ist, also ob IP und User-Agent stimmt. Beim Logout (oder nach nem Timeout) wird die Session-ID dann wieder gelöscht.

---
"S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox

  Profil   E-Mail   Editieren   Zitieren
c3o
Posting-Schinder




Beiträge: 585

Das mit den Sessions würde ich dann doch PHP selbst überlassen...
Hier ein schnelles komplettes Beispiel -- andere Seiten müssten nur nach dem Vorbild von index.php aufgebaut werden.. das Login merkt er sich über die Seiten hinweg.

[index.php]

session_start();
include('layout.inc.php'); output_head('Meine erste passwortgeschuetzte Seite');
include('loginout.inc.php');
?>

du bist drin!

output_foot();
?>

-------------------


[loginout.inc.php]

if($_POST['user']) { //loggen wir grad ein?
/* db check hier */
$richtigeruser = 'ich';
if($user == $richtigeruser && $pw == $richtigespw) {
session_register('user');
} else {
echo '

Falscher Login!

';
}
} elseif($_POST['logout']) { //loggen wir grad aus?
session_destroy(); $_SESSION['user'] = '';
}

if(!$_SESSION['user']) { // nicht eingeloggt
echo 'Bitte logge dich ein';
?>

output_foot();
die();
}
?>

Hallo !




-------------------

[layout.inc.php]

function output_head($title) {
?>
<?=$title ?>
}

function output_foot() {
?>

}
?>



Diese Nachricht wurde geändert von: c3o
  Profil   E-Mail   Website   Editieren   Zitieren
webworker
Fachidiot
Threadstarter




Beiträge: 115

Ich habe mich mit den Sessions noch nicht viel beschäftigt, aber wie ich das hier sehe, funktioniert das so:

Der User gibt Name & PW ein, wenn die Daten mit einer vorhandenen Session in der DB nicht übereinstimmen, wird eine neue Session angelegt, und wenn sie übereinstimmen, kommt man zum entsprechenden Inhalt.

Bei den nächsten Seiten wird dann geprüft ob die Daten in der DB (IP, User-Agent) mit den anderen übereinstimmen, wenn ja ... ...

Richtig? (wenn nicht bitte korrigieren...)

Nur verstehe ich folgenden Code nicht:

session_register('user');

Was wird da genau gemacht?

Diese Nachricht wurde geändert von: webworker
  Profil   Editieren   Zitieren
webworker
Fachidiot
Threadstarter




Beiträge: 115

Noch eine Frage...

Wie kann ich soetwas wie automatischen Login machen? (Cookie, ich weiß - aber wie geht das )


  Profil   Editieren   Zitieren
c3o
Posting-Schinder




Beiträge: 585

if($_POST['user']) { //loggen wir grad ein?
Wenn der User das Login-Formular abgeschickt hat...
/* db check hier */
$richtigeruser = 'ich';
if($user == $richtigeruser && $pw == $richtigespw) {
... und das Passwort richtig ist...
session_register('user');
...machen wir $user, also seinen Namen, zu einer Session-Variable, die uns also auf jeder Seite zur Verfügung steht.
} else {
Andernfalls, bei falschem Passwort..
echo '

Falscher Login!

';
...eine Fehlermeldung.
}
} elseif($_POST['logout']) { //loggen wir grad aus?
Wenn der User aber gerade den Logout-Button betätigt hat...
session_destroy(); $_SESSION['user'] = '';
...löschen wir seine Session (sprich in der Praxis dann die Sessiondaten auf dem Server und sein Sessioncookie). Da die Sessionvariablen aber schon beim Abruf des Scripts eingelesen wurden, würde das dann erst ab der nächsten Seite voll gültig, auf dieser haben wir noch die alten Sessionvariable ('user'). Daher leeren wir sie händisch.
}

--- Teil 2 ---

if(!$_SESSION['user']) { // nicht eingeloggt
Wenn es jetzt keine Sessionvariable namens user gibt, ist der Besucher nicht eingeloggt.
echo 'Bitte logge dich ein';
Dazu fordern wir ihn also mit diesem Formular auf...
?>

output_foot();
die();
...und beenden hier die Seite für ihn! Weiter wird dank des die() nicht geparst, wenn der User nicht eingeloggt ist! Möglich wär hier auch ein großes: } else { gewesen, in das dann der gesamte Inhalt kommt. Das ist aber von der Struktur her umständlich, weil irgendwo am Ende diese geschwungene Klammer noch geschlossen werden müsste. PHP würde einen Parse-Error melden, wenn wir die nicht noch in dieser Datei beenden. Wenn, dann würden wir sie aber in der Hauptddatei (index.php), wo der Inhalt steht, am Ende schließen wollen.
}
(end if nicht eingeloggt)
?>

  Profil   E-Mail   Website   Editieren   Zitieren
c3o
Posting-Schinder




Beiträge: 585

soooo, jetzt mit optionalem merk-cookie und md5-verschlüsselung:
http://c3o.org/tools/loginout/

  Profil   E-Mail   Website   Editieren   Zitieren
[SpecFor]crusher
Otto-Normal-Poster




Beiträge: 97

hmm...

fehlt da nicht ein
?

oh, sorry, du includest die Loginprüfung...

Noch ein Script, bitte mal kritisieren.. =)
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: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 
68: 
69: 
70: 
71: 
72: 
73: 
74: 
75: 
76: 
77: 
78: 
79: 
80: 
81: 
82: 
83: 
84: 
85: 
86: 
87: 
88: 
89: 
90:
session_start() ;

$connect = mysql_connect($db["host"], $db["user"], $db["passwort"]);

if (isset($sent))
 {
  if ($sent==1)
    {

          $sql="SELECT user, passwort FROM insolvenz WHERE user='$userid'"      ;
          mysql_select_db($db["database"], $connect);
          $result=mysql_query($sql, $connect)         ;
          if (mysql_num_rows($result)>=1)
              {
               $ergebnis=mysql_fetch_array($result) ;

                if ($ergebnis["passwort"]==$kwort AND $ergebnis["user"]==$userid)
                   {
                    $login="1";
                    session_register("login","userid");
                    include("_header.php");
                    echo "Hallo, Ihre session ID ist ".SID." Login=$login, $userid!
"; echo "Weiter"; include("_footer.php"); } elseif ($ergebnis["passwort"]!=$kwort) { $login="2"; unset($sent); if(isset($versuche)) { $versuche=$versuche+1 ; if($versuche==3) { $sql_eintrag="INSERT INTO login (ip, triedid, tries) VALUES ('$REMOTE_ADDR', '$userid', '$versuche')"; mysql_select_db($db["database"], $connect); mysql_query("$sql_eintrag", $connect); $auslesen=mysql_query("SELECT ip, triedid, tries FROM login", $connect); $result=mysql_fetch_assoc($auslesen); include("_header.php"); foreach($result as $feld) { echo "$feld
" ;} echo "Falsches PW, $versuche Versuche"; include("_footer.php"); } } else { $versuche=1 ; include("_header.php"); echo "Falsches PW, $versuche Versuche"; include("_footer.php"); } session_register("versuche","login"); } } else { $login="3"; unset($sent); include("_header.php"); echo "Benutzer unbekannt"; include("_footer.php"); } } } if ($logout==1) { session_unregister("login"); session_unregister("userid"); unset($login); include("_header.php"); echo "Erfolgreich ausgeloggt!"; include("_footer.php"); }

Ist noch WiP, aber wird später eine Mail mit IP etc. bei mehr als 3 fehlgeschlagenen Login-Versuchen beinhalten..
Könnt ihr mal bewerten das Script, und mal eben ein paar Tipps geben, sit mein erster Versuch in diese Richtung..
achja, der login (in header.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: 
45: 
46: 
47: 
48: 
49: 
50:
          ";
                      echo "Eingeloggt für Fall Nr. ".$userid.". 
"; echo "Logout

" ; } else { ?>
Verwaltungsnr.
Kennwort
Verwaltungsnr.
Kennwort


lasst euch nicht verwirren, mit Verwaltungsnummer meine ich den User. Das hat nur "homepagetechnische" Gründe =)

Diese Nachricht wurde geändert von: [SpecFor]crusher
  Profil   E-Mail   Website   Editieren   Zitieren
Ehemaliges Mitglied (#644)
Forenheld




Beiträge: 832

quark,
macht das doch nicht alles auf die alte weise:
[login.php]
session_start ();

if ($_POST['username'] == $user && $_POST['password'] == $passwort) {
$_SESSION['variable'] == "login";
}
else {
//login schmarrn
}

auf der nächsten seite:

[drinne.php]

session_start ();
if (!$_SESSION['variable'] == "login") {
header ("Location: login.php");
exit;
}

else {
// das zeug das ausgegeben wird wenn alles korrekt ist
}

so geht das heute (ungefähr)

  Profil   Editieren   Zitieren
[SpecFor]crusher
Otto-Normal-Poster




Beiträge: 97

Und was ist daran anders?! außer dass du keine globals verwendest?

  Profil   E-Mail   Website   Editieren   Zitieren
c3o
Posting-Schinder




Beiträge: 585

"alte weise"? "heute"?

deins ist eine abgespeckte, user-unfreundlichere und unfertige version von ziemlich genau dem was ich oben gepostet hab.
mach da mal logout und persistentes cookie dazu, lass es von jeder seite funktionieren ohne dass der user nach dem einloggen irgendwo anders rauskommt als er angefangen hat, und ermögliche die einbindung in jede datei mit genau 2 zeilen code [im beispiel session_start(); & include('loginout.inc.php');], dann können wir gern vergleichen -- ich lerne sehr gern dazu!

Diese Nachricht wurde geändert von: c3o
  Profil   E-Mail   Website   Editieren   Zitieren
Ehemaliges Mitglied (#644)
Forenheld




Beiträge: 832

ja sorry, ich hab das so erklärt bekommen und hab das fürher genauso gemacht wie in den anderen scrits.
der sagte das währe besser und "neuer" !!!
jedem das seine

  Profil   Editieren   Zitieren
[SpecFor]crusher
Otto-Normal-Poster




Beiträge: 97

c3o schrieb am 06.06.2003 22:33
"alte weise"? "heute"?

deins ist eine abgespeckte, user-unfreundlichere und unfertige version von ziemlich genau dem was ich oben gepostet hab.
mach da mal logout und persistentes cookie dazu, lass es von jeder seite funktionieren ohne dass der user nach dem einloggen irgendwo anders rauskommt als er angefangen hat, und ermögliche die einbindung in jede datei mit genau 2 zeilen code [im beispiel session_start(); & include('loginout.inc.php');], dann können wir gern vergleichen -- ich lerne sehr gern dazu!

an wen ging das?

  Profil   E-Mail   Website   Editieren   Zitieren
Ehemaliges Mitglied (#644)
Forenheld




Beiträge: 832

ich denke eher an mich!

  Profil   Editieren   Zitieren
Seite 1 | 2  

Antworten
Forum » PHP & MySQL » PW-Schutz am besten realisieren?

Aktuelle Beiträge zur Hilfe im Forum für Homepage - PW-Schutz am besten realisieren? im Forum Homepage Hosting AntwortenLetztes Posting
Cybersicherheit für Unternehmen
in "PHP & MySQL"
3 18.11.2024 14:05 von Gaswer
Wirtschaftslage in der Ukraine
in "PHP & MySQL"
3 22.10.2024 15:04 von Gaswer
Rangliste (Ohne Mysql) (Kompliziertes Ordner System)
in "PHP & MySQL"
3 19.07.2021 06:00 von newtopblog
kleines problem mit phpadmin
in "PHP & MySQL"
5 11.04.2021 22:22 von Zavylon
Counter mit PHP
in "PHP & MySQL"
4 22.03.2021 16:29 von Robeni
Fehlermeldung beim Importieren der Datenbank in phpmyadmin
in "PHP & MySQL"
0 02.08.2019 22:14 von iFuchs
CMS für Online Shop
in "PHP & MySQL"
18 26.05.2019 13:29 von raiserle
Regestrierungproblem
in "PHP & MySQL"
3 28.11.2018 13:20 von norbertofahey
PHP Datum ausgeben?
in "PHP & MySQL"
1 19.10.2018 10:04 von Klaus1973
PHP befehl ausführen
in "PHP & MySQL"
11 16.08.2018 09:08 von Klaus1973
Visual Composer selber programmieren?
in "PHP & MySQL"
0 22.01.2017 23:45 von Redji



Besucher : 8127827    Heute : 221     Gestern : 761     Online : 210     23.11.2024    9:19      0 Besucher in den letzten 60 Sekunden        
Nach oben