Hi!
Das der Beitrag schon älter ist und somit nicht ganz konform ist mir klar, habe diesen jetzt aber soweit zur Funktion gebracht.
Wenn du Änderungen einbringst, musst du sehr vorsichtig damit umgehen, besonders wenn du noch nicht vollständig den Code und seine Arbeitsweise durchschaut hast und dir auch noch nicht so viele PHP-Erfahrungen zur Verfügung stehen.
es können auch Einträge gemacht werden, jedoch scheint bei der Übergabe an der MYSQL Datenbank was nicht zu stimmmen.
Dagegen hilft, konkretes Nachschauen (Kontrollausgaben!), welche Werte anliegen, wo sie herkommen und warum sie nicht das Erwartete enthalten.
Das ganze Script setzt auf register_globals = on. Entweder du schreibst es komplett um und erwischst auch alle aus $_GET/$_POST-Eingaben stammenden Variablen oder du baust den register_globals-Mechanismus nach. Lass lieber diese alte Version in Frieden ruhen und nimm my little forum!
Entgegen meiner ersten Annahme reicht es doch nicht, nur in der magic_quotes_fix.php die $HTTP_*_VARS auszutauschen. Es braucht auch noch am Anfang von magic_quotes_fix.php diese 4 Zeilen:
extract($_GET);
extract($_POST);
extract($_COOKIE);
extract($_SERVER);
Das macht das gleiche wie register_gobals = on. Solange ein error_reporting(E_ALL) keine Notice wirft, sollte das auch keine weiteren negativen Auswirkungen haben. Diese Aussage gilt aber nur dann, wenn du beim Testen alle bedingten Zweige testest, also if-Wege und else-Wege. Eine Garantie kann und will ich dazu aber nicht geben.
Man kann auch mit register_globals=on sicher programmieren. Das Problem an diesem Feature ist, dass es Variablen anlegt und man dies leicht übersehen kann.
while (irgendwas)
$string .= 'irgendwas';
echo "<p>$string</p>";
Angenommen, $string existiert noch nicht, so wird es beim ersten Schleifendurchlauf angelegt (nebst einer Notice-Meldung). Mit register_globals=on kann man jedoch über den Querystring oder einen POST-Wert eine Vorbelegung von $string erreichen. Diese Vorbelegung wird zusammen mit dem Schleifentext ausgegeben und schon hat man unerwünschten Code in seiner Webseite. Würde hingegen vor der Schleife explizit $string = ''; gesetzt, so kann das register_globals=on hier keinen Schaden mehr anrichten. Wenn Henryk so umsichtig war, seine Variablen vor dem Erstgebrauch immer zu initialisieren, so sollte nichts weiter passieren. Heutzutage traue ich ihm das ohne weiteres zu, aber ich keine seinen Wissensstand von 2002 nicht.
if(!isset($_GET[eintrag]) || $eintrag < 0) $eintrag = 0;
Hier hast du schon die erste Misch-Stelle. Du testest einerseits auf $_GET[eintrag] (von dir umgeschrieben) und andererseits $eintrag, welches aber nur bei register_globals=on oder dem genannten Substitut zur Verfügung steht. Also entweder alles erwischen oder register_globals nachbilden.
Warning: Cannot modify header information - headers already sent by (output started at */neu.php:11) in */neu.php on line 76
Du hast irgendwo eine Ausgabe, weswegen das header() nicht mehr wirken kann. Die Meldung sagt was von Zeile 11, aber das ist in deinem Code eine Leerzeile innerhalb eines <?php-?>-Bereiches, also nichts was eine Ausgabe erzeigt. Achte darauf, dass in inkludierten Dateien keine Zeilenumbrüche und andere unsichtbare Zeichen nach dem abschließenden ?> stehen oder lass das ?> am Dateiende ganz weg, dann kann sich kein Whitespace dahinterschmuggeln.
Lo!