• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

PHP Klasse

tobi-848

New member
Hallo zusammen

Habe für den Zugriff auf die Klassenfunktionen immer den :: (Paamayim Nekudotayim-Operator) verwendet. So weit ich weiss ist die verwendung von Klassenvariablen dadurch nicht möglich. Nun habe ich alle Klassen initialisiert mit
Code:
$Auth=new Auth;
und danach den ::-Operator durch den ->-Operator ersetzt.

Leider erscheint jetzt immer die Fehlermeldung

Code:
Fatal error: Call to a member function delteDeniedLine() on a non-object in .../auth/interface.php on line 7

Ich habe jedoch alle Klassen korrekt initialisiert. Weiss jemand von euch weshalb der Fehler auftaucht? Wäre sehr dankbar. Habe auch schon versucht Funktonen als public zu deklarieren.

Hier noch eine grobe Struktur der verify.php:
Code:
<?php
include_once($_SERVER['DOCUMENT_ROOT']."/lib/header.php");
include_once($_SERVER['DOCUMENT_ROOT']."/auth/interface.php");
?>
<?php
$MainVerify=new MainVerify;
$MainFunctions=new MainFunctions;
$Pounces=new Pounces;
$Auth=new Auth;
$AuthSites=new AuthSites;
$AuthMenu=new AuthMenu;
$Prepare=new Prepare;
$Insert=new Insert;
$Denied=new Denied;
$LoginMain=new LoginMain;
$LoginSuccess=new LoginSuccess;
$LoginFailed=new LoginFailed;
?>
<?php
//db login_fault und login_denied überprüfen
$MainVerify->preparationTasks();
//Neue Adminseiten aufführen && Zugriffsrechte prüfen
if(!empty($lockPWD[0]))
{
	//siehe settings.php
	foreach($lockPWD as $VlockPWD)
	{
		if($MainFunctions->thisPWD($MainFunctions->exportingSite()) == $VlockPWD)
		{
			$MainVerify->insertTasks();
			$MainVerify->checkSiteTasks();
		}
	}
}

//Sperren bzw. umleiten auf [$seite]
$rv = $Pounces->deny();
$rv = $Pounces->seiteCheck();
$rv = $Pounces->fileExistence($DocRoot, $seite, $lang, $seiten_path);
?>

interface.php
Code:
class MainVerify
{
	function preparationTasks()
	{
		$Prepare->delteDeniedLine();
		$Prepare->redirectBurglar();
		$Prepare->redirectBack();
	}
	
	function insertTasks()
	{
		$seite = $MainFunctions->exportingSite();
		$rv = $Insert->localRights($seite);
		$rv = $Insert->userRights($seite);
	}
	
	function checkSiteTasks()
	{
		$user = $MainFunctions->loadUser();
		$seite = $MainFunctions->exportingSite();
		//Site-Check
		$rv = $AuthSites->loginAuth($user);
		$rv = $AuthSites->localAuth($user, $seite);
	}
	
	function checkMenuTasks($seite)
	{
		$user = $MainFunctions->loadUser();
		//Menü-Check
		return $AuthMenu->localAuth($user, $seite);
	}
}

Zeile 7 (siehe Fehlermeldung oben) ist:

Code:
$Prepare->delteDeniedLine();
Code:
function delteDeniedLine()
	{
		$query = mysql_query("SELECT * FROM login_fault");
		while($show = mysql_fetch_object($query))
		{
			$mkMonat = Main::calcTimePeriod(0, 0, 0, 1, 0, 0);
			$mktime = $show -> mktime;
			if (($mktime+$mkMonat) < mktime())
			{
				mysql_query("DELETE FROM login_fault WHERE mktime = '".$mktime."' LIMIT 1");
			}
		}
	}

Gruss und Danke für die Hilfe
 
Innerhalb deine Methode deleteDenied... ist $Prepared nicht bekannt. Du müßtest entweder ein neues initialisieren oder dieses als Parameter übergeben. Eine Klassenmethode die lediglich 3 Methoden einer anderen Klasse aufruft, kommt mir jedoch etwas undurchdacht vor. Ohne es genauer zu kennen, würde ich mal behaupten dein Design ist falsch.
 
Innerhalb deine Methode deleteDenied... ist $Prepared nicht bekannt. Du müßtest entweder ein neues initialisieren oder dieses als Parameter übergeben. Eine Klassenmethode die lediglich 3 Methoden einer anderen Klasse aufruft, kommt mir jedoch etwas undurchdacht vor. Ohne es genauer zu kennen, würde ich mal behaupten dein Design ist falsch.

Hallo ZeitGeist

Dieser Teil:
Code:
<?php
//db login_fault und login_denied überprüfen
$MainVerify->preparationTasks();
//Neue Adminseiten aufführen && Zugriffsrechte prüfen
if(!empty($lockPWD[0]))
{
	//siehe settings.php
	foreach($lockPWD as $VlockPWD)
	{
		if($MainFunctions->thisPWD($MainFunctions->exportingSite()) == $VlockPWD)
		{
			$MainVerify->insertTasks();
			$MainVerify->checkSiteTasks();
		}
	}
}

//Sperren bzw. umleiten auf [$seite]
$rv = $Pounces->deny();
$rv = $Pounces->seiteCheck();
$rv = $Pounces->fileExistence($DocRoot, $seite, $lang, $seiten_path);
?>

ist nicht Teil einer Klasse. Die Klassen werden auch nicht in einer Klasse initialisiert. Was meinst du mit:
dein Design ist falsch.

Besten Dank.
 
Innerhalb deine Methode deleteDenied... ist $Prepared nicht bekannt. Du müßtest entweder ein neues initialisieren oder dieses als Parameter übergeben. Eine Klassenmethode die lediglich 3 Methoden einer anderen Klasse aufruft, kommt mir jedoch etwas undurchdacht vor. Ohne es genauer zu kennen, würde ich mal behaupten dein Design ist falsch.

Falls nötig Poste ich auch gerne das komplette Script.

Freundliche Grüsse
 
Der Fehler wird ja auch nicht in diesem Code-Stück geworfen, sondern in der interface.php in Zeile 7. Und das ist soweit ich das sehen kann, eine Klassenmethode.
Mach einfach mal zu Beginn dieser Methode ein $Prepare = new Prepare; und der Fehler ist weg. Der Code arbeitet dann wahrscheinlich nicht korrekt. Aber auf eine Lösung solltest du dann kommen.

Ich hab den Eindruck du solltest dich mal mit dem Gedanken der Hinter OO-Programmierung steht etwas mehr beschäftigen. Allerdings kommt das von meiner recht beschränkten Sicht auf deinen Code.
 
Zurück
Oben