php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben || php-forumjetzt anmelden
 

PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 14-06-2006, 05:10
woeps
 Newbie
Links : Onlinestatus : woeps ist offline
Registriert seit: Jan 2006
Beiträge: 9
woeps ist zur Zeit noch ein unbeschriebenes Blatt
Standard Script läuft auf Localhost Einwandfrei -> Server Problembehaftet (OOP)

Hey!
Ich habe nun mein erstes Übungsprojekt für OOP gestartet und bin mittlerweile auch schon recht weit gekommen..
jetzt habe ich meine erste Version schon fertig und auf meinem Localhost läuft alles völlig fehlerfrei..
Localhost: Apache 1.3.33 (Win32); PHP 4.4.2; mySQL 4.1.9;

Mein Projekt wäre ein relertiv simples Login/Logout Script (zwar doch noch um einiges erweitert, allerdings momentan im Grundprinzip stimmt's so).
Nun habe ich um schließlich alles inklusive mail() -funktion testen zu können (wegen aktivierungs-mail-versant)
auf den Server geladen.. doch dort gibt es scheinbar einige Probleme (mit meinen Klassen)..
Server: Apache 1.3.33; PHP 4.4.0; mySQL 4.1.11;

Der für die Fehler relevante Datei-Inhalt wäre wie folgt...
index.php
PHP-Code:
<?php
include('config.php');
if(
$show_all_errors){ERROR_REPORTING(E_ALL);}else{ERROR_REPORTING(0);}
SESSION_START();
include(
'lang/'.$lang.'/'.$lang.'_standart.php');
include(
'class/queryclass.php');
include(
'class/userclass.php');
echo 
"<PRE>".var_dump($_SESSION['user'])."</PRE>";
if(isset(
$_SESSION['user']))
    {
    
$user unserialize($_SESSION['user']);
    }
else
    {
    
$user = new user();
    }
$user->security();
if(
$user->loggedin)
    {
    include(
'lang/'.$lang.'/'.$lang.'_gamestandart.php');
    }
?>
...
..
.
Wird diese Datei zum ersten Mal ausgeführt sieht noch alles so aus, wie es sein sollte..

Der Login/Logout wird in login.php und der Klasse 'user' ausgeführt..

relevante Teil der login.php:
PHP-Code:
...
if(
$user->login($HTTP_POST_VARS['uname'], $HTTP_POST_VARS['pw']))
        {
        echo 
$lang_content_login_succes."<BR>";
        echo 
$lang_content_reload."
<SCRIPT type=\"text/javascript\" language=\"javascript\">
window.setTimeout(\"location.replace('index.php')\",1200);
</SCRIPT>"
;
        }
    else
        {
        if(
$user->uname)
            {
            if(
$user->activated)
                {
                echo 
"<SPAN class='error'>$lang_content_login_falsepass</SPAN>";
                }
            else
                {
                echo 
"<SPAN class='error'>$lang_content_login_notactivated</SPAN>";
                }
            }
        else
            {
            echo 
"<SPAN class='error'>$lang_content_login_unotexist</SPAN>";
            }

        }
... 
und der relevante Teil der Klasse:
PHP-Code:
class user
    
{    
    var 
$uid;
    var 
$uname;
    var 
$fname;
    var 
$lname;
    var 
$mail;
    var 
$activated;
    var 
$ip;
    
    var 
$loggedin=false;
    
    function 
user()
        {
        }
    function 
login($loguname$logpw)
        {
        include(
'config.php');
        
$sql "SELECT pw, activated FROM $usertbl WHERE uname LIKE '$loguname';";
        
$udata = new query($sql);
        if(
$udata->numRows()<=0)
            {
            
$this->uname false;
            return 
false;
            }
        else
            {
            
$dbudata $udata->fetch();
            if(
$dbudata['pw']==MD5($logpw))
                {
                if(
$dbudata['activated']!='1')
                    {
                    
$this->activated false;
                    }
                elseif(
$dbudata['activated']=='1')
                    {
                    
$this->activated true;
                    
#Login-Action
                    
$this->uname $loguname;
                    
$ip getenv("REMOTE_ADDR");
                    
$iptime time();
                    
$sql "UPDATE $usertbl SET ip = '$ip', iptime = '$iptime' WHERE
uname = '$this->uname'"
;
                    
$store_ip = new query($sql);
                    
                    
$sql "SELECT * FROM $usertbl WHERE uname LIKE '$this->uname';";
                    
$query = new query($sql);
                    
$queried $query->fetch();
                    
                    
$this->uid        $queried['uid'];
                    
$this->fname    $queried['fname'];
                    
$this->lname    $queried['lname'];
                    
$this->mail        $queried['mail'];
                    
$this->ip        $ip;
                    
$this->loggedin    true;
                    
                    
$_SESSION['user'] = serialize($this);
                    return 
true;
                    }
                else
                    {
                    return 
false;
                    }
                }
            }
        }

    function 
logout()
        {
        include(
'config.php');
        if(
session_destroy())
            {
            
$iptime time();
            
$sql "UPDATE $usertbl Set ip = '0', iptime = '$iptime' WHERE
uname = '$this->uname'"
;
            
$update_ip = new query($sql);
            return 
true;
            }
        else
            {
            return 
false;
            }
        }
    function 
security()
        {
        include(
'config.php');
        
#update der ip in der DB (falls iptime länger als 20min her wird ip auf 0 gesetzt)
        
$lifetime time()-1200;
        
$sql "SELECT uid FROM $usertbl WHERE ip != '0' AND iptime <= '$lifetime';";
        
$query = new query($sql);
        
$todo = array();
        while (
$row $query->fetch())
            {
            
array_push($todo$row['uid']);
            }
        
$sql "UPDATE $usertbl SET ip = '0' WHERE";
        
$counted count($todo);
        
$i='1';
        foreach(
$todo as $todo)
            {
            
$sql .= " uid = '$todo'";
            if(
$i<$counted)
                {
                echo 
" OR";
                }
            
$i++;
            }
        
$sql .= ";";
        
$update = new query($sql);
        
#Wenn letzte Aktion länger als 20min her
        
$sql "SELECT ip FROM $usertbl WHERE
uid LIKE '$this->uid';"
;
        
$query = new query($sql);
        while(
$row $query->fetch())
            {
            if(
$row['ip']=='0')
                {
                if(
$this->logout())
                    {
                    echo 
"<SCRIPT type=\"text/javascript\" language=\"javascript\">
location.replace('index.php?view=************p');
</SCRIPT>"
;
                    }
                }
            }
        
#Wenn User-Ip anders als in obj user
        
$ip getenv("REMOTE_ADDR");
        if(
$this->loggedin AND $ip!=$this->ip)
            {
            if(
$this->logout())
                {
                echo 
"<SCRIPT type=\"text/javascript\" language=\"javascript\">
location.replace('index.php?view=sec');
</SCRIPT>"
;
                }
            }
        }

Soweit zu den relevanten Code-Schnipsel..

Die Klasse query habe ich nur zur einfacheren Handhabung diverser Datenbankfunktionen erstellt...

Und nun zum Fehler..
Klickt man nun mit den richtigen Daten auf login, so wird folgender Fehler angezeigt:
Code:
object(__PHP_Incomplete_Class)(9) {
["__PHP_Incomplete_Class_Name"]=>  string(4) "user"
["uid"]=>  string(1) "1"
["uname"]=>  string(5) "admin"
["fname"]=>  string(9) "Christoph"
["lname"]=>  string(7) "Wanasek"
["mail"]=>  string(29) "christoph.wanasek@hotmail.com" 
["activated"]=>  bool(true)
["ip"]=>  string(13) "62.47.143.226"
["loggedin"]=>  bool(true)
}


Fatal error: Unknown(): The script tried to execute a method or access a property of an
incomplete object. Please ensure that the class definition user of the object you are trying to
operate on was loaded _before_ the session was started in
/home/www/maxdj.freehostia.com/index.php on line 17
Wobei die eigendliche Fehlerausgabe erst mit "Fatal error: Unknown():..." beginnt da zuvor lediglich die Session mittels var_dump() ausgegeben wird...

Sollte jemand von euch Anregungen haben woran es liegen könnte dann meldet euch doch bitte..
Also die Fehlerausgabe verstehe ich doch so weit allerdings finde ich nichts diesbezügliches finden..

Also Ich wäre euch sehr dankbar für jegliche Hilfe!!!

Danke (schon im Vorraus)!!!
Lg
Woeps

Geändert von woeps (18-06-2006 um 21:22 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 14-06-2006, 08:01
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard Re: Script läuft auf Localhost Einwandfrei -> Server Problembehaftet (OOP)

Bitte Regeln lesen, und Code auf eine akzeptable Breite herunterbrechen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 14-06-2006, 08:45
hhcm
 PHP Senior
Links : Onlinestatus : hhcm ist offline
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.833
hhcm ist zur Zeit noch ein unbeschriebenes Blatt
hhcm eine Nachricht über ICQ schicken hhcm eine Nachricht über Skype™ schicken
Standard

Check mal deine php.ini und such mal nach session.auto_start ... Auf off setzen, apache restarten und nochmals versuchen.
__________________
gruss Chris

Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."
Mit Zitat antworten
  #4 (permalink)  
Alt 14-06-2006, 10:51
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von hhcm
Check mal deine php.ini und such mal nach session.auto_start ... Auf off setzen, apache restarten und nochmals versuchen.
Die Klasse muss einfach nur vor session_start deklariert werden
Mit Zitat antworten
  #5 (permalink)  
Alt 15-06-2006, 22:45
woeps
 Newbie
Links : Onlinestatus : woeps ist offline
Registriert seit: Jan 2006
Beiträge: 9
woeps ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Vielen Dank für die schnellen Antworten!
(@Admin: sry; hatte die Überbreite übersehen)

Allerdings hat mir das alles nicht wirklich weitergeholfen..
session.auto_start ist bei mir eigendlich normalerweise immer auf 'off' und dem ist auch jetzt so..

Der Vorschlag, die Klassen vor der Session zu deklarieren hatte leider auch keinen Erfolg..

Hab' jetzt meine Skripten auch noch auf einem anderen Lokalem Server getestet (dieses mal wie folgt: Server: "Micrososft Internet Information Server"; Php: 5.0.0; mySQL: 5.?.?)..

Trotzdem funktionieren meine Skripten lokal einwandfrei!
Doch kaum probiere ich diese online auf einem (free Host [test]-) Server, so treten immer die genannten Fehler auf..!

Hat noch irgendjemand anders (oder natürlich auch wieder jemand von euch 2/3) eine weitere Idee?!?

Hoffe es kann mir vielleicht doch noch jemand hier helfen und ich kann das Mysterium meiner Fehler durchleuchten..!!!

Nochmals Danke! schon im Vorraus für folgende Hilfestellungen und für bereits getane..

THX
Woeps!
Mit Zitat antworten
  #6 (permalink)  
Alt 15-06-2006, 23:48
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von woeps
Nochmals Danke! schon im Vorraus für folgende Hilfestellungen und für bereits getane..
ich danke im voraus für das unverzügliche editieren deines eingangspostes
auf eine breite, die auch bei einer 1024er auflösung keines querscrollens
bedarfs. dazu hat man im forum den nützlichen "ändern-button" unterhalb
eines jeden postes gleich mit eingefügt. danke für die befolgung dieses
letztmaligen aufrufes.
__________________
Kissolino.com
Mit Zitat antworten
  #7 (permalink)  
Alt 18-06-2006, 21:26
woeps
 Newbie
Links : Onlinestatus : woeps ist offline
Registriert seit: Jan 2006
Beiträge: 9
woeps ist zur Zeit noch ein unbeschriebenes Blatt
Standard

...sooo... @Mod: besser gehts nicht mit der "Breiten-Anpassung" (bzw. mehr Mühe werde ich mir jetzt nicht mehr machen)
anscheinend hat hier leder sowieso niemand mehr einen Rat für mich..
schade..; hatte gehofft ich könnte den Fehler noch finden und ausbessern, ohne alles neu schreiben zu müssen..

Also sollte vielleicht doch noch jemand eine Idee haben--> Dann bitte melden!...

Danke!
Mit Zitat antworten
  #8 (permalink)  
Alt 18-06-2006, 23:08
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Fatal error: Unknown(): The script tried to execute a method or access a property of an
incomplete object. Please ensure that the class definition user of the object you are trying to
operate on was loaded _before_ the session was started in
/home/www/maxdj.freehostia.com/index.php on line 17
Zitat:
Der Vorschlag, die Klassen vor der Session zu deklarieren hatte leider auch keinen Erfolg..
Das ist aber der Punkt - dein "include('class/userclass.php');" muss vor "session_start()" stehen.
Mehr fällt mir momentan auch nicht dazu ein.

Dass du sowenig Antworten bekommst, liegt vermutlich an der Menge von Code den du gepostet hast, so ist es schwer, einen Überblick zu bekommen.

Gruß,
ministry
Mit Zitat antworten
  #9 (permalink)  
Alt 18-06-2006, 23:35
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

vielleicht hilft dir das weiter:
http://bugs.php.net/bug.php?id=29985
__________________
Kissolino.com
Mit Zitat antworten
  #10 (permalink)  
Alt 18-06-2006, 23:58
mai
 Junior Member
Links : Onlinestatus : mai ist offline
Registriert seit: Jun 2006
Beiträge: 98
mai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Du hast ja gar keine Objekte in der $_SESSION, sondern un/serialisierst selber. Erst
das serialisierte Ding ist in der Session. Man könnte als nach dem serialisierungspunkt
serialize($this) sehen, was dort in die Session geht.

Vielleicht geht irgendwo $user doch noch in die $_SESSION?
Könnte es sein, dass session_start() das von dir serialisierte, selber unserialisiert,
weil es nicht unterscheiden will?

Als Austricks könntest Du das serialisierte in $_SESSION['user2'] abspeichern, und/oder base64 codieren.

offtopic: echo ' OR';

Geändert von mai (19-06-2006 um 00:48 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 19-06-2006, 01:52
mai
 Junior Member
Links : Onlinestatus : mai ist offline
Registriert seit: Jun 2006
Beiträge: 98
mai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ein selbst serialisiertes objekt , siehe deine login-methode, sieht anders aus als
deine Ausgabe und würde, in php5, von der Sessionverwaltung auch nicht
automatisch entserialisiert (mein Verdacht s.o.).
Beispiel:
$aa=serialize($aobject);
var_dump($aa);
string(60) "O:5:"daten":2: {s:1:"a";s:7:"Inhalta";s:1:"b";s:7:"Inhaltb";}"

in php5 habe ich die class Deklaration nicht vor session_start(), sondern
konnte sie bis an den Schluss des skripts platzieren...


In deinem Programm würde also $_SESSION['user'], ursprünglich ein string, mit einem object überschrieben,
und die nächste Frage ist, wo und warum?
Mit Zitat antworten
  #12 (permalink)  
Alt 22-06-2006, 01:55
woeps
 Newbie
Links : Onlinestatus : woeps ist offline
Registriert seit: Jan 2006
Beiträge: 9
woeps ist zur Zeit noch ein unbeschriebenes Blatt
Standard

als erstes entschuldigt bitte das ich mich jetzt erst melde und als zweites gleich mal:
Vielen Dank für eure Bemühungen!!!

Ich werde jetzt nochmal den Code mit euren Letzten Hilfestellungen versuchen und wenn das auch nicht funktioniert werde ich wohl alles neu / anders schreiben müssen..

Also nochmals vielen Dank für eure Hilfe!!!

Auch wenn ich wahrscheinlich alles neu schreiben werde, da ich langsam die Geduld beim Fehlersuchen verliere..

alo Thx
Woeps
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Warum Texterstellung mit künstlicher Intelligenz richtig gut ist
Warum Texterstellung mit künstlicher Intelligenz richtig gut istKünstliche Intelligenz ist dabei, die Welt zu erobern. Die größten Unternehmen entwickeln Systeme, die einen Text für Sie schreiben können. Und sie machen das sehr gut.

05.01.2022 | Berni

Vorteile eines flexiblen ERP Systems
Vorteile eines flexiblen ERP SystemsEin flexibles ERP System bietet in allen Unternehmensbereichen die Grundlage für eine erfolgreiche Verwaltung, Organisation und Planung aller Prozesse.

01.12.2021 | Berni


 

Aktuelle PHP Scripte

Homepagetools 2022

Kostenloses Gästebuch und Homepagetools für die eigene Homepage. Bei GuxDu kann man sich kostenlos die Websitetools auf die vorhandene Website einbauen. Zudem kann man bei GuxDU auch eine eigene Homepage mit 3D Effekten erstellen. GuxDu ist kostenlos.

29.04.2022 freepler | Kategorie: PHP/ Gaestebuch
SF-Shopsystem V1.0

Hier haben wir ein einzigartiges Shopsystem in PHP. Die Anzahl der Artikel ist unbegrenzt, einfach zu bedienen und erklärt sich. Ausführliche Beschreibung weiter unten.

28.04.2022 Speedcrawler | Kategorie: PHP/ Shops
Anzeigen Markt mit PayPal Bezahl System

Anzeigen Markt Script mit PayPal Bezahl System Der Benutzer hat die Möglichkeit sofort nach Bezahlung mit PayPal seine Anzeigen zu schalten, je nach seinem Guthaben.

27.04.2022 Webace_de | Kategorie: PHP/ Anzeigenmarkt
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:29 Uhr.