php-resource



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

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


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 12-09-2008, 16:23
jazzdee
 Registrierter Benutzer
Links : Onlinestatus : jazzdee ist offline
Registriert seit: Jan 2003
Beiträge: 174
jazzdee ist zur Zeit noch ein unbeschriebenes Blatt
Standard Joomla Hack: Globale Variable geht verloren?!

Hallo zusammen, ich schreibe gerade ein kleinen Hack für Joomla 1.5. Dabei werden Inhalte direkt in das WBB2 gepostet.

Folgendes Problem liegt nun vor:

wbb_controller.php (meine Klasse)
- function save($boardid, $topic, $message)

Diese Funktion ist im Kopf wie folgt aufgebaut:
PHP-Code:
global $db$n;

require(
$this->path_to_forum 'global.php');
require(
$this->path_to_forum 'acp/lib/class_parse.php');
require(
$this->path_to_forum 'acp/lib/class_parsecode.php'); 
Nun bekomme ich beim Aufruf aber folgenden Fehler:
Fatal error: Call to a member function on a non-object in /www/htdocs/w00a4ea0/Forum/acp/lib/functions.php on line 1409

So, das ganze passiert wie folgt:
Die global.php includiert die Datei "/acp/lib/session.php" des Forums. Dort wird ein Aufruf der Funktion function getwbbuserdata getätigt. Diese Funktion steht in der Datei "functions.php" (also die Datei, die den fehler auslöst).

Die Funktion function getwbbuserdata hat ebenfalls ein "global $db, $n;" an erster Stelle. Heißt: die Variable bzw. das Objekt sollte auch in dieser Funktion zur Verfügung stehen! Wenn in dieser Funktion aber nun auf das Objekt $db zugegriffen wird, wird der Fehler zurückgeworfen.

Das seltsame ist, dass das Objekt direkt vor dem Aufruf der Funktion (in "session.php") noch vorhanden ist. Das kann man sich so vorstellen:

PHP-Code:
echo $db// gibt mir im Browser 'Object' zurück
getwbbuserdata(......); // direkt drauf folgt die Funktion. In dieser Funktion habe ich keinen Zugriff mehr auf das Objekt 
Würde mich über nen Denkanstoß/Hilfe freuen ...
Mit Zitat antworten
  #2 (permalink)  
Alt 12-09-2008, 18:26
Payne_of_Death
 Master
Links : Onlinestatus : Payne_of_Death ist offline
Registriert seit: Dec 2002
Ort: Folterkeller Nr. 18
Beiträge: 2.953
Payne_of_Death ist zur Zeit noch ein unbeschriebenes Blatt
Payne_of_Death eine Nachricht über ICQ schicken Payne_of_Death eine Nachricht über AIM schicken Payne_of_Death eine Nachricht über Yahoo! schicken
Standard

Also für mich sieht es so aus als ob diese globale Var an irgendeiner Stelle im Skript gekillt wird und du anschließend versuchst auf dessen Member Funktionen zugreifen die zu diesem Zeitpunkt aber nicht mehr existiert.

Was dir der PHP Interpreter auch versucht als mögliche Ursache mitzuteilen.

Am einfachsten wäre es wohl sich irgendeinen PHP Debugger zu besorgen wo mir spontan keiner einfällt oder gezielt nach unset(); ausschau zu halten und entweder vor der Zerstörung des DB Objektes anzusetzen oder aber die erforderlichen Daten zu sammeln und in einem eigener DB Connection abzusetzen...

evtl. wären Mysql Trigger eine elegantere Lösung.

Was die global Geschichte anbelangt ist diese im Grunde verpönnt und bei vernünftiger Kapselung i.d.R. vermeidbar. Den Stil sollte man sich auf keinen Fall angewöhnen da selbst PHP 4 mittlerweile OOP beherrscht. Und das mal am Rande
__________________
MfG Payne_of_Death

Manual(s): <-| PHP | MySQL | SELFHTML |->
Merke:
Du brauchst das Rad nicht neu erfinden ! <-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

Murphy`s Importanst LAWS
Jede Lösung bringt nur neue Probleme
Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
In jedem kleinen Problem steckt ein großes, das gern raus moechte.
Mit Zitat antworten
  #3 (permalink)  
Alt 15-09-2008, 10:04
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

In der Funktion musst du die globale Variable natürlich auch erstmal mit global $foo; verfügbar machen!
Mit Zitat antworten
  #4 (permalink)  
Alt 15-09-2008, 10:27
pekka
 PHP Master
Links : Onlinestatus : pekka ist offline
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
pekka befindet sich auf einem aufstrebenden Ast
Standard

Ich habe manchmal den Eindruck, daß in manchen PHP-Versionen der scope beim Includen flötengeht bzw. er mit "global" durcheinanderkommt. Setz mal ein "global $db" in jedes Include.

EDIT: Quatsch, ist ja innerhalb einer Funktion.
Nee, dann anders: Ist $db denn garantiert eine Globale?
Was sagt $GLOBALS["db"]?
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

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

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