Session+Login |
MajorWindbeutel
Quasselstrippe Threadstarter
Beiträge: 328 |
Hi.
Das wurde bestimmt schonmal gefragt aber ich finde nichts.
Also ich brauche ein Login Script mein altes taugt einfach nichts.
Ich habe gehört das man sowas auch mit MySQL und Session's machen kann.
Aber leider probier ich vergeblich da was hinzubekommen.
Ich weiß nur das ich
session_start()
session_register
brauch.
Aber mehr nicht.
Könntet ihr mir (mal wieder) helfen?
Ich sag auch ganz nett bitte und mach schöne Augen
Vielen Dank im Voraus
---
Mit freundlichen Grüßen
MajorWindbeutel
Meine Homepage
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
|
 Profil
Editieren
Zitieren
|
MajorWindbeutel
Quasselstrippe Threadstarter
Beiträge: 328 |
Ich habe gerade den PHP 5 Artikel gelesen man ist das schwer!
Ich kann doch weiter den PHP4 Stil nutzen oder?!
Danke für dei Antwort
---
Mit freundlichen Grüßen
MajorWindbeutel
Meine Homepage
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
dsc
Pixelschubser
Beiträge: 8 |
Also du must zuerst natürlich die Session Starten, dies machst du mit:
Anschliessend mache ich dies in meinen Scripten immer so:
1. Benutzer muss Benutzername und Passwort eingeben [Formfelder]
2. Die Angaben des Benutzers werden mit der MySQL Datenbank verglichen
3. Nun erstelle ich eine Session:
1: | $_SESSION['userID'] = $userID; |
Nun bei jeder Seite, die nur für CommunityUser ist, füge ich diesen Code ein:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10: |
$user = $_SESSION['userID']
if($user) {
// Der übrige Code hier rein...
}
else { echo "Sie haben keine Berechtigung für diese Seite!"; }
?> |
Und wenn sich jemand ausloggen möchte, kann man einfach diesen Befehl machen:
1: | unset($_SESSION['userID']); |
Habe mal den Teil mit der MD5-Verschlüsselung weggelassen... ist zwar nicht schwer, aber verwirrt warscheinlich eh nur und hat nix mit deinem Problem zu tun.
Gruss
dsc
Diese Nachricht wurde geändert von: dsc |
 Profil
E-Mail
Website
Editieren
Zitieren
|
[SpecFor]crusher
Otto-Normal-Poster
Beiträge: 97 |
Achtung, mein Script:
loginform.php
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22: |
Login';
$loginform .= ' ';
?>
|
Die Funktionen login(); und isAdmin(); in der functions.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: |
function login()
{
global $_SESSION, $db;
$sql = "SELECT user, pw FROM user where user='".$_SESSION['user']."'";
mysql_select_db($db['database'], $db['connect']);
$r_user = mysql_query($sql, $db['connect']);
if( mysql_num_rows($r_user) > 0 )
{
$result = array();
$result = mysql_fetch_array($r_user);
if( $result['pw'] == $_SESSION['pw'] AND $result['user'] == $_SESSION['user'] )
{
return true;
}
else
{
return false;
}
} //Ende if num_rows
} //Ende Funktion
function isAdmin($user)
{
global $db;
$sql = "SELECT admin FROM user where user='$user'";
mysql_select_db($db['database'], $db['connect']);
$r_user = mysql_query($sql, $db['connect']);
if( mysql_num_rows($r_user) > 0 )
{
$result = array();
$result = mysql_fetch_array($r_user);
if( $result['admin'] == 1 )
{
return true;
}
else
{
return false;
}
} //Ende if num_rows
} //Ende Funktion
|
datei.php (Jede Datei braucht diesen Abschnitt für den Login)
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: |
Admin
Hier kommt der PW-geschützte Inhalt der Datei hin.
|
Eine höhere Sicherheit beim Login würde eine md5 Verschlüsselung bringen.
Statt der Zeile
1: | if( $result['pw'] == $_SESSION['pw'] AND $result['user'] == $_SESSION['user'] ) |
müsste
1: | if( $result['pw'] == md5($_SESSION['pw']) AND $result['user'] == $_SESSION['user']) |
da stehen.
Wenn du fragen hast, immer her damit.
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
ernie2005
Pixelschubser
Beiträge: 1 |
was steht den in der _base.inc.php drin ?
|
 Profil
E-Mail
Editieren
Zitieren
|
sc0rp
Pixelschubser
Beiträge: 6 |
wenn ich das so wie dsc mache, was gehört dann in die if-schleife, die betreten wird wenn name und passwort stimmen?
mfg sc0rp
|
 Profil
E-Mail
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
ja alles das was der user dann können soll, also quasi der bereich hinter dem login.
|
 Profil
Editieren
Zitieren
|
sc0rp
Pixelschubser
Beiträge: 6 |
aber was nützen mir dann die sessions?
ich will ja dann schreiben
if(adminrechte==1) {
verwaltungskram
}
else {
}
verstehst du?
|
 Profil
E-Mail
Editieren
Zitieren
|
dsc
Pixelschubser
Beiträge: 8 |
Also... ich habe mir ja in meinem Code die UserID in eine Session-Variable geschrieben... warum dies?
Der Grund für dieses Prozedere ist ja dies, dass der User ja sonst auf jeder weiteren Site sein BN bzw. PW wieder eingeben müsste... und wieso? Weil ich ja sonst keien Anhaltspunkte hätte, welcher User dies ist (Ausser Cookielösung... ist ja klar). Wenn ich z.B. die UserID des momentan angemeldeten User (über die Session...) habe, kann ich auch weitere Abfragen machen. Normalerweise ist ja die UserID (sag ich jetzt einfach mal so) zusätzlich auch der Indexwert der User-Tabelle in der Datenbank, also ein Indexwert/Primärschlüssel.
Gut, dann haben wir ja schon einmal einen eindeutigen Wert für jeden User. Anschliessend ist dies die einzige Session-Variable die ich speichern muss, da ich den rest alles, nach bedarf selektieren kann (select * from `xY` WHERE `ID` = $_SESSION['UserID']).
Wenn ich evtl. irgendwelche Performance hohlen möchte... kann ich auch gew. Zusatzwerte auch in Session-Variabeln abspeichern... nur naja... da würden warscheinlich wieder andere mit dem Thema "Security" kommen... darum lassen wir das weg
Also wenn du jetzt abfragen möchtest, ob die adminrechte gleich 1 sind, musst du ja einen Anhaltspunkt haben, von wem man redet, also brauchst du ein Indiz, sprich die UserID.
Ist dir dieses Prozedere nun klar? Ansonsten einfach weitere Fragen posten... gebe sonst noch ein paar Programmbeispiele dar... aber nun hab ich knapp 3 Promille und muss ins Bett
Gruss
dsc
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
sc0rp
Pixelschubser
Beiträge: 6 |
dsc, bitte geh mal wieder ins ICQ damit wir das dort klären können.
|
 Profil
E-Mail
Editieren
Zitieren
|
dsc
Pixelschubser
Beiträge: 8 |
sc0rp, bitte schreibe Fragen, wenn du hast hier rein.
1. Dann können alle davon profitieren
2. Ich hab nicht immer Zeit für 2 Stunden PHP/MYSQL Support wie das letzte mal
3. Kann ich nee Antwort schreiben wenn es mir passt
Dies hier ist ein PHP/MYSQL Forum für Leute die Fragen haben oder etwas wissen möchten... also schreib doch einfach wenn du was nicht verstehst... dafür bin nicht nur ich, sondern alle hier da
Gruss
dsc
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
sc0rp
Pixelschubser
Beiträge: 6 |
ok, und damit ich jetz ALLES verstehe, müsst ihr mir bitte erklären, warum das nicht geht:
Also die index.php lautet:
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: |
Login-System
Tut mir leid - aber die angeforderte Seite existiert nicht.
Schau doch besser mal nach, ob du dich nicht vertippt hast ;)
"; } ?>
|
und die start.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: |
|
Also bitte erklärt mir einer was man noch braucht dass das:
if($_SESSION['userid'] == "0") {
print("Hi");
}
ausgeführt wird...
PS.: ICh weiß das das nicht gehen kann aber ihr müsst mir das erklären wieso und wie man es richtig machen muss.
bitte helft mir!
Diese Nachricht wurde geändert von: sc0rp |
 Profil
E-Mail
Editieren
Zitieren
|
Thodi
Fachidiot
Beiträge: 101 |
Hi ich bin der Thorsten und bin neu hier,
Ich habe da ein Problem aber keiner konnte mir genau helfen.
Ich wollte eine session schreiben die soll den namen und auf einer anderen seite ausgeben.
auf der ersten seite soll einer sein namen eintippen und dann versenden als session so das der name den mal eingeben hat auf der anderen seite zu lesen ist.
kann mir da einer helfen.ich habe schon viele hilfen gelesen aber ich verstehe das nicht.
|
 Profil
E-Mail
Editieren
Zitieren
|
dsc
Pixelschubser
Beiträge: 8 |
Also, wenn du den Namen nur einmalig verwenden möchtest, würde ich den Namen mittels der $_GET bzw. noch besser mit der $_POST Variabel weiterleiten lassen.
Wenn du aber den Namen, bzw. irgendeine BenutzerID für spätere Zwecke noch weiterverwenden möchtest, empfehle ich das Verwenden der $_SESSION Variabel.
Wie du das machen musst, ist eigentlich schon ein paar mal hier sehr gut beschrieben worden.
Wie gesagt, musst du zuerst die Variabel im Header setzen.
Wenn dies Funktioniert würde ich mal eine Testpage machen um zu schauen, dass der Code auch wirklich funktioniert:
1:
2:
3:
4:
5: | $strName = "Mein Name";
$_SESSION['name'] = $strName;
echo $_SESSION['name']; |
Wenn er dann beim Laden der Datei, den Text "Mein Name" ausgibt, weisst du, dass er die Variable wirklich richtig schreiben kann.
Wenn dies funktioniert, kannst du diese Variable, solange sie nicht wieder released wird benutzen.
Je nach Konfiguration in der php.ini wird sie beim aktiven Fenster nach einer Zeit wieder freigegeben. Glaube standartmässig ist es ca. 25 Minuten inaktivität noch gespeichert.
Was für ein Problem hast du denn beim erstellen dieser Variabel? Bekommst du irgendwelche Fehlermeldungen? Wie sehen deine *.php Files so aus?
Umso mehr Informationen du mitgibst, umso einfacher ist es die Lösung für ein Problem zu finden.
|
 Profil
E-Mail
Website
Editieren
Zitieren
|