Debug mit var-dump erkennen und beheben?

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: Debug mit var-dump erkennen und beheben?

Beitrag von BNa »

Dann ist $message_data['bbcode_uid'] an dieser Stelle unter gewissen Umständen eindeutig leer 8) Ich denke mal, das leuchtet ein.

Also verändern wir das

Code: Alles auswählen

$row['post_text']  = str_replace($row['bbcode_uid'], $message_data['bbcode_uid'], $row['post_text']); 
in das

Code: Alles auswählen

$row['post_text']  = (isset($message_data['bbcode_uid']) && !empty($message_data['bbcode_uid'])) ? str_replace($row['bbcode_uid'], $message_data['bbcode_uid'], $row['post_text']) : $row['post_text']; 
Was soviel bedeutet wie

Code: Alles auswählen

if (isset($message_data['bbcode_uid']) && !empty($message_data['bbcode_uid'])) 
{
$row['post_text']  = str_replace($row['bbcode_uid'], $message_data['bbcode_uid'], $row['post_text']);
}
// Den Rest (else) könnte man sich sparen, 
// da $row['post_text'] eh existiert ;)
// Somit dient es nur zur Verdeutlichung
else
{
$row['post_text']  = $row['post_text'];
} 
Was auf deutsch heisst:
Wenn $message_data['bbcode_uid'] gesetzt ist (existiert) und nicht leer ist,
dann führe ein str_replace() auf die bbcode_uid aus, ansonsten übernehme den vorhandenen post_text.
Benutzeravatar
Shorty1968
Mitglied
Beiträge: 1894
Registriert: 08.09.2011 17:37

Re: Debug mit var-dump erkennen und beheben?

Beitrag von Shorty1968 »

Vielen dank für die Lösung,also sagt mir diese var_dump ausgabe das diese Stelle leer ist aber normal gefüllt sein müsste richtig?

Wenn ich mir deine lösung so ansehen,ist es ja für einen nicht Programmiere unmöglich zu wissen wie ich das beheben kann.

Eine Zeile darunter gibt es auch ein Debug Problem:

Code: Alles auswählen

[phpBB Debug] PHP Notice: in file [ROOT]/includes/functions_auto_answer.php on line 448: Undefined index: message
In der zeile steht:

Code: Alles auswählen

$message_data['message'] 	.= $this->parse_vars($row['post_text']);
Der Var-dump ergab das selbe ergebniss wie bei dem bbcode eben.

Code: Alles auswählen

array(3) {
  ["post_edit_locked"]=>
  string(1) "1"
  ["post_subject"]=>
  string(20) "Automatische Antwort"
  ["icon_id"]=>
  string(1) "0"
}
Könntest du mir da einen lösungs weg beschreiben,mit dem ich die restlichen selber versuchen kann zu Lösen?
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: Debug mit var-dump erkennen und beheben?

Beitrag von BNa »

Kommen jetzt kleckerweise noch 20 andere Probleme?
Warum hast Du nicht vorher gesagt, das da noch eine Debugmeldung existiert?
Shorty1968 hat geschrieben:Könntest du mir da einen lösungs weg beschreiben,mit dem ich die restlichen selber versuchen kann zu Lösen?
Dazu bräuchtest Du eine richtige 1 zu 1 Schulung in Sachen php, da hier das Grundverständnis fehlt.
Da müsste ich mir hier die Finger wund schreiben, um etwas zu erklären, was vor Ort in 10 Sätzen abgehandelt wäre.
Benutzeravatar
Shorty1968
Mitglied
Beiträge: 1894
Registriert: 08.09.2011 17:37

Re: Debug mit var-dump erkennen und beheben?

Beitrag von Shorty1968 »

BNa hat geschrieben:Kommen jetzt kleckerweise noch 20 andere Probleme?
Das hatte ich eigentlich nicht vor sondern eher wollte ich versuchen die anderen selber zu lösen mit Hilfe die ich verstehe und nachvolziehen kann,aber ich denke das ist für jemanden der von php keine wirkliche ahnung hat nicht machbar oder?
BNa hat geschrieben: Dazu bräuchtest Du eine richtige 1 zu 1 Schulung in Sachen php, da hier das Grundverständnis fehlt.
Sowas hätte ich ja gerne aber bei uns in der Nähe gibt es zwar eine Uni,aber ich finde da niemanden der sich dazu bereit erklärt.
Ich bin leider der Typ der das durch das Lesen nicht versteht sondern erst wenn jemand neber mir sitzt und es mir wärend ich es ausführe erklärt.

Ich suche über die jobbörse schon jemanden der mir eventuell an Hand einer Debugmeldung eine anleitung wie er diese behebt machen kann und ich will dann versuchen diese zu verstehen,aber ich denke mal so einfach geht das auch nicht.
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: Debug mit var-dump erkennen und beheben?

Beitrag von BNa »

Code: Alles auswählen

[phpBB Debug] PHP Notice: in file [ROOT]/includes/functions_auto_answer.php on line 448: Undefined index: message
heisst, das der Index der Variablen $message_data['message'] < das ist der Index, also ['message'], nicht existiert.
Die Mod ist also etwas schlampig programmiert, da die Variable nebst Index unter gewissen Umständen an der Stelle nicht existiert, bzw. überhaupt nicht initialisiert wurde.

Also setzen wir einen leeren Basis Index davor:

Code: Alles auswählen

$message_data['message']     = '';
$message_data['message']     .= $this->parse_vars($row['post_text']);
Und schon sollte es wieder stimmen.

.= bedeutet nämlich, hänge an eine schon vorher existente Variable nebst Index etwas an.
Existiert dieses Konstrukt aber nicht, kann man nicht etwas nicht vorhandenes an etwas nicht vorhandenes anhängen :-?

In dem Falle müsste man es so schreiben

Code: Alles auswählen

if(isset($message_data['message']))
{
$message_data['message']     .= $this->parse_vars($row['post_text']);
}
else
{
$message_data['message']     = $this->parse_vars($row['post_text']);
}
 
was die sicherere Lösung ist.
Benutzeravatar
Shorty1968
Mitglied
Beiträge: 1894
Registriert: 08.09.2011 17:37

Re: Debug mit var-dump erkennen und beheben?

Beitrag von Shorty1968 »

Hat der var_dump nicht etwas anderes gesagt?

Worann hast du nun erkannt das der eine [bbcode_bui] die stelle leer war und bei dem Zweiten der index fehlt?

Vielen dank BNa an Hand der Infos die ich nun habe versuche ich heute abend die letzten beiden selber zu beheben,ich gebe hier rückmeldung.
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: Debug mit var-dump erkennen und beheben?

Beitrag von BNa »

Shorty1968 hat geschrieben:Woran hast du nun erkannt das der eine [bbcode_bui] die stelle leer war und bei dem Zweiten der index fehlt?
Bei dem einen war 'nur' der Index leer > ['bbcode_uid']

Bei dem anderen war die Variable mit Index leer > $message_data['message'], mit dem Unterschied, das .= voraussetzte, das $message_data['message'] vorher schon definiert und befüllt wurde.

Auf deutsch: Das eine war ein 'klassischer' Index Fehler (['bbcode_uid']), das andere ein programmatischer (.=)
Benutzeravatar
Shorty1968
Mitglied
Beiträge: 1894
Registriert: 08.09.2011 17:37

Re: Debug mit var-dump erkennen und beheben?

Beitrag von Shorty1968 »

Vielen dank das habe ich verstanden,ich bin nun drann die Letzten zu beheben und habe bei dem var_dump(); das ergebniss bekommen.

Code: Alles auswählen

string(9) "Board Cop"
Das ist wider etwas neues ,will mir die meldung sagen das in der Debugmeldung zeile das string fehlt?
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: Debug mit var-dump erkennen und beheben?

Beitrag von BNa »

Das ist keine Fehler, sondern eine Ausgabe des var_dump()
Nimm nun var_dump() raus und guck mal, ob da noch 'normale' Debugmeldungen kommen.
var_dump() ist 'nur' sowas wie ein erweitertes echo() oder print() und kann Arrays anzeigen, was zb. echo() nicht kann.
Es ist keine Debugwerkzeug, wie DEBUG in der config.php, sondern hilft lediglich bei der Fehlersuche, wenn eine 'normale' Debugmeldung vorliegt.
Es gibt Variablen- und Array-Werte aus. Nicht mehr aber auch nicht weniger und ist hilfreich, um zu checken,
ob bestimmte Variablen zb. in einem Array überhaupt vorhanden sind oder befüllt werden.
Benutzeravatar
Shorty1968
Mitglied
Beiträge: 1894
Registriert: 08.09.2011 17:37

Re: Debug mit var-dump erkennen und beheben?

Beitrag von Shorty1968 »

Gibt es ein werkzeug zum Debugen was leicht verständlich ist?

Wenn ich var_dump(); raus nehme kommt:

Code: Alles auswählen

[phpBB Debug] PHP Notice: in file [ROOT]/includes/functions_posting.php on line 1982: Undefined index: is_registered
Diese Zeile wird angemekert:

Code: Alles auswählen

'post_username'		=>(!$user->data['is_registered']) ? $username : '',
Ich vermute mal das hier das $username den fehler verursacht oder?

Wie kann ich generel aus der meldung für leihen ersehen was er genau anmekert?
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“