$_Session, PHP, MYSQL Login

hallo zusammen!

ich beschäftige mich mit einem login. ich habe eine websteite und oben sind eingabefelder für username und passwort. und darunter ist internetangebo.

wenn man sich einloggt. sollten die felder für username und passwort verschwinden und nur den „nickname“ an deren stelle erscheinen. nur das man jetzt inserate, artikel inserieren kann.

ein script hätte ich schon. doch das mit dem verschwinden der eingaben, geht nicht. danke schon mal im voraus.

hallo

ganz im ernst: wenn dir das "nichtverschwinden"der loginbox schon probleme bereitet solltest du noch nicht an sicherheitsrelevanten dingen (wie z. b. login) arbeiten sondern dich erst noch ein wenig mehr in php einarbeiten

lg

ajo

Hallo

Wenn ich es mir nach Deiner Beschreibung bildlich vorstelle, dann rufst Du in etwas die selbe Seite wieder auf, nur, daß man dann eingeloggt ist und die Felder verschwinden sollen…

Du hast sicherlich ein oder mehrere Variablen in der Session registriert, wenn man sich eingeloggt hat
z.B. $_SESSION[‚user‘] oder so etwas

also kannst Du doch ganz einfach mit einer if-Bedingung die Felder anzeigen lassen (oder eben nicht.

<?php if(!$_SESSION['user']) # wenn keine Session-Variable
{ ?\> "HTML LogIn Formularfelder" # Zeige Deine Felder an <?php }
?\> Notfalls schick mir doch mal Dein Script per email IBO [[email protected]](mailto:[email protected])

Da müsste man schon das Script sehen. So kann ich keine Hilfestellung leisten.

Hallo,
Sie haben bereits mehrere dieser Anfragen gestellt. Ich kann ihnen auch bei künftigen Anfragen dieser Art leider nicht weiterhelfen, da Sie scheinbar nicht wirklich wissen, was Sie tun.
Ich möchte Ihnen empfehlen, sich die Grundlagen in einem Volkshochschulkurs anzueignen.

Gruss
Honeyhead

Hallo max12neu,
loggt sich der Benutzer via Javascript & AJAX ein, oder lädt die Seite für den login neu?. Bei einem Neuladen musst du einfach via if überprüfen ob der Benutzer angemeldet ist und nur wenn er eben nicht angemeldet ist die Login-Form ausgeben. Bei Javascript musst du nach dem Container wie document.getElementsByClassName oder document.getElementsById heraussuchen ihn aus dem DOM löschen und den Benutzernamen hinzufügen. Google einfach mal „DOM manipulations javascript“ oder so

Hallo Max,

na Du schickst die Formulardaten an das loginscript selbst. Also prüfst Du am Start des Scripts einfach, ob Formulardaten da sind (was ja bedeutet, dass jemand das Formular auf Deiner Loginseite abgeschickt hat). Wenn ja, Daten prüfen, das Ergebnis in einer Kontrollvariablen speichern, deren Existenz und Inhalt erhalten bleibt und jederzeit prüfbar ist (also am besten Session, wa?). Dann kann man genau diese Variable testen und das entsprechende anzeigen. Wenn keine Formulardaten da sind (das ist der Zustand, wenn jemand Deine Seite gerade aufgerufen hat und sie zum ersten Mal sieht) oder der Login nicht bestanden wurde, Eingabefelder anzeigen.

vom Schema her so:

<?php session_start();
if(isset($\_POST[username]) && $\_POST[username] !== "") { # Prüfung Username und ggf. Passwort # wenn bestanden: $\_SESSION[der\_darf] = 1; } if($\_SESSION[der\_darf] == 1) { include\_once("wohin\_auch\_immer.php"); } else { # Anzeige Formular mit Eingabefeld "username", # "password", method="POST" und # submit-Button # das Form-Tag müsste also mindestens so aussehen: #
}
?>

Micha

danke für deine mühe!

das problem ist. ich dürfte eine session gesetzt haben die nicht zu löschen ist. hab ein „logout.php“ geschrieben mit destroy und seitenaufruf mit header das wieder die seite aufruft wo die eingabefelder username und passwort sind.

über abmelden wird die logout.php aufgerufen umd die session zu löschen.

ich habe sowohl in der index.php als auch in der anderen datei session_start();

auch mit if(isset($_SESSION[„username“])) gibt problem mit ! gibt es keine eingabefelder in der index.php und ohne schon. wobei beim eingeben des usernamens und passwort wieder die felder sichbar sind.

Nichts zu danken.

danke. aber jetzt bin ich für immer „angemeldet“;

jetzt sind die eingabefelder nicht mehr da und der username erscheint, daneben ein href link „abmelden“ mit der datei logout.php

session_unset();
session_destroy();

header(„Location: http://localhost/index.php“);

doch die eingabefelder bleiben wie gesagt, verschwunden.
es funktioniert nur wenn ich die seite neu aufmache. und das nur einmal und dann bin ich für immer eingeloggt.

Eine Idee wäre du definierst eine Variable $check.Mit $check =$POST (check).
Wenn Benutzer und passwort korrekt sind wird check ==1 gesetzt.
Dann teilst du den Code in zwei häften

if $check==1 {Seite mit abgefragtem (Z.B per SQL) Nickname und anderen Angeboten…};

else {die Startvariante mit Formular zum Anmelden…};

kommt drauf an wie du es geschrieben hast…

im grunde musst du nur abfragen ob derjenige eingeloggt ist… wenn er es est dann zeige den usernamen an… wenn nicht den loginbereich…

also im grunde einfache if else… dann kannst du das ganze mit divs und css machen, wodurch du dinge auch in ebenen anzeigen oder ausblenden lassen kannst usw… also es gibt etliche möglichkeiten… aber letztenendes kommt es auf die abfrage drauf an, ob der user eingeloggt ist oder nicht…

danke für die deine hilfe!

jetzt habe ich das „nichtverschwinden“ behoben. in der session datei/cookie steht username:max und eingeloggt:ja.

das problem besteht jetzt. ich kann diese werte weder löschen noch ersetzen.

unset($_SESSION[‚username‘]);
unset($_SESSION[‚eingeloggt‘]);

session_destroy($_SESSION);

header(„Location: http://localhost/index.php“);

was kann der fehler sein?

da ich deinen gesamten code nicht kenne kann ich nur folgenden tipp geben: versuche einfach den wert auf leer zu setzen. das sollte funktionieren
$_SESSION[‚variable‘] = ‚‘;

mit if else anweisung sollte es kein problem sein
if (login && login erfolgreich) {zeige inserate, artikel inserieren;}
else {zeige eingabefelder;}

cu
harald
*********************

Hallo,

ohne zu wissen welches Script Du einsetzt und auch ohne zu wissen, was genau Du machst wird es schwierig Dir zu helfen :smile:

Ein wenig mehr Details wären hilfreich :wink:

Gruß
Sven

Hmm - also ich habe mal ein kleines Script hier
EIN und AUS loggen auf einer kleinen Seite (ohne Datenbank…)

meld Dich mal per email
[email protected]
Hast Du register Globals OFF?
Ich probier es damit auch gleich noch mal aus

mfg
IBO

danke.

das ein- unf ausloggen funktionert. was sollte aus sicherheitsgründen alles in der session datei stehen. ich habe es bisher nur geschafft den inhalt bzw einzelne variablen zu löschen. ist es besser wenn man sich ausloggt, das die session datei ganz gelöscht wird.
mit session_destroy(); bleibt die datei erhalten.

ausserdem kann man sich auch einloggen, wenn man weder username noch passwort eingibt? dann steht halt kein username. ausloggen geht auch wieder.

Hallo Max,

sorry, ich kann Deine Frage nicht erkennen. Was willst Du denn jetzt wissen? Das Skript scheint nicht das zu machen, was Du willst?

Bitte schreib ganz klar eine Frage. Und gib mal etwas Code dazu, wenn Du zu einem Script was wissen willst.

Grüße Micha

<?php session_start();
$testuser="user"; $testpass="pass"; if($\_GET['logex']=="1") { session\_unset(); session\_destroy(); } ## Beides eingegeben und Logout nicht gesetzt! if(($\_GET['act']==1)&&($\_POST['pass'])&&($\_POST['user'])&&($\_GET['logex']!='1')) { if(($testuser==$\_POST['user'])&&($\_POST['pass'] == $testpass)) { session\_start(); $\_SESSION['user']=$\_POST['user']; ?\>alert ('LogIn erfolgreich !\n\nWillkommen \<?php echo $\_POST['user'];?\>\n\nDu bist eingeloggt'); } } ?\> <?if (!$_SESSION['user'])
{?\>?act=1" method="POST"\> Benutzer Passwort einloggen \>\> <?php }
?\><?if ($_SESSION['user'])
{?\> <?php }
?\> hier registrierte Variable: echo$\_SESSION['user']." "; ?\> Hmmm - theoretisch löscht session\_destroy() auch die Datei probier mal obiges Script aus einfach in eine leere php-Datei kopieren und über den local-Server aufrufen In der Sessiondatei sollte alles stehen, was Du unbedingt in auf den darauf folgenden Seiten brauchst also eigentlich nur 3-4 Variablen vielleicht User-ID, damit man immer auf die Daten des Users "zugreifen" kann - z.B. bei Profilaufrufen dann vielleicht seine Zugriffsrechte - falls Du verschieden Rechte vergeben möchtest kommt darauf an, was Deine Benutzerdatenbank alles enthält... oder noch erhalten wird