Guten Tag,
mein Provider hat nun von PHP5.3/MySQL5.1 auf PHP5.4/MySQL5.5 umgestellt. Seither funktioniert mein CMS nicht mehr korrekt. Doch was genau liegt vor: über ein PHP-Formular können einzelne Seiten editiert werden. In dem Feld Inhalt können natürlich auch PHP-Code-Teile sein. Die Ausgabe der in der MySQL-DB gespeicherten PHP-Teile (longtext) habe ich mit eval() gelöst. Auch das Eintragen (insert into,...) oder aber auch Ändern (update,... set) habe ich bis dato einfach über das nachfolgend in Auszügen gegebene Skript durchgeführt.
neue Datensätze hinzufügen
Datensätze ändern
Meine Frage, die sich stellt ist, war das Skript nun schon immer falsch und die neue PHP-Version interpretiert es nun einfach falsch?
Ein Beispiel wäre
Für Hinweise, wie ich dem Skript mitteilen kann, dass es die PHP-Teile aus dem Formularfeld einfach nur eintragen/ändern soll und nicht ausführen soll, bin ich dankbar. Ich hatte bereits an htmlspecialchars gedacht, aber ich möchte ja die Zeichen beim eintragen/ändern nicht umwandeln. Wenn ich <? abschicke soll ja nicht <? in der MySQL-DB stehen.
Ich hoffe, meine Ausführungen reichen aus, um dem Problem zu Leibe zu rücken, wenn nicht versuche ich gerne, weitere Hinweise auf das mögliche Problem zu finden.
Grüße
Marco
mein Provider hat nun von PHP5.3/MySQL5.1 auf PHP5.4/MySQL5.5 umgestellt. Seither funktioniert mein CMS nicht mehr korrekt. Doch was genau liegt vor: über ein PHP-Formular können einzelne Seiten editiert werden. In dem Feld Inhalt können natürlich auch PHP-Code-Teile sein. Die Ausgabe der in der MySQL-DB gespeicherten PHP-Teile (longtext) habe ich mit eval() gelöst. Auch das Eintragen (insert into,...) oder aber auch Ändern (update,... set) habe ich bis dato einfach über das nachfolgend in Auszügen gegebene Skript durchgeführt.
neue Datensätze hinzufügen
PHP:
// Eintrag hinzufügen
if(isset($_POST['artikel-insert']))
{
$select = "
INSERT INTO `artikel`
(
`1234`
)
VALUES
(
'". $_POST['1234'][0] ."'
)
";
mysql_query($select);
if(mysql_affected_rows () > 0)
{
alles gut
}
else
{
alles schlecht
}
}
[...]
<textarea name="inhalt[0]" cols="1" rows="1"></textarea>
<input type="submit" name="artikel-insert" value="eintragen" />
Datensätze ändern
PHP:
// Eintrag ändern
if(isset($_POST['artikel-update']))
{
$id = $_POST['id'] .'';
$select = "
UPDATE `artikel` SET
`1234` = '". $_POST['1234'][$id] ."'
WHERE `id` = '". $id ."'
";
mysql_query($select);
if(mysql_affected_rows () > 0)
{
alles gut
}
else
{
alles schlecht
}
}
[...]
<textarea name="inhalt['. $dataset['id'] .']" rows="1" cols="1">'. $dataset['inhalt'] .'</textarea>
<input type="submit" name="artikel-update" value="ändern" />
Meine Frage, die sich stellt ist, war das Skript nun schon immer falsch und die neue PHP-Version interpretiert es nun einfach falsch?
Ein Beispiel wäre
PHP:
// IN das Formular eingetragen:
<?php echo ''. $1234 .''."\n"; ?>
// In der Datenbank angekommen/eingetragen (mit dem Zeilenumbruch,...):
<?php echo '. $1234 .'."
"; ?>
Für Hinweise, wie ich dem Skript mitteilen kann, dass es die PHP-Teile aus dem Formularfeld einfach nur eintragen/ändern soll und nicht ausführen soll, bin ich dankbar. Ich hatte bereits an htmlspecialchars gedacht, aber ich möchte ja die Zeichen beim eintragen/ändern nicht umwandeln. Wenn ich <? abschicke soll ja nicht <? in der MySQL-DB stehen.
Ich hoffe, meine Ausführungen reichen aus, um dem Problem zu Leibe zu rücken, wenn nicht versuche ich gerne, weitere Hinweise auf das mögliche Problem zu finden.
Grüße
Marco