Session: Ausloggen

Session: Ausloggen| Datum: 24.04.2010 - 22:04 | Author: L-Websites

Also das "Ausloggen" funktioniert bei mir nicht Ganz.


Habe ich bei mir drin stehen.
Leider wird nacher ausgegeben:


Weiß da jemand Bescheid?

Re: Session: Ausloggen| Datum: 24.04.2010 - 22:04 | Author: Anonymous

die Datei die du aufrust, und die Datei die du im editor hast, sind definitiv nicht die selben. Das "echo" steht ja scheinbar bei beiden in unterschiedlichen Zeilen. (nicht richtig hochgeladen? Falsche datei hochgeladen? bzw. scheint ja lokal zu sein, also hast du vielleicht die falsche datei aufgerufen oder bearbeitet (oder gar nicht erst abgespeichert :P ))

Re: Session: Ausloggen| Datum: 24.04.2010 - 22:04 | Author: L-Websites

Hä?
Ich versteh gerade nur Bahnhof, von dem was du sagst ^^

Ob du vielleicht nochmal einen Tip geben könntest, wie ich dieses Problem umgehen kann?

Das ist die Einloggen Datei:

Code


<?php
session_start();
$benutzername = $_POST['benutzername'];
$kennwort = $_POST['kennwort'];

if ( $benutzername == "Test-Name" AND "Test-Passwort" == $kennwort)

{
echo "<p>Info: Sie sind eingeloggt</p>";
$_SESSION['eingeloggt'] = TRUE;
}

if ( $_SESSION['eingeloggt'] == TRUE )
{

// auth. - Benutzer bekommt seine Inhalte
echo "Hallo Welt!";
echo "<p><a href=\"daten.php\">Eigene Daten</a></p>";
echo "<p><a href=\"ausloggen.php\">Ausloggen</a></p>";

}

if ( $_SESSION['eingeloggt'] != TRUE )
{

?>
<form action="einloggen.php" method="post">
Benutzername:<br />
<input type="text" name="benutzername" />
<br />
Passwort:<br />
<input type="password" name="kennwort" />
<br />
<input type="submit" value="einloggen" />

</form>

<?php
}
?>




Das die Ausloggen Datei:

Code


php
session_start();

session_destroy()
echo "<h1>Sie sind ausgeloggt.</h1>";
echo "<p><a href=\"einloggen.php\">Einloggen</a></p>";

?>





Hilft das vielleicht weiter?
Mit freundlichen Grüßen, L-Websites

Re: Session: Ausloggen| Datum: 24.04.2010 - 22:04 | Author: Anonymous

bitte nutz doch für quelltext den "code" block.

nun zu deinem Problem. diese Datei sieht ja schonmal anders aus, als das was du eben gezeigt hast:

Code


1. <?php
2. session_start();
3.
4. session_destroy()
5. echo "<h1>Sie sind ausgeloggt.</h1>";
6. echo "<p><a href=\"einloggen.php\">Einloggen</a></p>";
7.
8. ?>




die Fehlermeldung lautete:

Zitat von 26eorrt1
Parse error: syntax error, unexpected T_ECHO in F:\...\ausloggen.php on line 5

Du solltest auf jeden Fall lernen Fehlermeldungen zu interpretieren. In der Regel reichen hier einfache Englischekenntnisse aus.
"syntax" Bedeutet nichts anderes als die "Grammatik" der Sprache... d.h. irgendwo ist ein "Grammatikfehler"... um das auf die duetsche Sprache zu übersetzen: falsch verwendetes wort, fehlendes wort, ein wort zu viel... etc. und alle möglichkeiten die man bei sowas falsch machen kann.
"unexpected" ist englisch und bedeutet "unerwartet", was war unerwartet? ein T_ECHO... was könnte ein T_ECHO sein? Selbst dir sollte klar sein, dass damit wahrscheinlich eines der "echo" Befehle gemeint ist.
Das ganze ist in der Datei ausloggen.php auf Zeile 5.

in Zeile 5 haben wir tatsächlich ein "echo", und die Fehlermeldung sagt uns, dass dieses "echo" unerwartet war. Der PHP-Parser hat also etwas anderes erwartet, d.h. allerwahrscheinlichkeit nach, FEHLT etwas, was gemacht werden muss, bevor das echo eingesetzt werden kann, und zwar VOR dem echo... womöglich sogar eine Zeile vorher.

mfg Balmung

Re: Session: Ausloggen| Datum: 24.04.2010 - 22:04 | Author: L-Websites

Also muss man ein ";" reinsetzten, hinter den Destory-Befehl.
Ich probiere es mal eben aus....

Edit:
Es funktioniert tat zwar haftig!

Ich habe das selbe auch schon versucht,
aber das hat dann irgendwie nicht geklappt.

Das müsste an dem Browser Cache, und an den Cookies zu tun gehabt haben.

Danke an Alle :-)
Mit freundlichen Grüßen, L-Websites



EditEdit:
Mir fällt gerade auf, dass ich eigentlich nicht nur mit einem User arbeiten wollte.
Gibt es denn eine Möglichkeit, mehrere User einzutragen?

Mit freundlichen Grüßen, L-Websites

Re: Session: Ausloggen| Datum: 24.04.2010 - 22:04 | Author: Anonymous

[quote="L-Websites":286r8sdj]EditEdit:
Mir fällt gerade auf, dass ich eigentlich nicht nur mit einem User arbeiten wollte.
Gibt es denn eine Möglichkeit, mehrere User einzutragen?[/quote:286r8sdj]
Stichwort: MySQL
http://tut.php-quake.net/de/

Re: Session: Ausloggen| Datum: 24.04.2010 - 23:04 | Author: Anonymous

Ich habe mal deinen Code genommen und optimiert:
(Natürlich musste noch MySQL Support hinzufügen, hat Balmung ja schon erwähnt)

Code


<?php
session_start();
$benutzername = (isset($_POST['benutzername']) ? mysql_escape_string($_POST['benutzername']) : '');
$kennwort = (isset($_POST['kennwort']) ? mysql_escape_string($_POST['kennwort']) : '');

if ( $_SESSION['eingeloggt'] == TRUE )
{
// auth. - Benutzer bekommt seine Inhalte
echo "Hallo Welt!";
echo "<p><a href=\"daten.php\">Eigene Daten</a></p>";
echo "<p><a href=\"ausloggen.php\">Ausloggen</a></p>";

}elseif(isset($_POST['submit']) && $_POST['submit'] != 1){
?>
<form action="einloggen.php" method="post">
Benutzername:<br />
<input type="text" name="benutzername" />
<br />
Passwort:<br />
<input type="password" name="kennwort" />
<br />
<input type="submit" value="einloggen" />
<input type="hidden" name="submit" value="1" />

</form>

<?php
}
else{
if ( $benutzername == "Test-Name" AND "Test-Passwort" == $kennwort)
{
echo "<p>Info: Sie sind eingeloggt</p>";
$_SESSION['eingeloggt'] = TRUE;
}else{
echo "<p>Falsches Passwort!</p>";
}
}




Natürlich noch nicht optimal, ginge wesentlich eleganter und natürlich solte man den logout auch in diese Datei packen ;)
lg DHMH

Re: Session: Ausloggen| Datum: 24.04.2010 - 23:04 | Author: L-Websites

Per PHP ginge das nicht?

Re: Session: Ausloggen| Datum: 24.04.2010 - 23:04 | Author: Anonymous

doch, lies dir doch Balmungs geposteten Link durch!

Re: Session: Ausloggen| Datum: 24.04.2010 - 23:04 | Author: L-Websites

Habe ich ja,
aber der macht irgendwie noch mehr Verwirrung...

"Loginskript"...."Tabelle in MySQL".....

Aber ich wollte doch nur pures PHP....

Re: Session: Ausloggen| Datum: 25.04.2010 - 00:04 | Author: Haruspex

Najoa...
Wenn du pures PHP benutzen willst müsstest du von jedem User Name und PW bei der Kontrolle hinterlegen, sprich in einer Datei speichern. Bei 2-3 Usern mag das noch gehen, aber bei mehr bzw. wenn sich User registrieren können sollen wird das ganze suboptimal.
Ich empfehle ganz klar MySQL, ist auch nicht schwer und wirst du früher oder später nicht dran vorbeikommen.

Re: Session: Ausloggen| Datum: 25.04.2010 - 01:04 | Author: L-Websites

Naja, jetzt habe ich die Möglichkeit mit der Textdatei genutzt.

Nun tritt aber schon wieder ein Fehler auf:

Code



Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at F:\xampplite\htdocs\labout\galerie.php:1) in F:\xampplite\htdocs\labout\galerie.php on line 2
Bitte loggen sie sich erst ein, bevor du diesen Seiten-Inhalt sehen kannst.





In der Datei die geschützt werden soll steht:
Bitte loggen sie sich erst ein, bevor du diesen Seiten-Inhalt sehen kannst

Das habe ich auch so festgelegt:

Code


<?php
session_start();
if(!isset($_SESSION['username']));
{
echo "Bitte logge dich erst ein, bevor du dieses Seiten-Inhalt siehst.";

}
?>




Doch nun wird auch der Rest der Seite angezeigt, ohne dass ich mich angemeldet habe?

Kann mir da jemand weiterhelfen?
Mit freundlichen Grüßen, L-Websites

Re: Session: Ausloggen| Datum: 27.04.2010 - 13:04 | Author: Der_Admin

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at F:\xampplite\htdocs\labout\galerie.php:1) in F:\xampplite\htdocs\labout\galerie.php on line 2
Der Fehler tritt auf wenn Du vor session_start() irgendeine Ausgabe machst. Auch leerzeichen zählen.
=> session_start() ganz am Anfang der Datei

Re: Session: Ausloggen| Datum: 27.04.2010 - 14:04 | Author: L-Websites

[quote="Der_Admin":3kobcebs]Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at F:\xampplite\htdocs\labout\galerie.php:1) in F:\xampplite\htdocs\labout\galerie.php on line 2
Der Fehler tritt auf wenn Du vor session_start() irgendeine Ausgabe machst. Auch leerzeichen zählen.
=> session_start() ganz am Anfang der Datei[/quote:3kobcebs]


Habe ich schon beachtet,
auch durchgeführt, aber behebt nicht das Problem :(

Mit freundlichen Grüßen, L-Websites

Re: Session: Ausloggen| Datum: 27.04.2010 - 18:04 | Author: Anonymous

Code


(output started at F:\xampplite\htdocs\labout\galerie.php:1) in F:\xampplite\htdocs\labout\galerie.php on line 2



Um es mal vorweg zu sagen: PHP lügt nicht.
Das heißt, wenn PHP sagt, dass in Zeile 1 in galerie.php der Output (die Ausgabe) gestartet hat, dann liegt das daran, weil dort wirklich ne Ausgabe stattgefunden hat.
Häufig liegt es daran, weil sich vor dem "<?php" irgendwelche Leerfelder und/oder Zeilenumbrüche befinden.

Wenn das nicht der Fall ist, dann liegt es womöglich an der verwendeten Kodierung.
Finde heraus in den Einstellungen deines Editors, das Programm mit dem du deine PHP-Dateien bearbeitest, welche Zeichenkodierung/Charset du für deine PHP-Dokumente eingestellt hast. ist es UTF-8 solltest du es auf UTF-8 [i:119qa445]Ohne BOM (Byte Order Mark)[/i:119qa445] umstellen oder alternativ auf zum Beispiel die ASCII Kodierung, dann kannst du aber keine Umlaute verwenden.