Session Login
Michael
- php
0 ichen0 Michael0 ichen0 Michael0 ichen0 Sascha Knappe0 Michael
0 Andreas Korthaus0 Alain
Hallo Beisammen!
Ich habe ein Problem mit folgendem Tutorial:
http://www.webmaster-resource.de/tricks/php/login-mit-sessions.php
Also den Login usw. hab ich schon gemacht, nur habe ich ein Problem, wenn ich weitere Inhalte schützen will.
Da steht im Tutorial:
"Diese Session-Variable $SESSION_Passwort steht Ihnen auch, nachdem der Benutzer auf eine weitere Seite des geschützten Bereichs gesurft ist, zur Verfügung. Sie können also die weiteren Seiten ganz einfach schützen, in dem Sie deren Inhalt mit dem folgenden Grundgerüst umgeben. Hat sich der Besucher vorher erfolgreich eingeloggt, wird der Inhalt angezeigt, ansonsten die Meldung er solle sich einloggen."
Und weiter unten im Script steht ja dann
if($SESSION_Passwort==$Zugangspasswort)
{
//Notieren Sie hier den geschützten Inhalt der Seite
}
else
Wenn ich jetzt eine komplette PHP-Seite mit HTML-codes usw. mit dem Grundgerüst umgebe, kommt folgender Error:
Parse error: parse error, unexpected '<' in C:\Dateipfad\geheim.php on line 29
Kann man das irgendwie so machen, dass man diese PHP-Seite trotzdem irgendwie schützen kann (das wenn man den Dateinamen im Browser eingibt, der Satz "Sie sind nicht berechtigt diese Seite anzuschauen!" kommt) ?????
Ich arbeite nämlich gerade an einem Mini-CMS und da muss ich natürlich den Admin-Bereich schützen.
Danke im Voraus,
Michael
Moin!
wie lautet der code um zeile 29 rum? könnte helfen.
tschüss ichen
Moin!
Das ist dann dort, wo der Inhalt der geschützt gewollten Seite beginnt!
Moin!
es gibt viele gründe für eine solche fehlermeldung:
schau dir den quelltext mal an, ansonsten poste ihn mal
tschüss ichen
Ja, ich kann den Quelltext ja posten:
<?php
session_start();
?>
<html>
<head>
<title>miniCMS Adminoberfläche</title>
</head>
<body>
<?php
$Zugangspasswort = "admin";
if($SESSION_Passwort==$Zugangspasswort)
{
//Notieren Sie hier den geschützten Inhalt der Seite
//Das ist der Anfang vom Mini-CMS
<h1>Adminbereich</h1>
<table>
<tr>
<td style="vertical-align:top; padding-right:50px; border-right:1px solid #000099">
Menü<br>
<ul>
<li><a href="admin.php?id=home">Home</a></li>
<li><a href="admin.php?id=news">News</a></li>
<li><a href="admin.php?id=links">Links</a></li>
<li><a href="admin.php?id=kontakt">Kontakt</a></li>
</ul>
</td>
<td style="vertical-align:top;">
<!-- CONTENT MANAGEMENT ANFANG -->
<?php
##speichern des Pfades zur Inhaltsseite
switch($_GET['id']){
case 'news':
$datei = '../news.html';
break;
case 'links':
$datei = '../links.html';
break;
case 'kontakt':
$datei = '../kontakt.html';
break;
default:
$datei = '../home.html';
}
//und so weiter und so fort......
}
else
{
echo"Sie sind nicht berechtigt die Seite anzuzeigen!<br>Bitte loggen Sie sich vorher <a href="login.php">hier</a> ein.";
}
?>
</body>
</html>
Ja und das geht bei mir nich!
Moin!
<?php
session_start();
?>
<html>
<head>
<title>miniCMS Adminoberfläche</title>
</head>
<body><?php
$Zugangspasswort = "admin";
if($SESSION_Passwort==$Zugangspasswort)
{
//Notieren Sie hier den geschützten Inhalt der Seite
//Das ist der Anfang vom Mini-CMS
?>
<h1>Adminbereich</h1>
<table>
<tr>
<td style="vertical-align:top; padding-right:50px; border-right:1px solid #000099">
Menü<br>
<ul>
<li><a href="admin.php?id=home">Home</a></li>
<li><a href="admin.php?id=news">News</a></li>
<li><a href="admin.php?id=links">Links</a></li>
<li><a href="admin.php?id=kontakt">Kontakt</a></li>
</ul>
</td>
<td style="vertical-align:top;"><!-- CONTENT MANAGEMENT ANFANG -->
<?php
##speichern des Pfades zur Inhaltsseite
switch($_GET['id']){
case 'news':
$datei = '../news.html';
break;
case 'links':
$datei = '../links.html';
break;
case 'kontakt':
$datei = '../kontakt.html';
break;
default:
$datei = '../home.html';
}//und so weiter und so fort......
}
else
{
echo"Sie sind nicht berechtigt die Seite anzuzeigen!<br>Bitte loggen Sie sich vorher <a href="login.php">hier</a> ein.";
}?>
</body>
</html>
du hast da auch ein ?> vergessen (nach //Notieren Sie hier den geschützten Inhalt der Seite //Das ist der Anfang vom Mini-CMS)
tschüss ichen
Hallo Michael,
du musst nach dem
if($SESSION_Passwort==$Zugangspasswort)
{
den PHP-Abschnitt mit einem ?> beenden.
Du vermischt gerade PHP und HTML.
Schönen Gruß aus München
die knappschaft
ja, aber dann trenne ich den Code ja mitten zwischen if und else!
Hallo Michael,
ja, das machst du. Ist aber völlig okay.
Schönen Gruß aus München
die knappschaft
Hallo Michael,
ja, das machst du. Ist aber völlig okay.
Das funktioniert nicht, es steht zwar dann sie sind nicht berechtigt..., aber auch wenn ich mich einlogge steht das!
Hallo Michael,
lass dir doch mal die Variable $SESSION_Paßwort mit einem echo ausgeben. Wenn da nicht admin drin steht, dann solltest du vielleicht auf $_POST['SESSION_Paßwort'] oder $_GET['SESSION_Paßwort'] nehmen, je nachdem, wie du den Wert übergibst...
Schönen Gruß aus München
die knappschaft
Hallo, bei mir steht dann gar nichts!
vielleicht auf $_POST['SESSION_Paßwort'] oder $_GET['SESSION_Paßwort'] nehmen, je nachdem, wie du den Wert übergibst...
wie meinst du das, wohin den wert?
Michael
if($login && $Passwort==$Zugangspasswort)
{
session_start();
session_register("SESSION_Passwort");
$SESSION_Passwort=$Passwort;
}
änderst du in
if($_POST['login'] && $_POST['Passwort'] == $Zugangspasswort){
session_start();
$_SESSION['SESSION_Passwort'] = $_POST['Passwort'];
}
=============
if($SESSION_Passwort==$Zugangspasswort)
anderst du in
if($_SESSION['SESSION_Passwort'] == $Zugangspasswort)
=============
dann sollte das auch gehen :)
wenn der Code Fehlerfrei sein soll, musst du natürlich auch prüfen, ob $_POST[#xxx#] überhaupt vorhanden ist ;)
Beispiel:
if($_SESSION['SESSION_Passwort'] == $Zugangspasswort)
muss dann
if(isset($_SESSION['SESSION_Passwort']) && $_SESSION['SESSION_Passwort'] == $Zugangspasswort)
lauten
===========
if($_POST['login'] && $_POST['Passwort'] == $Zugangspasswort){
session_start();
$_SESSION['SESSION_Passwort'] = $_POST['Passwort'];
}
muss dann
if(isset($_POST['login']) && isset($_POST['Passwort']) && $_POST['Passwort'] == $Zugangspasswort){
session_start();
$_SESSION['SESSION_Passwort'] = $_POST['Passwort'];
}
lauten
Ich hab es geändert, das passwort stimmt dann nicht mehr!
hier hab ich mal das Vorgabescript abgeändert....
================================================================================
1 <html>
2 <head>
3 <title>Login</title>
4 </head>
5 <body>
6
7 <form action="login-pruefung.php" method="post">
8 Geben Sie das Passwort ein:
9 <input name="Passwort" size="10" type="password"><br>
10 <input name="login" type="submit" value="Login">
11 </form>
12
13 </body>
14 </html>
================================================================================
1 <?php
2
3 $Zugangspasswort = "1234";
4
5 if(isset($_POST['login']) && isset($_POST['Passwort']) && $_POST['Passwort'] == $Zugangspasswort)
6 {
7 session_start();
8 $_SESSION['SESSION_Passwort'] = $_POST['Passwort'];
10 }
11
12 ?>
13
14 <html>
15 <head>
16 <title>Passwortgeschützter Bereich</title>
17 </head>
18 <body>
19
20 <?php
21
22 if($_SESSION['SESSION_Passwort'] == $Zugangspasswort)
23 {
24 echo"Sie sind erfolgreich eingeloggt!<br>Hier gelangen Sie zum <a href="geschuetzter-inhalt.php">geschützten Inhalt</a>.";
25 }
26 else
27 {
28 echo"Sie sind nicht berechtigt die Seite zu betreten!";
29 }
30
31 ?>
32
33 </body>
34 </html>
================================================================================
1 <?php
2
3 session_start();
4
5 ?>
6
7 <html>
8 <head>
9 <title>Passwortgeschützter Bereich</title>
10 </head>
11 <body>
12
13 <?php
14
15 $Zugangspasswort = "1234";
16
17 if($_SESSION['SESSION_Passwort'] == $Zugangspasswort)
18 {
19 //Notieren Sie hier den geschützten Inhalt der Seite
20 }
21 else
22 {
23 echo"Sie sind nicht berechtigt die Seite anzuzeigen!<br>Bitte loggen Sie sich vorher <a href="login.php">hier</a> ein.";
24 }
25
26 ?>
27
28 </body>
29 </html>
Herzlichen Dank, ich werde jetzt einmal alles ändern!
Kann ich dir, wenn ich irgendwas nicht geschafft habe, ein email senden?
MfG
Herzlichen Dank, ich werde jetzt einmal alles ändern!
Kann ich dir, wenn ich irgendwas nicht geschafft habe, ein email senden?
ja, kannst aber auch hier im Forum schreiben ;)
Also, hab alles geändert aber jetzt habe ich ein anderes Problem:
Wenn ich mich einlogge (ich hab das mit header-weiterleitung in der login-pruefung.php datei gemacht, statt
echo"Sie sind erfolgreich eingeloggt!<br>Hier gelangen Sie zum <a href="geschuetzter-inhalt.php">geschützten Inhalt</a>.";
aber egal....)
Wenn ich mich jetzt eingeloggt habe, kommt die richtige Seite usw. aber es steht: Sie sind nicht berechtigt, diese Seite....
Hilfe!!!
Langsam werde ich verrückt...
MfG
Sorry, ich hab mich ein wenig verschrieben. Ich hoffe, du hast es aber trotzdem verstanden!
Schau's dir am besten selber mal an, ich habe es schon zum Test auf einen "Probeserver" geladen:
http://miha.funpic.de/miniCMS_lite/admin/index.php
MfG
Hallo,
Sorry, ich hab mich ein wenig verschrieben. Ich hoffe, du hast es aber trotzdem verstanden!
Schau's dir am besten selber mal an, ich habe es schon zum Test auf einen "Probeserver" geladen:
http://miha.funpic.de/miniCMS_lite/admin/index.php
das wird daran liegen, weil er die Session verliert ;-)
du musst an deiner URL die Session-ID ranhängen
ich denke mal, dass das Problem dann behoben ist
du musst an deiner URL die Session-ID ranhängen
ich denke mal, dass das Problem dann behoben ist
wie?
aber schaus dir jetzt einmal an, ich hatte einen Tippfehler bei einer Variable, jetzt kommt man mit dem Passwort "admin" zwar rein, aber wenn man im Browser admin.php eingibt, kommt man in den geschützten Bereich, ohne das steht "Sie haben keine Berechtigung..."
mfg
du musst an deiner URL die Session-ID ranhängen
ich denke mal, dass das Problem dann behoben istwie?
if(isset($_POST['login']) && isset($_POST['Passwort']) && $_POST['Passwort'] == $Zugangspasswort){
session_start();
$_SESSION['SESSION_Passwort'] = $_POST['Passwort'];
$url = dirname($p_SERVER['PHP_SELF']).'geschuetzter-inhalt.php?'.session_name().'='.session_id();
header('Location: '.$url);
exit;
}
sieht das bei dir ungefähr so aus?
aber schaus dir jetzt einmal an, ich hatte einen Tippfehler bei einer Variable, jetzt kommt man mit dem Passwort "admin" zwar rein, aber wenn man im Browser admin.php eingibt, kommt man in den geschützten Bereich, ohne das steht "Sie haben keine Berechtigung..."
weil das Passwort in der Session gespeichert ist, die Session hält normalerweise 1800sec.
wenn du innerhalb 1800sec. den Link mit der selben Session ID aufrufst.. wirst du automatisch eingelogt
noch was:
warum kann man, nachdem man das Passwort eingegeben hat, nicht mit der Enter-Taste bestätigen (da ist das Passwort dann nämlich falsch) ????
Man muss immer auf den Login Button klicken.
Ich check das aber nicht, mit Enter muss das ja genauso gehen, oder nicht?
Hallo,
noch was:
warum kann man, nachdem man das Passwort eingegeben hat, nicht mit der Enter-Taste bestätigen (da ist das Passwort dann nämlich falsch) ????Man muss immer auf den Login Button klicken.
Ich check das aber nicht, mit Enter muss das ja genauso gehen, oder nicht?
also bei mir (Opera 7.53) funktioniert das moit der <ENTER> Taste
also liegt es am browser!
scheiß IE6!!!
aber danke nocheinmal!
Hallo,
also liegt es am browser!
scheiß IE6!!!
aber danke nocheinmal!
bei mir das selbe Problem...
frag mich aber nicht, woran das liegt
Hallo Michael,
warum kann man, nachdem man das Passwort eingegeben hat, nicht mit der Enter-Taste bestätigen (da ist das Passwort dann nämlich falsch) ????
isset($_POST['login']) (Zeile 5 der zweiten Datei aus [pref:t=86081&m=508523]) ist nur true wenn das Forumlar über den Submit-Button abgesendet wird (es wird nur das name/value-Paar von dem gedrückten Submit-Button mitgeschickt - und wenn keiner gedrückt wurde, wird eben auch keine Wert mitgeschickt) - lass das isset($_POST['login']) also einfach weg.
Grüße aus Nürnberg
Tobias
Hallo Tobias,
warum kann man, nachdem man das Passwort eingegeben hat, nicht mit der Enter-Taste bestätigen (da ist das Passwort dann nämlich falsch) ????
isset($_POST['login']) (Zeile 5 der zweiten Datei aus [pref:t=86081&m=508523]) ist nur true wenn das Forumlar über den Submit-Button abgesendet wird (es wird nur das name/value-Paar von dem gedrückten Submit-Button mitgeschickt - und wenn keiner gedrückt wurde, wird eben auch keine Wert mitgeschickt) - lass das isset($_POST['login']) also einfach weg.
und warum klappt das mit Opera?
Hallo,
isset($_POST['login']) (Zeile 5 der zweiten Datei aus [pref:t=86081&m=508523]) ist nur true wenn das Forumlar über den Submit-Button abgesendet wird [...]
und warum klappt das mit Opera?
weil Opera (und Firefox) das name/value-Paar des ersten Submit-Buttons (im Gegensatz zum IE) mitsenden - ob das erlaubt ist oder nicht, weiß ich aber nicht.
Grüße aus Nürnberg
Tobias
Hallo,
isset($_POST['login']) (Zeile 5 der zweiten Datei aus [pref:t=86081&m=508523]) ist nur true wenn das Forumlar über den Submit-Button abgesendet wird [...]
und warum klappt das mit Opera?
weil Opera (und Firefox) das name/value-Paar des ersten Submit-Buttons (im Gegensatz zum IE) mitsenden - ob das erlaubt ist oder nicht, weiß ich aber nicht.
ok, dann macht es Sinn
thx
badboy schau es dir bitte nocheinmal an und logg dich ein, ich glaube ich habe das problem!
ich hab eine logout-seite gemacht, auf der ich die Session schließe, eh klar, wenn sie offen ist, kann man immer rein!
http://miha.funpic.de/miniCMS_lite/admin/index.php
Danke für alle deine Tipps,
falls wieder was nicht funktioniert, frag ich dich!
MfG,
Michael
Hallo!
Ich habe ein Problem mit folgendem Tutorial:
http://www.webmaster-resource.de/tricks/php/login-mit-sessions.php
Der Code ist sehr veraltet. Ich würde ihn nicht benutzen.
Also den Login usw. hab ich schon gemacht, nur habe ich ein Problem, wenn ich weitere Inhalte schützen will.
Der login wie er da steht ist unwichtig. Du kannst Dich auch per
http://...geheim.php?SESSION_passwort=12345 Zugang zum internen Bereich verschaffen, ohne dich eingeloggt zu haben. Das ist zwar erstmal nicht sooo schlimm, aber man weiß ja nie was die Leute an solchem Code noch so "verbessern".
Siehe hierzu: http://de3.php.net/manual/de/security.registerglobals.php
Egal wie die Einstellungen für register-globals bei Dir sind, ich würde immer so schreiben als seien sie abgeschaltet, denn irgendwann wird das überall abgeschaltet, und dann funktionieren die Scripte die sich darauf verlassen nicht mehr, und nebenbei ist das sicherheitstechnisch sicher kein Nachteil.
Um Daten in die Session zu schreiben verwende nach session_start()
$_SESSION['name'] = 'wert';
oder
$_SESSION['name'] = $variable;
Auf diesen Wert kannst Du nach session_start() jederzeit z.B. über
echo $_SESSION['name'];
zugreifen. session_register() wird nicht mehr benötigt.
Für Daten aus Formularen verwende entweder $_GET['name'], oder $_POST['name'] (letzteres wäre bei Deinem Formular richtig), für URL-Parameter (script.php?name=value) verwende $_GET['name'].
"Diese Session-Variable $SESSION_Passwort steht Ihnen auch, nachdem der Benutzer auf eine weitere Seite des geschützten Bereichs gesurft ist, zur Verfügung. Sie können also die weiteren Seiten ganz einfach schützen, in dem Sie deren Inhalt mit dem folgenden Grundgerüst umgeben. Hat sich der Besucher vorher erfolgreich eingeloggt, wird der Inhalt angezeigt, ansonsten die Meldung er solle sich einloggen."
Das trifft heute nicht mehr unbedingt zu, daher verwende den $_SESSION Array.
Wenn ich jetzt eine komplette PHP-Seite mit HTML-codes usw. mit dem Grundgerüst umgebe, kommt folgender Error:
Parse error: parse error, unexpected '<' in C:\Dateipfad\geheim.php on line 29
Tja, da hast Du irgendeinen Tippfehler, vielleicht davor irgendwo ein ; oder ein " vergessen, oder ein < an falscher Stelle, oder <?php nicht ganz richtig....
Kann man das irgendwie so machen, dass man diese PHP-Seite trotzdem irgendwie schützen kann (das wenn man den Dateinamen im Browser eingibt, der Satz "Sie sind nicht berechtigt diese Seite anzuschauen!" kommt)
Dem Script nach sollte genau dieser Satz kommen. Zumindest wenn Du Deinen Parse-Error behoben hast.
Ich arbeite nämlich gerade an einem Mini-CMS und da muss ich natürlich den Admin-Bereich schützen.
kling sinnvoll ;-)
Du könntest den Schutz auch mit einer .htaccess über mod_auth des Apachen (ich gehe einfach mal davon aus...) realisieren:
http://aktuell.de.selfhtml.org/artikel/server/htaccess/index.htm
http://httpd.apache.org/docs-2.0/howto/auth.html
Grüße
Andreas
Hallo Andreas!
Vielen Dank für dein Posting, ich werde gleich schauen ob ich es jetzt schaffe!
Leider kenn ich mich in PHP noch nicht so gut aus, sonst hätte ich auch nicht auf das Tutorial zurückgegriffen, aber einmal schauen, was ich schaffe!
Aber wenn du sagst, dass sei unsicher, welchen Passwortschutz empfiehlst du mir, bei dem ich auch Zugriffe auf Seiten sperren kann und dann dieser Satz kommt (sie haben keine Berechtigung...)?
MfG,
Michael
Hallo,
Aber wenn du sagst, dass sei unsicher, welchen Passwortschutz empfiehlst du mir, bei dem ich auch Zugriffe auf Seiten sperren kann und dann dieser Satz kommt (sie haben keine Berechtigung...)?
schau mal hier, ob du damit etwas anfangen kannst
http://tut.php-q.net/login.html
schau mal hier, ob du damit etwas anfangen kannst
http://tut.php-q.net/login.html
Danke, aber ich bräuchte was ohne MySQL!
Hallo
hier gibts auch ein beispiel
http://aktuell.de.selfhtml.org/artikel/programmiertechnik/useronline/index.htm
http://aktuell.de.selfhtml.org/artikel/programmiertechnik/useronline/index-20030609-01.htm#a5
http://aktuell.de.selfhtml.org/artikel/programmiertechnik/useronline/index-20030624.htm#a5
vielleicht hilft dir das ja auch
Gruss
Alain
Hallo,
http://aktuell.de.selfhtml.org/artikel/programmiertechnik/useronline/index.htm
http://aktuell.de.selfhtml.org/artikel/programmiertechnik/useronline/index-20030609-01.htm#a5
http://aktuell.de.selfhtml.org/artikel/programmiertechnik/useronline/index-20030624.htm#a5
Die letzten zwei Links sind doch alte Versionen von derm 1. Link, oder? (zumindest lässt sich das aus den Zahlen im Dateinamen, die vmtl. ein Datum sind, vermuten) - ist das Absicht, dass diese Dateien über die Suche auffindbar sind? [1] listet nämlich unter den Treffern 51 bis 80 drei Versionen des Artikels auf (vom 9., 15. und vom 24.6.2003).
Grüße aus Nürnberg
Tobias