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-04-2012, 11:26
sallow2001
 Registrierter Benutzer
Links : Onlinestatus : sallow2001 ist offline
Registriert seit: Oct 2010
Beiträge: 103
sallow2001 ist zur Zeit noch ein unbeschriebenes Blatt
Standard [erledigt] Funktion wird im zweiten Aufruf nicht ausgeführt

Hallo.

Ich soll an einem bestehenden System einige Änderungen vornehmen. Im ersten Schritt möchte ich das System lokal lauffähig machen, um dann im zweiten Schritt die Änderungen vorzunehmen.

Beim ersten Schritt hänge ich fest.

Es handelt es sich um ein System, das per iframe eingebunden wird, also bspw. so:

Code:
<iframe src="localhost/api?token=d74f40186d6dc2c0492c9bc098"></iframe>
Eingebunden wird ein Formular, in das man einige Daten eingeben kann, die dann bei einem Klick auf "Senden" gespeichert werden.

Rufe ich die HTML-Seite mit dem iframe auf, wird das Formular korrekt angezeigt. Klicke ich aber auf "Senden", bekomme ich eine weisse Seite.

Die api.php wird nach "Senden" aufgerufen und kommt bis zum Methoden-Aufruf einer eingebundenen Datenbank-Klasse.
Beispiel:
Code:
. . .
echo "hier1<br>";
$data = $db->get_data($_SESSION['token']);
echo "hier2<br>";
...
Die Ausgabe von "hier1" kommt, aber "hier2" nicht mehr. Folglich hängt das Skript in get_data.

get_data befindet sich in einer inkludierten Klasse. Lasse ich direkt am Anfang etwas ausgeben, wird dies nicht angezeigt. Die Methode wird also aufgerufen und hängt...oder wird eben nicht aufgerufen...wie man's nimmt.

Code:
function get_data($tokenid)
{
   echo "bin in get_data";
   if (. . . .)
   . . . .
}
Was ich bisher ausprobiert/herausgefunden habe:

get_data wird beim ersten Aufruf durch api.php korrekt ausgeführt. Es liegt also kein Syntax-Fehler o. ä. vor, der das Inkludieren verhindert.

error_reporting ist E_ALL

register_globals testweise eingeschaltet, brachte aber nichts

Es sind keine Einträge in den Error-Logs.

Rufe ich die api.php nicht über iframe auf, sondern tippe den Aufruf direkt in die Adresszeile ein, hängt das Skript nach dem Klick auf "Senden" genauso fest.

Dass beim Absenden des Skripts eine andere api.php oder eine andere DB-Klasse genutzt wird, kann ich definitiv ausschließen. Auch dass die api.php oder die DB-Klasse nicht gefunden wird, kann ich ausschließen.

Anstatt get_data lasse ich in der api.php vorher eine Test-Methode aufrufen, die lediglich ein echo besitzt. Auch diese Methode wird nach "Senden" nicht ausgeführt. Es liegt demnach nicht an get_data an sich.

Tja, und nun weiß ich nicht weiter, denn ich habe keine Ahnung, wo ich noch suchen soll.

Ich weiß, dass das relativ wenige Informationen sind, aber vielleicht hat ja jemand sowas schon mal erlebt und hat eine Idee...?

Quellcode kann ich leider nicht liefern, da das System irrsinnig groß ist (allein in der api.php werden 10 Skripte inkludiert) und selbst wenn ich Quellcode entfernen würde, von dem ich meine, dass er nichts mit dem Fehler zu tun hat, wäre es immer noch viel zu groß und unübersichtlich, um es hier zu posten.

cya

Geändert von sallow2001 (12-04-2012 um 15:57 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 12-04-2012, 11:59
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Wo und wie wird denn $db gesetzt?

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 12-04-2012, 12:25
sallow2001
 Registrierter Benutzer
Links : Onlinestatus : sallow2001 ist offline
Registriert seit: Oct 2010
Beiträge: 103
sallow2001 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

$db ist die DB-Instanz, die einige Zeilen vorher aufgerufen wird.

Das funktioniert auch, sonst würde bereits beim ersten Aufruf des Skripts ein Fehler auftreten, denn einige Daten, die in dem Formular angezeigt werden, kommen aus der DB.

cya
Mit Zitat antworten
  #4 (permalink)  
Alt 12-04-2012, 12:27
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von sallow2001 Beitrag anzeigen
$db ist die DB-Instanz, die einige Zeilen vorher aufgerufen wird.
Das habe ich angenommen, wollte zur Sicherheit noch mal nachfragen. Hier im Forum gab es schon die tollsten Sachen.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #5 (permalink)  
Alt 12-04-2012, 15:15
sallow2001
 Registrierter Benutzer
Links : Onlinestatus : sallow2001 ist offline
Registriert seit: Oct 2010
Beiträge: 103
sallow2001 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Aber interessant an Deiner Frage ist, dass der Aufruf $db = Mysql::getInstance(); in derselben Datei ist wie get_data()

getInstance wird bei "Senden" ausgeführt, get_data nicht.

cya
Mit Zitat antworten
  #6 (permalink)  
Alt 12-04-2012, 15:56
sallow2001
 Registrierter Benutzer
Links : Onlinestatus : sallow2001 ist offline
Registriert seit: Oct 2010
Beiträge: 103
sallow2001 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So, ich denke, ich bin dem Fehler auf der Spur. Es liegt vermutlich an einer Abfrage in einer der diversen eingebundenen Dateien, die mir $db überschreibt, zerstört oder was auch immer.

Warum ich mich aber noch einmal melde: Besonders gewundert hat es mich ja, dass trotz des von mir eingefügten error_reporting(E_ALL) (direkt vor dem besagten Methodenaufruf) keine einzige Fehlermeldung angezeigt wurde.

Der Grund dafür ist dieser Code in einer der eingebundenen Dateien:
Code:
if ($GLOBALS['display_errors'])
{
   ini_set("error_reporting", E_ALL);
}
else
{
   ini_set("error_reporting", E_ALL ^ E_NOTICE);
}
Mein error_reporting(E_ALL) kommt nach diesem Aufruf und hat offensichtlich keine Auswirkungen mehr.
ini_set wird also höher bewertet, als der Aufruf von error_reporting().

Dies wusste ich nicht, weshalb ich auch nicht nach ini_set gesucht hatte und ich denke, dass dies dem einen oder anderen auch nicht bekannt war und als Info beim Debuggen helfen könnte.

Jedenfalls bedanke ich mich für Eure Aufmerksamkeit und ich denke, dass ich mit eingeschaltetem error_reporting nun den Fehler finden werde.

cya
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Smarty] Block-Funktion wird zweimal ausgeführt PHP-Master07 PHP Developer Forum 3 29-11-2010 11:20
str_replace wird nicht ausgeführt fx001 PHP Developer Forum 17 19-01-2007 14:41
Include() wird nicht ausgeführt Mario_Wenzel PHP Developer Forum 4 06-11-2006 04:57
[JavaScript] FUnktion wird nicht ausgeführt okoman HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 3 29-01-2005 15:11
INSERT wird nicht ausgeführt subhead SQL / Datenbanken 7 18-04-2004 22:38

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 03:56 Uhr.