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
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:
und der relevante Teil der Klasse:
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:
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
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');
}
?>
...
..
.
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>";
}
}
...
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>";
}
}
}
}
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
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
Kommentar