ERLEDIGT
JA
JA
ANTWORTEN
17
17
ZUGRIFFE
417
417
EMPFEHLEN
-
28.08.07 10:48 #1
- Registriert seit
- Jun 2007
- Ort
- Lingen (Niedersachsen, zZ in Istanbul)
- Beiträge
- 685
Guten Tag,
ich habe mir ein login-system mit Sessions und MySQL geschrieben, und stehe vor folgendem Problem:
Obwohl die Session nicht mehr aktiv ist, kann ich auf bestimmte Seiten zugreifen.
Da sind meine Sessions.PHP-Code:session_start():
$member = mysql_real_escape_string($_POST['login']);
$_SESSION['member'] = $member;
$_SESSION['pass'] = mysql_real_escape_string($_POST['pass']);
$_SESSION['id'] = $row[0];
Wenn ich die auf einer anderen Seite abfrage:
Habe ich trotzdem Zugriff auf den inneren Teil.PHP-Code:session_start();
$id = $_SESSION['id'];
$select = "SELECT Mitglied, Passwort FROM spmembers WHERE id = '$id' ";
$query = mysql_query($select) or die(mysql_error());
while ($row = mysql_fetch_array($query, $connect))
{
$member = $row[0];
$pass = $row[1];
}
if ($_SESSION['pass'] == $pass && $_SESSION['member'] == $member)
{
//blablub
}
else echo 'Ungueltige Session';
Ich habe den Browser vorher geschlossen!
-
Sessions sind nicht zwangsweise geschlossen, wenn du den Browser zu machst. Um eine Session sicher zu beenden benutzt du am besten session_destroy().
-
28.08.07 11:15 #3
- Registriert seit
- Jun 2007
- Ort
- Lingen (Niedersachsen, zZ in Istanbul)
- Beiträge
- 685
Hmm
könnt ihr denn auf diese Seite?
http://petersilies.pe.funpic.de/sp/Datenbank.php
@Igäl:
Wie soll ich denn mit session_destroy() arbeiten,
wenn das ganze System auf Sessions beruht?
Hmm
ich erhalte folgende Meldung:
Notice: Undefined index: id in line 13
Notice: Undefined index: pass in line 23
Notice: Undefined variable: pass in line 23
Notice: Undefined index: member in line 23
Notice: Undefined variable: member in line 23
line 13:
line 23:PHP-Code:$id = $_SESSION['id'];
ALso langsam wird das echt blöd... -.-PHP-Code:if ($_SESSION['pass'] == $pass && $_SESSION['member'] == $member)
-
Ah ok tut mir leid. Da hab ich etwas falsch verstanden.
Bei deinen beiden Codeschnipsel die du gepostet hast: Welches Snippet hast du wo?
Kleine Anmerkung: Wenn dein Query nur 1 oder kein Datensatz zurück gibt, brauchst du keine while-Schleife...
-
28.08.07 11:43 #5
- Registriert seit
- Jun 2007
- Ort
- Lingen (Niedersachsen, zZ in Istanbul)
- Beiträge
- 685
Snippet?
Ich weiß net was du meinst, aber ich habe ein weiteres Problem:
Anscheinend werden fast alle IFs ignoriert:
Mein Code:
Ich kann alles bei Login/Passwort eingeben, es funktioniert immer!PHP-Code:<?php
if (isset($_POST['submit']) && !empty($_POST['login']) && !empty($_POST['pass']))
{
$member = mysql_real_escape_string($_POST['login']);
$_SESSION['pass'] = mysql_real_escape_string($_POST['pass']);
$select = "SELECT id, Mitglied, Passwort, frei FROM spmembers WHERE Mitglied LIKE '$member' ";
$query = mysql_query($select) or die(mysql_error());
$_SESSION['member'] = $member;
while ($row = mysql_fetch_array($query, $connect))
{
$_SESSION['id'] = $row[0];
$member = $row[1];
$pass = $row[2];
$frei = $row[3];
global $member;
global $pass;
global $frei;
}
if ($_SESSION['member'] == $member && $_SESSION['pass'] == $pass && $frei == 0)
{
echo 'Willkommen '.$_SESSION['member'].', <br />';
echo '<b>Datenbank</b>';
echo '<br />';
echo '<a href="Datenbank.php">Eintrag hinzufügen</a>';
echo '<br />';
echo '<a href="dbsuche.php">Eintrag suchen</a>';
echo '<br />';
echo '<b>Tools</b>';
echo '<br />';
echo '<a href="rechner.php">Flottenpunkte berechnen</a>';
echo '<br />';
}
else
{
echo '<p class="fehler">Achtung: Möglicherweise war ihr Login und/oder Passwort nicht korrekt oder sie sind noch nicht freigeschaltet!</p>';
echo '<br />';
echo '<a href="">Nochmal</a>';
}
}
else
{
echo '<form method="post">';
echo '<input type="text" name="login" value="Benutzername" onFocus="this.value=\'\'" /> ';
echo '<br />';
echo '<input type="password" name="pass" value="Password" onFocus="this.value=\'\'" /> ';
echo '<br />';
echo '<input type="submit" name="submit" />';
echo '</form>';
}
Auch bei 45uwfhjsd08 und ldjfle9a0ß
-
Ich blick' da momentan gar nicht durch!
1. Frage: Sind das Separate Dateien in denen die beiden Codes stehen?
2. Wenn das eine Datei ist oder wenn du die erste Datei in die 2. Includest, warum startest du die Session 2-mal? session_start() am anfang der Hauptdatei dürfte genügen
Auf jeden Fall:
Im ersten Code hast du einen Doppelpunkt und keinen Strichpunkt nach dem Start der Session gemacht:
und nichtPHP-Code:session_start();
Dann woher nimmst du im ersten Code das Array $row ?PHP-Code:session_start():
Und im 2. Code hast du einen Fehler in der While-Schleife (die Keys im Array stimmen nicht)
statt dem hier:
muss dass hier hin:PHP-Code:$member = $row[0];
$pass = $row[1];
PHP-Code:$member = $row['Mitglied'];
$pass = $row['Passwort'];
Als Hirte erlaube mir, zu dienen mein Vater dir. Deine Macht reichst du uns durch deine Hand, diese verbindet uns wie ein heiliges Band! Wir waten durch ein Meer von Blut, gib uns dafür Kraft und Mut. In nomine partris et filii et spiritu sancti...
KLICK HIER ;)
Tokio-Hotel's "Durch den Monsun" mal anders.
(\_/)
(O.o) This is Bunny. Copy Bunny into your signature
(> <) to help him on his way to world domination.
-
28.08.07 11:50 #7
- Registriert seit
- Jun 2007
- Ort
- Lingen (Niedersachsen, zZ in Istanbul)
- Beiträge
- 685
Hmm
also das $row
nehm ich aus der while Schleife
Außerdem habe ich nun eine Lösung für das Problem:
Session und Variable dürfen nicht gleich sein,
ich habe $member $members genannt, und $pass $passw und jetzt funktionierts
-
Afaik kann man auf die Werte die mit mysql_fetch_array geholt werden sowohl wie auf ein assoziatives als auch wie auf ein nummerisches Array zugreifen. Von dem her ist seine Lösung korrekt, deine aber sicherlich übersichtlicher und auch die von mir präferierte.
Ich würde den Query anpassen:
Denn du möchtest ja das Mitglied suchen, dass sich eingeloggt hat. LIKE eignet sich eher für Volltextsuchen.PHP-Code:$select = "SELECT id, Mitglied, Passwort, frei FROM spmembers WHERE Mitglied='".$member."' ";
Dann Frage: Was machst du mit global $member; etc.? Mir erschliesst sich der Sinn nicht.
Hast du mal in einem Echo $_SESSION['member'] und $member nebeneinander ausgegeben?
Ist es vielleicht möglich, dass du register_globals auf on hast und sich die Variablen überschreiben?
-
28.08.07 11:58 #9
- Registriert seit
- Jun 2007
- Ort
- Lingen (Niedersachsen, zZ in Istanbul)
- Beiträge
- 685
http://petersilies.pe.funpic.de/sp/Datenbank.php
Seht ihr da ein Suchfeld?
@Igäl:
Ich weiß es nicht,
Aber wenn ich die umbenenne,
siehe Posts über dir,
funktioniert alles
-
@Igäl:
Das hab' ich nicht gewusst, aber danke! Mann lernt bekanntlich nicht aus
@Acriss
Ich sehe da die Fehlermeldungen die du vorhin geschrieben hast und Zwei Textfelder (Alianz-Tag und Spieler) sowie ein Button (Anfrage Senden)!Als Hirte erlaube mir, zu dienen mein Vater dir. Deine Macht reichst du uns durch deine Hand, diese verbindet uns wie ein heiliges Band! Wir waten durch ein Meer von Blut, gib uns dafür Kraft und Mut. In nomine partris et filii et spiritu sancti...
KLICK HIER ;)
Tokio-Hotel's "Durch den Monsun" mal anders.
(\_/)
(O.o) This is Bunny. Copy Bunny into your signature
(> <) to help him on his way to world domination.
-
28.08.07 12:07 #11
- Registriert seit
- Jun 2007
- Ort
- Lingen (Niedersachsen, zZ in Istanbul)
- Beiträge
- 685
Verdammt.Eigentlich geht das doch gar nicht

Anscheinend ist eine richtige Session abgespeichert, und erst nach einem falschen Login, wird die anders abgespeichert, also falsch.
Wie umgehe ich das Problem?
-
28.08.07 12:14 #12
- Registriert seit
- Jun 2007
- Ort
- Lingen (Niedersachsen, zZ in Istanbul)
- Beiträge
- 685
Och lasse das Auch von anderen Testen,
und anscheinend haben sie imemr Zugriff, auch wenn sie nicht eingeloggt sind.
Sie sind noch nicht einmal registriert!
-
Also an deiner Stelle würde ich ganz neu anfangen. Das ganze ist gottseidank nicht so viel!
Zuerst würde ich schauen ob was in der Session steht, dann die Daten in Variablen schreiben. Danach würde ich überprüfen ob das Formular geschickt wurde, und die Daten aus dem Form in die Vars schreiben. Dann würde ich die Vars in der DB überprüfen, ob sie gültig sind. Wenn ja dann die Ausgabe des internen Bereichs ansonsten die Ausgabe der Loginseite
Der Nachteil an diesem Script ist:PHP-Code:session_start();
//Überprüfung der Session
if(isset($_SESSION['member']) && !empty($_SESSION['member']) && isset($_SESSION['pass']) && !empty($_SESSION['pass'])){
$var_member=$_SESSION['member'];
$var_pass=$_SESSION['pass'];
}
//Überprüfung der Formulareingaben
if(isset($_POST['submit']) && !empty($_POST['name']) && !empty($_POST['password'])){
$var_member=mysql_real_escape_string($_POST['name']);
$var_pass=mysql_real_escape_string($_POST['password']);
}
//MySQL-Abfrage starten
$sql=mysql_query("SELECT id,Mitglied,Passwort,frei FROM spmembers WHERE Mitglied='".$var_member."' AND Passwort='".$var_pass."'") or die(mysql_error());
//Ergebnisse der MySQL-Abfrage zählen
$cnt_query=mysql_num_rows($sql);
//Abfrage überprüfen und entsprechendes ausgeben
if($cnt_query == 1){
//SQL-Ergebnisse in ein Array schreiben
$result=mysql_fetch_array($sql);
echo "Sie sind eingeloggt, ".$result['Mitglied'];
$_SESSION['member']=$result['Mitglied'];
$_SESSION['pass']=$result['Passwort'];
//Oder was du sonst im internen Bereich haben willst
}elseif($cnt_query == 0){
//Hier kannst du dann die Loginseite einfügen.
}else{
//Sollten mehr als 1 ergebnis sein oder der inhalt von $cnt_query anders als 1 oder 0 sein, wird diese Meldung ausgegeben:
echo "Ein unbekannter Fehler ist aufgetreten";
}
Ich habs gerad erst geschrieben und daher noch nicht ausprobiert und
Es wird JEDES mal ein SQL-Query gemacht, wenn die Seite aufgerufen wird. Aber das kannst du ja selber umbauen wenn du nicht willst dass die SQL-Anfrage immer wieder durchäuft.Geändert von nero_85 (28.08.07 um 12:45 Uhr) Grund: Ergänzung + Fehler im Code korriegiert
Als Hirte erlaube mir, zu dienen mein Vater dir. Deine Macht reichst du uns durch deine Hand, diese verbindet uns wie ein heiliges Band! Wir waten durch ein Meer von Blut, gib uns dafür Kraft und Mut. In nomine partris et filii et spiritu sancti...
KLICK HIER ;)
Tokio-Hotel's "Durch den Monsun" mal anders.
(\_/)
(O.o) This is Bunny. Copy Bunny into your signature
(> <) to help him on his way to world domination.
-
Mach mal ein solches File und ruf es auf. Dann such, ob register_globals auf on oder off ist. Sofern es auf on ist, ist klar, warum deine Variablen überschrieben werden. Am besten setzt du es sowieso auf off. Warum ist hier nachzulesen: http://de.php.net/manual/de/security.globals.phpPHP-Code:
<?php
phpinfo();
?>
@nero: Ja leider. Man hat immer was zu lernen
-
28.08.07 14:05 #15
- Registriert seit
- Jun 2007
- Ort
- Lingen (Niedersachsen, zZ in Istanbul)
- Beiträge
- 685
Ich habe jetzt, wie nero es geraten hat, zuerst überprüft, ob die SESSION existiert.
Wäre nocheinmal jemand so freundlich,und guckt ob er Zugriff hat?
http://petersilies.funpic.de/sp/Datenbank.php
mfg
@Igäl:
Ich kann es nicht an oder aus stellen,
der Server gehört nicht mir (funpic)
Ähnliche Themen
-
[IE7 Problem] Problem mit ul/li Höhen im IE7 bei Verwendung eines vertikalen Menüs
Von josDesign im Forum CSSAntworten: 0Letzter Beitrag: 11.01.11, 21:40 -
Problem: Flash MX (7.1) exportiert meine Fla nicht mehr - dringendes Problem
Von Lukasz im Forum Flash PlattformAntworten: 4Letzter Beitrag: 22.03.06, 20:50 -
Problem mit hover- background ändern & Problem bei Reload
Von ollioollio im Forum CSSAntworten: 0Letzter Beitrag: 06.10.04, 14:03 -
PROBLEM! Pinnacle 2 GB Begrenzung Windows 2000 DC 50 PROBLEM!
Von hennym im Forum Videoschnitt, Videotechnik & -produktionAntworten: 6Letzter Beitrag: 17.09.03, 22:09 -
Problem mit PopUp (Ja ich weiss Suche benutzten, hab ein ganz anderes Problem)
Von killkrog im Forum Javascript & AjaxAntworten: 6Letzter Beitrag: 13.06.02, 12:29





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren