You are not logged in.

wcf.regNote.message

Djadjabing

Trainee

  • "Djadjabing" started this thread

Posts: 90

Location: Düsseldorf

Occupation: Flugzeugabfertiger

  • Send private message

1

Friday, September 9th 2005, 8:12pm

Sessions

Hi,

so ich habe da mal so ne kleine frage.

Ich möcht gern mal was mit Session ID's arbeiten. Habe mir auch mal wa sdurchgelesen und so halbwegs verstanden.
Nur wurde mir da nicht geholfen =/
Deshalb hier meine frage:

Ich möchte gerne wissen wo und wie ich eine session deklariere mit den werten.
Als hintergrund, ich möchte user die ich in einer db gespeichert habe damit überprüfen ob die für bestimmte bereiche zugriff haben und ggf noch ansere user daten aufrufen fals da sgeht um die auf der seite anzeigen zu lassen...

naja und da wollte ich wissen wie ich das machen muss und vor allem wo alles was rein muss!

wenn wa sunklar sein sollte frag mich ich weis sis verwirrend mein text ^^

kiitos schon mal
?( Sie brauchen einen Computer nicht einzuschalten um festzustellen, ob WINDOWS installiert ist. Sehen sie einfach nach, ob die Aufschrift auf der Reset Taste noch lesbar ist. :lol:

Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

2

Friday, September 9th 2005, 8:16pm

Guck mal hier, da hat schon jemand en Login mit Sessions gemacht vielleicht wird dir dadurch ein bissel was klarer.

sicherer login mit session usw

ciao Ephraim

Djadjabing

Trainee

  • "Djadjabing" started this thread

Posts: 90

Location: Düsseldorf

Occupation: Flugzeugabfertiger

  • Send private message

3

Friday, September 9th 2005, 8:21pm

ich schau mal wie wiet ich das missbrauchen kann =)
?( Sie brauchen einen Computer nicht einzuschalten um festzustellen, ob WINDOWS installiert ist. Sehen sie einfach nach, ob die Aufschrift auf der Reset Taste noch lesbar ist. :lol:

Djadjabing

Trainee

  • "Djadjabing" started this thread

Posts: 90

Location: Düsseldorf

Occupation: Flugzeugabfertiger

  • Send private message

4

Tuesday, October 4th 2005, 10:09am

Also ich habe es mir mal angeschaut gehabt nur konnt ich nix damit anfangen...

nun mach ich mir gerade die arbeit und versuche das zu verstehen nur kapier ich da einige sachen nicht... habe bei php.net das tut angesehen und naja ein kelinen teil habe ich verstanden und zwar wie ich eine session regestriere is ja auch ganz einfach... nur sagt der mir ein fehler wenn ich was machen will code und fehler kommen...

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?session_start();
include("./include/conect.php");
include("./funktion.php");
$nick = getVar("nick");
$password = getVar("password");
$res = mysql_query( "SELECT id FROM user WHERE nick='".$nick."' and password='".md5($password)."'", $db);
if( @$row=mysql_fetch_array($res) ){
	 $nick 	= $row["nick"];
         session_register("nick"); 
         mysql_close( $db);
 	 header("Location: ./save.php");	
         exit();
}
mysql_close( $db);
header( "Location: ./login.php?failure=yes");
exit();
?>
Notice: Undefined index: nick in C:\Programme\Apache Group\Apache2\htdocs\test-ecke\check_login.php on line 34

Warning: Cannot modify header information - headers already sent by (output started at C:\Programme\Apache Group\Apache2\htdocs\test-ecke\check_login.php:34) in C:\Programme\Apache Group\Apache2\htdocs\test-ecke\check_login.php on line 41

diese fehler meldung kommt dan immer.

so nun meine weiter führende frage... ich möcht ja sozusagen einen internen bereich machen wo nur die leutz rein kommen die sich angemeldet haben.... WAS mus sich nun auf den gesicherten seiten schreiben und warum?
UND wie müsste ich das dann handhaben das ich bestimmten usern rechte geben kann. zb das die bestimmte links sehen können?

ich habe da zwar was von nem kollegen aber kapiert so recht habe ich es nicht?!
Code kommt

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?session_start();
...
if( !session_is_registered("member")) {
         header( "Location: ./check_login.php");
         exit();
}
.......
$isadmin = false;
@$res=mysql_query("select rang from ally_user where id=".$member);
if (@$row = mysql_fetch_row( $res)){
         $tmp = explode( " ", $row[0]);
         if( $tmp[0]=="admin")
                  $isadmin = true;
}
bei dem unteren teil versteh ich nur Bahnhofbei dem oberen teil nja ich denke das der da abfragt ob die session halt regestriert ist... aber was für ne variable muss da rein? Wenn das die is die ich in der datei ganz oben regestriert habe wie sieht das dann aus wenn ich meherer daten regestrieren will nicht nur den nick sodern auch den rang email und so nen krempel?!Vielen dank schon mal für die hilfe =/
?( Sie brauchen einen Computer nicht einzuschalten um festzustellen, ob WINDOWS installiert ist. Sehen sie einfach nach, ob die Aufschrift auf der Reset Taste noch lesbar ist. :lol:

Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

5

Tuesday, October 4th 2005, 10:19am

Wenn du in deinem Select

Quoted

SELECT id FROM user WHERE nick=....

nur die id auswählst dann kannst du später auch keinen Nick bekommen

Quoted

$nick = $row["nick"];


also entweder "Select * from" oder "Select id, nick from" machen.

Ciao Ephraim

Djadjabing

Trainee

  • "Djadjabing" started this thread

Posts: 90

Location: Düsseldorf

Occupation: Flugzeugabfertiger

  • Send private message

6

Tuesday, October 4th 2005, 10:21am

also müsste es dann heissen

select id, nick(, password) from user where nick=... ???

meinste das so?
?( Sie brauchen einen Computer nicht einzuschalten um festzustellen, ob WINDOWS installiert ist. Sehen sie einfach nach, ob die Aufschrift auf der Reset Taste noch lesbar ist. :lol:

This post has been edited 1 times, last edit by "Djadjabing" (Oct 4th 2005, 10:22am)


Djadjabing

Trainee

  • "Djadjabing" started this thread

Posts: 90

Location: Düsseldorf

Occupation: Flugzeugabfertiger

  • Send private message

7

Tuesday, October 4th 2005, 10:23am

wofür steht der stern in der select anweisung? is da sso ein allgemeiner platz halter?#

vergiss den vopost =/
?( Sie brauchen einen Computer nicht einzuschalten um festzustellen, ob WINDOWS installiert ist. Sehen sie einfach nach, ob die Aufschrift auf der Reset Taste noch lesbar ist. :lol:

Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

8

Tuesday, October 4th 2005, 10:24am

Und zu deinem zweitem Prob:
Mach dir in deiner Usertabelle in der DB einfach eine neue Spalte dazu, der gibts du dann einfach einen Wert 0 oder 1.
1 == dieser User ist Member
0 == dieser User ist ein Gast

und dann hier:

PHP Source code

1
2
3
4
5
6
7
if( @$row=mysql_fetch_array($res) ){
         $nick $row["nick"];
         session_register("nick"); 
         mysql_close$db);
         header("Location: ./save.php");
         exit();
}

einfach noch ein:

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
if( @$row=mysql_fetch_array($res) ){
         $nick $row["nick"];
         session_register("nick");
         if ($row['member'] == 1) {
                  $member 1;
                  session_register("member");
         }
         mysql_close$db);
         header("Location: ./save.php");
         exit();
}


Ciao Ephraim

Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

9

Tuesday, October 4th 2005, 10:26am

Also entweder du gibts jede Spalte an die du haben willst,

PHP Source code

1
$query "Select spalte1, spalte2, spalte3 from table1";

oder wenn du alle Spalten selektieren willst kannst du eben * verwenden. Ja des is dann en Platzhalter für ALLE Spalten.

PHP Source code

1
$query "Select * from table1";


Ciao Ephraim

Djadjabing

Trainee

  • "Djadjabing" started this thread

Posts: 90

Location: Düsseldorf

Occupation: Flugzeugabfertiger

  • Send private message

10

Tuesday, October 4th 2005, 10:27am

hui =) fein fein

wie schaut das nun aus is der "gast" dan auch auf den geschützen seiten? oder nur der member? und wie müsste man das dann erweitern wenn man meherere user grupen haben will?
?( Sie brauchen einen Computer nicht einzuschalten um festzustellen, ob WINDOWS installiert ist. Sehen sie einfach nach, ob die Aufschrift auf der Reset Taste noch lesbar ist. :lol:

Djadjabing

Trainee

  • "Djadjabing" started this thread

Posts: 90

Location: Düsseldorf

Occupation: Flugzeugabfertiger

  • Send private message

11

Tuesday, October 4th 2005, 10:30am

hmm also ich ahbe das mal so editiert wie du sagtest mit dem member dingen....

nun bekomm ich wenigstens keine fehler mehr angezeigt 8)
?( Sie brauchen einen Computer nicht einzuschalten um festzustellen, ob WINDOWS installiert ist. Sehen sie einfach nach, ob die Aufschrift auf der Reset Taste noch lesbar ist. :lol:

Djadjabing

Trainee

  • "Djadjabing" started this thread

Posts: 90

Location: Düsseldorf

Occupation: Flugzeugabfertiger

  • Send private message

12

Tuesday, October 4th 2005, 10:34am

JUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUHU

naja ma müsste nur mal die null in der db durch ne 1 ersetzen =) dann klappts auch mit dme login =P

also ich brauche nun nur noch

if( !session_is_registered("member"))
{
header( "Location: ./check_login.php");
exit();
}

an jedensieten anfang packen und der weiss was sache ist?!
?( Sie brauchen einen Computer nicht einzuschalten um festzustellen, ob WINDOWS installiert ist. Sehen sie einfach nach, ob die Aufschrift auf der Reset Taste noch lesbar ist. :lol:

Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

13

Tuesday, October 4th 2005, 10:41am

genau ... wenn dann ein member eingeloggt ist kommt der da weiter,
ein gast wird immer in den check_login geschickt!

Ciao Ephraim

Djadjabing

Trainee

  • "Djadjabing" started this thread

Posts: 90

Location: Düsseldorf

Occupation: Flugzeugabfertiger

  • Send private message

14

Tuesday, October 4th 2005, 10:47am

so nochmal zu den mehreren user gruppen:

du hattest gesagt 0=lump und 1=member, nun möchte ich sg ich mal noch 2 gruppen haebn da kann ich ja 2=Moderator und 3= admin=GOTT machen

nur wie schauts danna us mit der session iid und so

if ($row['rang'] == 1) {
$member = 1;
session_register("member");

das hattest du gesagt für den einen...

aber wie schauts aus bei mehreren? und wie wirkt sich das auf die aufbau weise der seite auf?
?( Sie brauchen einen Computer nicht einzuschalten um festzustellen, ob WINDOWS installiert ist. Sehen sie einfach nach, ob die Aufschrift auf der Reset Taste noch lesbar ist. :lol:

Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

15

Tuesday, October 4th 2005, 11:01am

Ganz Easy :)

du kannst weiterhin mit
session_is_registered("member") die Gäste rausfiltern und
für die anderen übernimmst du erstmal den Wert aus der DB in die Var member (würde ich aber dann ändern nach z.B. rights)
so z.B.:

PHP Source code

1
2
3
4
if ($row['member'] != 0) {
       $member $row['member'];
       session_register("member");
}

und schon kannst du dann überprüfen mit:

PHP Source code

1
2
3
4
5
6
7
8
9
if($_SESSION['member'] == 1) {
// members
}
else if($_SESSION['member'] == 2) {
// moderartors
}
else if($_SESSION['member'] == 3) {
// admins
}

Ciao Ephraim

Djadjabing

Trainee

  • "Djadjabing" started this thread

Posts: 90

Location: Düsseldorf

Occupation: Flugzeugabfertiger

  • Send private message

16

Tuesday, October 4th 2005, 11:10am

ok verstanden!

wie mus sich das dann jetzt auf einer seite machen beispiel ich habe diese 3 user gruppen die was sehen können...

und es gibt drei links oder drei ausgaben mir latte

user kann nur ausgabe 1 sehen mod kann 1 und 2 sehen und admin halt alle 3

wie müsste ich dann die seite aufbauen...

anfangen würde ich so:

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
session_start();

include("./include/conect.php");
include("./funktion.php");

if( !session_is_registered("member"))
{
header"Location: ./check_login.php");
exit();
}

echo "Ausgabe 1<br>";
echo "Ausgabe 2<br>";
echo "Ausgabe 3<br>";
echo "<a href='./logout.php'>Raus Hier</a>";
?>
naja is net viel aber wennm an den anfang netmal weiss =)
?( Sie brauchen einen Computer nicht einzuschalten um festzustellen, ob WINDOWS installiert ist. Sehen sie einfach nach, ob die Aufschrift auf der Reset Taste noch lesbar ist. :lol:

This post has been edited 1 times, last edit by "Djadjabing" (Oct 4th 2005, 11:11am)


Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

17

Tuesday, October 4th 2005, 11:28am

Wenn du in dem GetVar auch $_SESSION behandelst dann kannst du des so machen:

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
session_start();

include("./include/conect.php");
include("./funktion.php");

if( !session_is_registered("member"))
{
header"Location: ./check_login.php");
exit();
}
$rank GetVar("member");
// hier sind ja nur User, Mods oder Admins, insofern für Ausgabe 1 keine Abfrage
echo "Ausgabe 1<br>";
// nur Mods und Admins
if($rank == || $rank == 3) {
      echo "Ausgabe 2<br>";
}
// nur Admins
if($rank == 3) {
      echo "Ausgabe 3<br>";
}
echo "<a href='./logout.php'>Raus Hier</a>";
?>


Ohne GetVar:

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
session_start();

include("./include/conect.php");
include("./funktion.php");

if( !session_is_registered("member"))
{
header"Location: ./check_login.php");
exit();
}
// hier sind ja nur User, Mods oder Admins, insofern für Ausgabe 1 keine Abfrage
echo "Ausgabe 1<br>";
// nur Mods und Admins
if($_SESSION['member'] == || $_SESSION['member'] == 3) {
      echo "Ausgabe 2<br>";
}
// nur Admins
if($_SESSION['member'] == 3) {
      echo "Ausgabe 3<br>";
}
echo "<a href='./logout.php'>Raus Hier</a>";
?>


Ciao Ephraim

Ephraim

Professional

Posts: 826

Location: coder-board.info

Occupation: Info-Student

  • Send private message

18

Tuesday, October 4th 2005, 11:31am

Hmm ... GetVar sollteste aber vielleicht in dem Fall nicht machen, weil wenn du da auch $_GET behandelst dann ruft einer deine z.B.
index.php so auf:
index.php?member=3
und der sieht dann alle Admin sachen :(

Ciao Ephraim

Djadjabing

Trainee

  • "Djadjabing" started this thread

Posts: 90

Location: Düsseldorf

Occupation: Flugzeugabfertiger

  • Send private message

19

Tuesday, October 4th 2005, 11:33am

ja ich abe auch das prb wegen der PHP version wohl naja

ich habe es mal die version 2 getestet und folgendes kam raus

Notice: Undefined index: member in C:\Programme\Apache Group\Apache2\htdocs\test-ecke\check_login.php on line 19

Notice: Undefined index: member in C:\Programme\Apache Group\Apache2\htdocs\test-ecke\check_login.php on line 22

Notice: Undefined index: member in C:\Programme\Apache Group\Apache2\htdocs\test-ecke\check_login.php on line 25

Warning: Cannot modify header information - headers already sent by (output started at C:\Programme\Apache Group\Apache2\htdocs\test-ecke\check_login.php:19) in C:\Programme\Apache Group\Apache2\htdocs\test-ecke\check_login.php on line 30
?( Sie brauchen einen Computer nicht einzuschalten um festzustellen, ob WINDOWS installiert ist. Sehen sie einfach nach, ob die Aufschrift auf der Reset Taste noch lesbar ist. :lol:

Djadjabing

Trainee

  • "Djadjabing" started this thread

Posts: 90

Location: Düsseldorf

Occupation: Flugzeugabfertiger

  • Send private message

20

Tuesday, October 4th 2005, 11:52am

PHP Source code

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
 <?
session_start();
include("./include/conect.php");
include("./funktion.php");
$nick getVar("nick");
$password getVar("password");
$res mysql_query"SELECT * FROM user WHERE nick='".$nick."' and password='".md5($password)."'"$db);
if( @$row=mysql_fetch_array($res) ) {
          $nick $row["nick"];
          session_register("nick");
          if($_SESSION['member'] == 1) {
                          // members
          }
          else if($_SESSION['member'] == 2) {
                          // moderartors
          }
          else if($_SESSION['member'] == 3) {
                          // admins
          }
          mysql_close$db);
          header("Location: ./save.php");
          exit();
}
mysql_close$db);
header"Location: ./login.php?failure=yes");
exit(); ?>

datei 2

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 <?
session_start();
include("./include/conect.php");
include("./funktion.php");
if( !session_is_registered("member")) {
      header"Location: ./check_login.php");
      exit();
}
// hier sind ja nur User, Mods oder Admins, insofern für Ausgabe 1 keine Abfrage
echo "Ausgabe 1<br>";
// nur Mods und Admins
if($_SESSION['member'] == || $_SESSION['member'] == 3) {
        echo "Ausgabe 2<br>";
}
// nur Admins
if($_SESSION['member'] == 3) {
       echo "Ausgabe 3<br>";
}
echo "<a href='./logout.php'>Raus Hier</a>";
?>
?( Sie brauchen einen Computer nicht einzuschalten um festzustellen, ob WINDOWS installiert ist. Sehen sie einfach nach, ob die Aufschrift auf der Reset Taste noch lesbar ist. :lol:

wcf.user.socialbookmarks.titel