Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Login/Memberbereich mit Sessions [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-consult PHP Entwicklung
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Login/Memberbereich mit Sessions


 
japetos
25-07-2006, 12:53 
 
Hallo, danke erstmal für das sehr gute Tutorial.

Hier meine frage:

In dem Tutorial wird unter anderem ein Level-wert abgefragt.
Ich möchte so etwas ähnliches machen. Und zwar folgendermaßen.

Ich habe verschieden User-Typen (z.B. User,Admin)
Der User soll nur gewisse dinge bearbeiten können, während der Admin mehrere Dinge sehen können darf.

Wie prüfe ich denn? Im tutorial steht was von if (! session_is_registered('username'))

geht das auch mit Level? Wenn ja wie mache ich die Überprüfung auf User/Admin?

 
TobiaZ
25-07-2006, 19:48 
 
wie du im manual lesen kannst, ist session_is_registered() veraltet. darüber hinaus wäre der generelle umgang mit sessions für dich interessant.

speicher einfach den Typ (z.b. 1 für user, 2 für admin) in der session. dann kannst du den wert ganz einfach über das $_SESSION-Array abfragen. Fertig.

 
japetos
25-07-2006, 19:57 
 
Also ich check das immernoch nicht so ganz mit den Sessions.

ich setze die Session:
session_register('user_typ');

Und wie kann ich dann die überprüfung machen ob User(1) oder Admin(2) ist?

 
hhcm
25-07-2006, 20:17 
 
Mach mal


echo $_SESSION["user_typ"];


nach dem register.. Dann weisst du was TobiaZ meint.


Anstatt session_register kannst du bzw. solltest du

$_SESSION["user_typ"] = "wert";

benutzen

 
japetos
25-07-2006, 20:25 
 
habe jetzt
session_register('log_typ');
echo $_SESSION["log_typ"];

Da wird aber nichts ausgegeben!

 
TobiaZ
25-07-2006, 20:33 
 
ja, und wegen session_register() liest du bitta auch mal nach, wie veraltet die funktion ist.

 
japetos
25-07-2006, 20:41 
 
...ich hab nachgeschaut.

bei php.net steht auch nur dass es veraltet ist, aber wie man es machen soll. steht natürlich nicht. zumindest nicht so dass es verständlich ist.

ich glaub ich gebs auf :confused:

LOGIN-SEITE:

.....
}else{
$password = md5($password);
$query = @mysql_query("SELECT spitzname,user, pass, login_typ FROM spieler WHERE user = '".$_POST['username']."' LIMIT 1");
$result = @mysql_fetch_array($query) or die('<p align="center">Sorry, aber dieser Benutzername existiert nicht!<br><a href="index.php">Zur&uuml;ck</a></p>');
if (mysql_errno()) { die("MySQL sagt:<BR>". mysql_error() ."<BR>Query:<BR>". $query);}
$log = $result['login_typ'];
if($password != $result['pass']){
echo '<form action="index2.php" method="post">';
echo '<p align="center">Sorry, aber dieses Passwort ist falsch!<br><br>';
echo '<input type="hidden" name="username" value="'.$_POST['username'].'">';
echo '<input type="submit" name="zurueck" value="Zur&uuml;ck"></p>';
echo '</form>';
die;
}else{
$log = $result['user'];
$user = $result['user'];
$_SESSION["spitzname"] = $log;
printf("Login erfolgreich: <a href=\"./admin/index.php?sid=$log\">weiter</a>");
}
}



ADMIN-SEITE:

<?
session_start();
if(!session_is_registered('spitzname') || $_SESSION['spitzname'] == "") {
header("location:../index2.php");
die;
}
$dbHost = "localhost";
$dbUser = "bla";
$dbPass = "bla";
$dbName = "bla";

$connect = @mysql_connect($dbHost, $dbUser, $dbPass) or die("Konnte keine Verbindung zum Datenbankserver aufbauen!");
$selectDB = @mysql_select_db($dbName, $connect) or die("Konnte die Datenbank <b>$dbName</b> nicht ausw&auml;hlen!");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href=".././css/style.css">
<title></title>
</head>

<body>
<table width="700" border="0" cellspacing="0" cellpadding="0">
...
...
...
<?php
$query = @mysql_query("SELECT * FROM spieler WHERE spitzname = '$sid' LIMIT 1");
$result = @mysql_fetch_array($query) or die('<p align="center">Sorry, aber dieser Benutzername existiert nicht!<br><a href="index.php">Zur&uuml;ck</a></p>');
if (mysql_errno()) { die("MySQL sagt:<BR>". mysql_error() ."<BR>Query:<BR>". $query);}
if ($result['log_typ']==4)
{
printf("
...

 
hhcm
25-07-2006, 21:38 
 
bei php.net steht auch nur dass es veraltet ist, aber wie man es machen soll. steht natürlich nicht. zumindest nicht so dass es verständlich ist.


:confused:

Was steht da nicht?



$barney = "A big purple dinosaur.";
session_register("barney");

// Ab PHP 4.1.0 ist die Verwendung von $_SESSION vorzuziehen
$_SESSION["zim"] = "An invader from another planet.";


Ok in diesem Beispiel hätte man


$_SESSION["barney"] = "A big purple dinosaur.";


schreiben sollen.

Außerdem nutzt du immer noch session_is_registered anstatt die Hilfestellung, die dir gegeben wird, mal zu benutzen.


// z.B
if(!session_is_registered('spitzname') || $_SESSION['spitzname'] == "") { // veraltet }



if (!empty($_SESSION["spitzname"]) { // Schon kürzer oder? }

 
japetos
25-07-2006, 22:33 
 
Habs hinbekommen!
Genauso wie ihr es gesagt habt!!!

Vielen,vielen Danke nochmal.

Jetzt hab ichs auch kapiert!!! :huep:

:)

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:54 Uhr.