Logo - MyWebsolution.de
User gesamt  :  1669332
User online  :  1
KubaSeoTräume, PHP Forum, PHP Community and more ... MyWebsolution.de!
   
   
 
Registrieren Login User F.A.Q Suche Home

eingeloggt bleiben

MyWebsolution.de Foren » Tutorials » Loginsystem Tutorial

Seite: 1 Posts pro Seite: 5 10 20
Autor Thread
18.11.2008 09:20 Uhr Loginsystem Tutorial
Che
User
 
registriert 18.11.2008
wohnt in
Beiträge 1
Alles funktioniert Tip top ausser User bearbeiten und User administrieren funktioniert nicht.
Wenn ich die Rechte ändern will kommt:
Zitat:
Notice: Undefined index: Rechte in /xxxxxxx/htdocs/bla/admin/user/index.php on line 14

Warning: in_array() [function.in-array]: Wrong datatype for second argument in /xxxxxxx/htdocs/bla/admin/user/index.php on line 14

Aussgabe
Sie sind nicht berechtigt, diese Seite zu betreten.
Wenden sie sich bitte an den Administrator, falls es sich hier um ein Missverständnis handelt


Ich bin aber Admin?!
Habe ectra nochmals das script mit dem admin Acc anlegen, durchlaufen lassen:(
Profil ansehen
23.11.2008 17:19 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Hey,
tritt der Fehler bei allen Usern auf?


Profil ansehen Mail senden
13.12.2009 21:57 Uhr
Pebbles
User
 
registriert 13.12.2009
wohnt in
Beiträge 5
Hi

ich hab das Tutorial jetzt durchgelesen und die Dateien angelegt. erstmal muss ich sagen: SPITZE!!! so ein übersichtliches Tutorial hab ich schon länger gesucht. Ich versuch es jetzt zum Laufen zu bringe aber ich hab noch ein paar Probleme. Anfangen tut es mit dem Registrieren. wenn ich den Sourcecode so verwende wie im Tut und mich dann registrieren möchte bekomme ich folgende Meldung:

Zitat:
INSERT INTO
User
(Nickname,
Email,
Passwort,
Show_Email,
Registrierungsdatum,
Wohnort,
Homepage,
ICQ,
AIM,
YIM,
MSN
)
VALUES
('test',
'grka@gmx.de',
'60e964f80d668eead87bcef9dc8f79a7',
'0',
CURDATE(),
'',
'',
'',
'',
'',
''
)
Field 'SessionID' doesn't have a default value Ihr Account wurde nicht erstellt


eine SessionID wird tatsächlich nicht in die DB geschrieben... fehlt das noch oder liegt der Fehler wo anders?
Profil ansehen
13.12.2009 22:26 Uhr
Pebbles
User
 
registriert 13.12.2009
wohnt in
Beiträge 5
und wenn ich mich als admin einlogge bekomme ich die Meldung:
"Sie haben keine Berechtigung, diese Seite zu betreten!" für den Adminbereich

Wenn ich als User eingeloggt bin und das Script zum Ändern des Profils aufrufe bekomme ich noch die Fehlermeldung, daß ich nicht eingeloggt sei. Woran kann das liegen?

Den aufruf session_start musste ich aus einige Dateien rausnehmen weil sonst die Meldung kam, daß keine Session gestartet werden kann da schon ein Header gesendet wurde... war das richtig?
Profil ansehen
13.12.2009 22:40 Uhr
Pebbles
User
 
registriert 13.12.2009
wohnt in
Beiträge 5
Ich hab mal alle Source dateien zusammengesucht.

configuration.php
PHP:


<?php
$MYSQL_PASS 
"xxxxxxxxx";
$MYSQL_USER "root";
$MYSQL_HOST "localhost";
$MYSQL_DATA "test";

    
$connid = @mysql_connect($MYSQL_HOST$MYSQL_USER$MYSQL_PASS) OR die("Error: ".mysql_error());
    
mysql_select_db($MYSQL_DATA) OR die("Error: ".mysql_error());
?>




Im Adminbereich

index.php // angeblich keine Rechte
PHP:



<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>xxxxx</title>
</head>

<body>

<?php
    error_reporting
(E_ALL);

        include(
"../configuration.php");


    
// Pr?ob der User den Adminbereich betreten darf
    
if(!isset($_SESSION['Rechte']) OR !in_array('Adminbereich'$_SESSION['Rechte']))
        die(
"Sie haben keine Berechtigung, diese Seite zu betreten!\n");

    
// Array f? Bereiche anlegen
    
$page = array();
    
$page['user'] = "user/index.php";

    
// Pr?ob die als $_GET['page'] ?bene Seite existiert
    
if(isset($_GET['page']) AND isset($page[$_GET['page']]))
        include 
$page[$_GET['page']];
    
// Ansonsten wird das Menu angezeigt
    
else
        echo 
"<a href=\"index.php?page=user\">User administrieren</a>\n";
?>

</body>
</html>




login.php // funktioniert jetzt
PHP:

<?php
    session_start
();
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html">
<title>xxxxx</title>
</head>

<body>

<?php


        
include("../configuration.php");

    
error_reporting(E_ALL);


    
// Session starten

    // liefert die Rechte eines Users ..
    
function getRights()
    {
        
$rights = array();
        
// .. indem die Rechte eines User aus der Datenbank ausgew?t werden..
        
if(isset($_SESSION['UserID'])){
            
$sql "SELECT
                            Recht
                    FROM
                            User_Rechte
                    WHERE
                            UserID = '"
.$_SESSION['UserID']."'
                   "
;
            
$result mysql_query($sql) OR die ("<pre>\n".$sql."</pre>\n".mysql_error());
            
$rights = array();
            
// .. und als array zur?eben werden
            
while($row mysql_fetch_assoc($result))
                    
$rights[] = $row['Recht'];
        }
        return 
$rights;
    }

    
// Loggt einen User ein, ..
    
function doLogin($ID$Autologin=false)
    {
        
// .. indem die aktuelle Session ID in der Datenbank gespeichert wird
        
$sql "UPDATE
                        User
                SET
                        SessionID = '"
.mysql_real_escape_string(session_id())."',
                        Autologin = NULL,
                        IP = '"
.$_SERVER['REMOTE_ADDR']."',
                        Letzte_Aktion = '"
.mysql_real_escape_string(time())."',
                        Letzter_Login = '"
.mysql_real_escape_string(time())."'
                WHERE
                        ID = '"
.$ID."'
                "
;
        
mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
        
// Wenn 'eingeloggt bleiben' aktiviert wurde
        
if($Autologin){
            
// Zufallscode erzeugen
            
$part_one substr(time()-rand(100100000),5,10);
            
$part_two substr(time()-rand(100100000),-5);
            
$Login_ID md5($part_one.$part_two);
            
// Code im Cookie speichern, 10 Jahre d?gen?            setcookie("Autologin", $Login_ID, time()+60*60*24*365*10);
            
$sql "UPDATE
                            User
                    SET
                            Autologin = '"
.$Login_ID."'
                    WHERE
                            ID = '"
.$ID."'
                   "
;
            
mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
        }

        
// Daten des Users in der Session speichern
        
$sql "SELECT
                        Nickname
                FROM
                        User
                WHERE
                        ID = '"
.$ID."'
               "
;
        
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());

        
$row mysql_fetch_assoc($result);
        
$_SESSION['UserID'] = $ID;
        
$_SESSION['Nickname'] = $row['Nickname'];
        
// Rechte in der Session speichern
        
$_SESSION['Rechte'] = getRights();
    }


    if(isset(
$_POST['submit']) AND $_POST['submit']=='Einloggen'){
        
// Falls der Nickname und das Passwort ?nstimmen..
        
$sql "SELECT
                        ID
                FROM
                        User
                WHERE
                        Nickname = '"
.mysql_real_escape_string(trim($_POST['Nickname']))."' AND
                        Passwort = '"
.md5(trim($_POST['Passwort']))."'
               "
;
        
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
        
// wird die ID des Users geholt und der User damit eingeloggt
        
$row mysql_fetch_assoc($result);
        
// Pr?b wirklich genau ein Datensatz gefunden wurde
        
if (mysql_num_rows($result)==1){
             
doLogin($row['ID'], isset($_POST['Autologin']));
             echo 
"<h4>Willkommen ".$_SESSION['Nickname']."</h4>\n";
             echo 
"Sie wurden erfolgreich eingeloggt.<br>\n".
                  
"Zur <a href=\"index.php\">Startseite</a>\n";
        }
        else{
             echo 
"Sie konnten nicht eingeloggt werden.<br>\n".
                  
"Nickname oder Passwort fehlerhaft.<br>\n".
                  
"Zur?m <a href=\"".$_SERVER['PHP_SELF']."\">Login-Formular</a>\n";
        }
    }
    else{
        echo 
"<form ".
             
" name=\"Login\" ".
             
" action=\"".$_SERVER['PHP_SELF']."\" ".
             
" method=\"post\" ".
             
" accept-charset=\"ISO-8859-1\">\n";
        echo 
"Nickname :\n";
        echo 
"<input type=\"text\" name=\"Nickname\" maxlength=\"32\">\n";
        echo 
"<br>\n";
        echo 
"Passwort :\n";
        echo 
"<input type=\"password\" name=\"Passwort\">\n";
        echo 
"<br>\n";
        echo 
"eingeloggt bleiben :\n";
        echo 
"<input type=\"checkbox\" name=\"Autologin\" value=\"1\">\n";
        echo 
"<br>\n";
        echo 
"<input type=\"submit\" name=\"submit\" value=\"Einloggen\">\n";
        echo 
"<br>\n";
        echo 
"<a href=\"passwort.php\">Passwort vergessen</a> oder noch nicht <a href=\"registrierung.php\">registriert</a>?\n";
        echo 
"</form>\n";
    }
?>

</body>
</html>


EditProfil.php // angeblich nicht eingeloggt
[php]
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>xxxxx</title>
</head>

<body>

<?php
error_reporting(E_ALL);

include("../configuration.php";);
// include("../function.php";);


if(!isset($_SESSION['UserID'])) {
echo "Sie sind nicht eingeloggt.<br>\n".
"Bitte <a href=\"login.php\">loggen</a> Sie sich zuerst ein.\n";
}
else{
// Avatar hochladen
if(isset($_POST['submit']) AND $_POST['submit'] == "Avatar hochladen";) {
$errors = array();
// Uploadfehler prüfen
switch ($_FILES['pic']['error']){
case 1: $errors[] = "Bitte wählen Sie eine Datei aus, die kleiner als 20 KB ist.";
break;
case 2: $errors[] = "Bitte wählen Sie eine Datei aus, die kleiner als 20 KB ist.";
break;
case 3: $errors[] = "Die Datei wurde nur teilweise hochgeladen.";
break;
case 4: $errors[] = "Es wurde keine Datei ausgewählt.";
break;
default : break;
}
// Prüfen, ob eine Grafikdatei vorliegt
if(!@getimagesize($_FILES['pic']['tmp_name']))
$errors[] = "Ihre Datei ist keine gültige Grafikdatei.";
else {
// Mime-Typ prüfen
$erlaubte_typen = array('image/pjpeg',
'image/jpeg',
'image/gif',
'image/png'
);
if(!in_array($_FILES['pic']['type'], $erlaubte_typen))
$errors[] = "Der Mime-Typ ihrer Datei ist verboten.";

// Endung prüfen
$erlaubte_endungen = array('jpeg',
'jpg',
'gif',
'png'
);
// Endung ermitteln
$endung = strtolower(substr($_FILES['pic']['name'], strrpos($_FILES['pic']['name'], '.';)+1));
if(!in_array($endung, $erlaubte_endungen))
$errors[] = "Die Dateiendung muss .jpeg .jpg .gif oder .png lauten ";

// Ausmaße prüfen
$size = getimagesize($_FILES['pic']['tmp_name']);
if ($size[0] > 150 OR $size[1] > 150)
$errors[] = "Die Datei darf maximal 150 Pixel breit und 150 Pixel hoch sein.";
}
// Dateigröße prüfen
if($_FILES['pic']['size'] > 0.2*1024*1024)
$errors[] = "Bitte wählen Sie eine Datei aus, die kleiner als 20 KB ist.";

if(count($errors)){
echo "Ihr Avatar konnte nicht gespeichert werden.<br>\n".
"<br>\n";
foreach($errors as $error)
echo $error."<br>\n";
echo "<br>\n".
"Zurück zum <a href=\"".$_SERVER['PHP_SELF']."\&qu ot;>Profil</a>\n";
}
else {
// Bild auf dem Server speichern
$uploaddir = 'avatare/';
// neuen Bildname erstellen
$Name = "IMG_".substr(microtime(),-8).".".$endun g;
if (move_uploaded_file($_FILES['pic']['tmp_name'], $uploaddir.$Name)) {
$sql = "UPDATE
User
SET
Avatar = '".mysql_real_escape_string(trim($Nam

Dieser Beitrag wurde am 08.02.2010 um 23:55:15 Uhr von Pebbles zum 3. Mal editiert.
Profil ansehen
13.12.2009 22:51 Uhr
Pebbles
User
 
registriert 13.12.2009
wohnt in
Beiträge 5
beim Aufruf von logout.php bekomme ich noch die Meldung:
Notice: Undefined variable: _SESSION in D:\Websites\localuser\Default\\usermanager\Logout.php on line 29

Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session in D:\Websites\localuser\Default\\usermanager\Logout.php on line 39
Sie wurden erfolgreich ausgeloggt.
Profil ansehen
14.12.2009 13:15 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Zitat:
Den aufruf session_start musste ich aus einige Dateien rausnehmen weil sonst die Meldung kam, daß keine Session gestartet werden kann da schon ein Header gesendet wurde... war das richtig?

Naja überleg mal.. wenn du session_start() rausnimmst, wird keine Session erzeugt. Ergo es werden keine Daten in der Session gespeichert. Ergo, das Skript hat keine Möglichkeit festzustellen, ob ein User eingeloggt ist, oder nich (deshalb kannst du zb als Admin auch nicht in den Adminbereich). Du MUSST das session_start() drin lassen, um den Fehler zu beheben muss es allerdings VOR jeglicher Form von Ausgabe (also auch vor dem Doctype etc..) stehen. Dazu gibts aber bestimmt ne Milliarden antworten auf Google ;)

Nachtrag:
Zu Session lohnt sich auch mein Workshop zu Sessions in PHP :)

Dieser Beitrag wurde am 14.12.2009 um 13:19:44 Uhr von Flitze zum 1. Mal editiert.


Profil ansehen Mail senden
23.12.2009 01:04 Uhr
Pebbles
User
 
registriert 13.12.2009
wohnt in
Beiträge 5
Hi

sorry das ich mich jetzt erst wieder melde, ich war leider krank. Hab jetzt das startsession überall wieder hinzugefügt und das editieren des Profils klappt jetzt :trink: Das Betreten des Adminbereichs war noch ein Problem in der DB

Aber 1 Problem hab ich immernoch, wenn ich in den Adminbereich komme und den Link zum editieren eines Users anklicke kommt:

Notice: A session had already been started - ignoring session_start() in D:\Websites\localuser\Default\admin\user\index.php on line 2
Sie haben keine Berechtigung, diese Seite zu betreten!


Ich vermute der Fehler kommt daher, daß ich in den Adminbereich über den link
admin/index.php kam und der Link "User Administrieren" geht auf admin/index.php?page=user so daß die Index.php erneut aufgerufen wird und somit auch das sessionstart. Was kann ich jetzt tun um das Problem zu lösen?

Eine Frage hab ich auch noch, wo baut man die logout.php Datei ein? Ist die nur dafür da, daß der User sich manuell ausloggen kann oder braucht man die noch irgendwo fürs autom. logout?

Dieser Beitrag wurde am 23.12.2009 um 01:19:41 Uhr von Pebbles zum 1. Mal editiert.
Profil ansehen
Seite: 1 no reply
Powered by Pascal Landau © 2006 MyWebsolution.de
Designed by Pascal Landau © 2006 MyWebsolution.de
 
 
 
 
Home Email Impressum Disclaimer Statistik