Hallo leute,
ich habe folgendes Problem. Auf der Seite meiner Tante http://www.creatives-kochen.com lief bis vor kurzem alles ohne Probleme. Dann kam ein Update von PHP bzw der Anbieter hat die alten Versionen abgeschaltet. Seither gibt es Probleme mit der Darstellung.
Dan Menü konnten wir noch umschreiben, sodass Umlaute einfach in ae ue ect. umgeschrieben wurden, sodass das Menü wieder sichtbar wurde (war vorher weg)
Jetzt haben wir gleiches Problem aber leider beim Gästebuch, was gleichzeitig die Bewertung ist. Hier wurden keinerlei Texte mehr angezeigt.
Ich habe mich daraufhin etwas mit dem Dateien beschäftigt, bin aber echt totaler Laie und hoffe ich kann dies hier einigermaßen umschreiben.
Der Text wurde in der gb_show.php von UTF 8 in ISO per iconv umgesetzt. Nachdem ich es einfach von UTF 8 in UTF 8 geändert habe, wurde der Text nun wieder angezeigt.
hier der original Code:
Hier meine geänderte Datei, damit die Einträge wieder Sichrbar wurden:
Jetzt habe ich leider das Problem, dass wenn neue Einträge gemacht werden, und dort im Text Umlaute geschrieben sind, diese erst gar nicht gespeichert werden. Normal werden Texte wie folgt in extra .xml Dateien gespeichert:
Werden jetzt aber beim bewerten Umlaute in den Text geschrieben ist dieser in der neu angelegten Datei einfach leer. Und diesen Fehler finde ich einfach nicht. Wir möchten halt ungern die Leute bitten ohne Umlaute zu schreiben und der, der die Seite ursprünglich gemacht hat, ist leider nicht mehr zu erreichen.
Wäre um jede Hilfe dankbar.
Hier noch die gb_add.php code. Vlt wird dieser benötigt:
Danke schonmal vorab! Floely
ich habe folgendes Problem. Auf der Seite meiner Tante http://www.creatives-kochen.com lief bis vor kurzem alles ohne Probleme. Dann kam ein Update von PHP bzw der Anbieter hat die alten Versionen abgeschaltet. Seither gibt es Probleme mit der Darstellung.
Dan Menü konnten wir noch umschreiben, sodass Umlaute einfach in ae ue ect. umgeschrieben wurden, sodass das Menü wieder sichtbar wurde (war vorher weg)
Jetzt haben wir gleiches Problem aber leider beim Gästebuch, was gleichzeitig die Bewertung ist. Hier wurden keinerlei Texte mehr angezeigt.
Ich habe mich daraufhin etwas mit dem Dateien beschäftigt, bin aber echt totaler Laie und hoffe ich kann dies hier einigermaßen umschreiben.
Der Text wurde in der gb_show.php von UTF 8 in ISO per iconv umgesetzt. Nachdem ich es einfach von UTF 8 in UTF 8 geändert habe, wurde der Text nun wieder angezeigt.
hier der original Code:
PHP-Code:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors','1');
error_reporting(E_ALL);
?>
<?php
require_once("config.php");
require_once($GB_PATH."inc/mini_tpl.class.php");
require_once($GB_PATH."inc/bad_words.inc.php");
$gb_entry_tpl = new mini_tpl('gb_entry.html');
$gb_show_tpl = new mini_tpl('gb_show.html');
$entry_dir = opendir($GB_PATH.'data');
$gb_entries_txt = "";
$filenames = array();
while(false !== ($filename = readdir($entry_dir))) {
$filenames[] = $filename;
}
$filenames = array_reverse($filenames);
$gb_entries_array = array();
foreach($filenames AS $filename) {
if(preg_match('/^eintrag_\d*.xml/', $filename)) {
$eintrag_sxml = simplexml_load_file($GB_PATH.'data/'.$filename);
$eintrag_array = get_object_vars($eintrag_sxml);
$eintrag_array['name'] = htmlentities(iconv("UTF-8", "ISO-8859-1//TRANSLIT", $eintrag_array['name']));
$eintrag_array['event_title'] = htmlentities(iconv("UTF-8", "ISO-8859-1//TRANSLIT", $eintrag_array['event_title']));
$eintrag_array['text'] = htmlentities(iconv("UTF-8", "ISO-8859-1//TRANSLIT", $eintrag_array['text']));
if(array_key_exists('gedecke', $eintrag_array)) $eintrag_array['gedecke'] = str_replace(',','.',$eintrag_array['gedecke']);
else $eintrag_array['gedecke'] = 2.5;
$eintrag_array['bar_width'] = ($eintrag_array['gedecke']*32)."px";
$eintrag_array['event_size_txt'] = (array_key_exists('event_size', $eintrag_array) && ($eintrag_array['event_size'] > 0)) ? '(ca '.$eintrag_array['event_size'].' Gäste)' : '';
$gb_entry_tpl->clear_values();
$gb_entry_tpl->fill_values($eintrag_array);
$gb_entry_tpl->varlist['datum'] = $GB_DAY[date('w', $eintrag_array['time'])].', '.str_replace(" ", " ", date("j.m.Y H:i", $eintrag_array['time']));
$gb_entries_array[$eintrag_array['time']] = $gb_entry_tpl->getText();
}
}
closedir($entry_dir);
ksort($gb_entries_array);
$gb_entries_txt = join('', array_reverse($gb_entries_array));
$gb_show_tpl->varlist['gb_entries'] = $gb_entries_txt;
$gb_show_tpl->varlist['GB_SKINURL'] = $GB_SKINURL;
echo $gb_show_tpl->getText()
?>
Hier meine geänderte Datei, damit die Einträge wieder Sichrbar wurden:
PHP-Code:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors','1');
error_reporting(E_ALL);
?>
<?php
require_once("config.php");
require_once($GB_PATH."inc/mini_tpl.class.php");
require_once($GB_PATH."inc/bad_words.inc.php");
$gb_entry_tpl = new mini_tpl('gb_entry.html');
$gb_show_tpl = new mini_tpl('gb_show.html');
$entry_dir = opendir($GB_PATH.'data');
$gb_entries_txt = "";
$filenames = array();
while(false !== ($filename = readdir($entry_dir))) {
$filenames[] = $filename;
}
$filenames = array_reverse($filenames);
$gb_entries_array = array();
foreach($filenames AS $filename) {
if(preg_match('/^eintrag_\d*.xml/', $filename)) {
$eintrag_sxml = simplexml_load_file($GB_PATH.'data/'.$filename);
$eintrag_array = get_object_vars($eintrag_sxml);
$eintrag_array['name'] = htmlentities(iconv("UTF-8", "UTF-8", $eintrag_array['name']));
$eintrag_array['event_title'] = htmlentities(iconv("UTF-8", "UTF-8", $eintrag_array['event_title']));
$eintrag_array['text'] = htmlentities(iconv("UTF-8", "UTF-8", $eintrag_array['text']));
$eintrag_array['text'] = preg_replace('/(\w{40})/', "\\1\n", $eintrag_array['text']);
$eintrag_array['text'] = str_replace("\n", "<br />\n", $eintrag_array['text' ]);
$eintrag_array['text'] = str_replace(" ", " ", $eintrag_array['text' ]);
$eintrag_array['text'] = str_replace("\\"", """, $eintrag_array['text' ]);
if(array_key_exists('gedecke', $eintrag_array)) $eintrag_array['gedecke'] = str_replace(',','.',$eintrag_array['gedecke']);
else $eintrag_array['gedecke'] = 2.5;
$eintrag_array['bar_width'] = ($eintrag_array['gedecke']*32)."px";
$eintrag_array['event_size_txt'] = (array_key_exists('event_size', $eintrag_array) && ($eintrag_array['event_size'] > 0)) ? '(ca '.$eintrag_array['event_size'].' Gäste)' : '';
$gb_entry_tpl->clear_values();
$gb_entry_tpl->fill_values($eintrag_array);
$gb_entry_tpl->varlist['datum'] = $GB_DAY[date('w', $eintrag_array['time'])].', '.str_replace(" ", " ", date("j.m.Y H:i", $eintrag_array['time']));
$gb_entries_array[$eintrag_array['time']] = $gb_entry_tpl->getText();
}
}
closedir($entry_dir);
ksort($gb_entries_array);
$gb_entries_txt = join('', array_reverse($gb_entries_array));
$gb_show_tpl->varlist['gb_entries'] = $gb_entries_txt;
$gb_show_tpl->varlist['GB_SKINURL'] = $GB_SKINURL;
echo $gb_show_tpl->getText()
Code:
<?xml version="1.0" encoding="ISO-8859-1"?> <eintrag> <name>Webmaster</name> <gedecke>5</gedecke> <event_title>Test</event_title> <event_size>23</event_size> <time>1490041528</time> <ip>46.5.0.9</ip> <text>dsf sdf sdsd wer wesdfsd ghfdg</text> </eintrag>
Wäre um jede Hilfe dankbar.
Hier noch die gb_add.php code. Vlt wird dieser benötigt:
PHP-Code:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors','1');
error_reporting(E_ALL);
?>
<?php
require_once("config.php");
require_once($GB_PATH."inc/mini_tpl.class.php");
require_once($GB_PATH."inc/bad_words.inc.php");
function need_more_data($buggy_fields)
{
global $GB_SKINURL, $GB_PATH;
$gb_add_tpl = new mini_tpl('gb_add.html');
$values = array(
'GB_SKINURL'=>$GB_SKINURL
);
$values['name'] = array_key_exists('name', $_POST) ? $_POST['name'] : '';
$values['text'] = array_key_exists('text', $_POST) ? $_POST['text'] : '';
$values['email'] = array_key_exists('email', $_POST) ? $_POST['email'] : '';
$values['gedecke'] = array_key_exists('gedecke', $_POST) ? 1*str_replace(',', '.', $_POST['gedecke']) : 5;
$values['gedecke'] = str_replace('.', ',', $values['gedecke']);
$values['event_title'] = array_key_exists('event_title', $_POST) ? $_POST['event_title'] : '';
$values['event_size'] = array_key_exists('event_size', $_POST) ? 1*$_POST['event_size'] : '';
if($buggy_fields) $values['buggy_fields'] = '<div style="border: 3px solid #cc0001; padding: 2px;"><h3>Einige Felder müssen korrigiert werden:</h3><ul><li>'
.implode('</li><li>', $buggy_fields).'</li></ul></div>';
$gb_add_tpl->fill_values($values);
echo $gb_add_tpl->getText();
}
if(!array_key_exists('gb_data', $_POST)) need_more_data(FALSE);
else {
$buggy_fields = array();
// Name-Feld prüfen
if(strlen($_POST['name']) < 1) $buggy_fields['name'] = 'Bitte geben Sie einen Namen ein';
// Text-Feld prüfen
$buggy_fields['text'] = array();
if(strlen($_POST['text']) < 5)
$buggy_fields['text'][] = 'Ihre Bewertung ist zu kurz';
// foreach($bad_words AS $bad_word)
// if(preg_match_all('/\W'.$bad_word.'\W/i', " ".$_POST['text'], $bad_word_found))
// $buggy_fields['text'][] = 'Bitte verwenden Sie keine Ausdrücke wie "'.$bad_word_found[0][0].'" in Ihrer bewertung';
if(preg_match('/http:\/\//', $_POST['text']))
$buggy_fields['text'][] = 'Links sind in Bewertungen nicht erlaubt';
if(!array_key_exists('gb_pwd', $_POST)
|| ((str_replace(" ", "", $_POST['gb_pwd']) != "Feier".(date("Y")-1))
&& (str_replace(" ", "", $_POST['gb_pwd']) != "Feier".date("Y"))
)) $buggy_fields['text'][] = "Bitte geben Sie das richtige Gäste-Passwort ein. Dieses finden Sie auf Ihrer Rechnung.";
if(sizeof($buggy_fields['text']) < 1) array_pop($buggy_fields);
else $buggy_fields['text'] = join('<br />', $buggy_fields['text']);
if(sizeof($buggy_fields) > 0) {
need_more_data($buggy_fields);
}
else {
$nextID = file_get_contents($GB_PATH.'data/nextID.txt') + 1;
file_put_contents($GB_PATH.'data/nextID.txt', $nextID);
$eintrag_xml = ""
."<?xml version="1.0" encoding="UTF-8"?>\n"
."<eintrag>\n"
." <name>".htmlspecialchars($_POST['name'])."</name>\n"
// ." <email>".htmlspecialchars($_POST['email'])."</email>\n"
." <gedecke>".$_POST['gedecke']."</gedecke>\n"
." <event_title>".$_POST['event_title']."</event_title>\n"
." <event_size>".$_POST['event_size']."</event_size>\n"
." <time>".time()."</time>\n"
." <ip>".$_SERVER['REMOTE_ADDR']."</ip>\n"
." <text>".htmlspecialchars($_POST['text'])."</text>\n"
."</eintrag>\n";
file_put_contents($GB_PATH.'data/eintrag_'.$nextID.'.xml', $eintrag_xml);
echo "Alles OK, Eintrag gespeichert.<br /><a href="?cnt=guestb">zurück zu den Bewertungen</a>";
}
}
?>
Danke schonmal vorab! Floely
Kommentar