PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Stg pn center



Alpha10
02.12.2014, 00:59
Hallo!

Plötzlich heute werden im STG PN Center längere PN leer angezeigt. Man bekommt die Nachricht neue PN, sieht auch den Absender aber keinen Text. In der Datenbank steht der Text, aber nicht für den User sichtbar.

Sendet man sehr kurze PN dann funktioniert es.

Lange PN kann man aber nicht sehen. Das hat bisher ohne Probleme funktioniert und ist jetzt plötzlich aufgetreten. hat jemand eine Idee?

Alpha10
02.12.2014, 06:51
Anscheinend werden PNS mit Umlauten nicht mehr dargestellt ohne Umlaute scheint es zu gehen, hat jemand einen Tipp? ich verstehe auch nicht warum so was plötzlich am 1.12. auftritt....??

Das gleiche Problem hat die Maddin SB - man kann posten aber bei Umlauten bleibt das Feld in der SB leer!

Schon alles mögliche hier aus dem Forum probiert, wenn ich alles auf UTF umstelle, werden Umlaute wenigstens als ? Formatiert und die SB Nachricht kann gelesen werden, besser wie gar nix...

Hat da jemand eine Idee??

mine321
02.12.2014, 13:04
Dein Hoster ein Update gemacht?

Oder du selbst?

Würde das jetzt als >Ursache bekunden

Alpha10
02.12.2014, 15:45
Ja der liebe Hoster, zum 1.12. Überaschung....

Ich bräuchte einen Code für maddins Chatbox der Automatisch umlaute umwandelt also Ä = ae Ü = eu Ö = oe ß = ss

Kann da jemand helfen? Wenns funktioniert gibts auch nen kleinen Obolus!

Kraemer84
03.12.2014, 16:25
Hier würd ich auf str_replace zurückgreifen...

bsp.



$eintrag_transform_1 = str_replace('Ä','AE',$eintrag);
$eintrag_transform_2 = str_replace('Ö','OE',$eintrag_transform_1);
// .. und so weiter .. zum schluss das fertige als echo


denk aber das ist nicht das Problem.. du bekommst wahrscheinlich Texte abgeschnitten und Umlaute falsch angezeigt. Das kannst du wie folgt steuern.

Meta-Charset



<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">


musst eins davon ausprobieren .. glaub das eine zeigt umlaute nicht mehr richtig an aber lädt dafür Dateien aus der Datenbank. Das wäre die Lösung für Umlaute

ENT_QUOTES



$eintrag_fixed = htmlspecialchars($eintrag, ENT_QUOTES);


Hier ist der Part wo du den Apostroph entschärfst bevor er in die Datenbank kommt.

Alpha10
03.12.2014, 18:33
Vielen Dank erst mal ich werd es mal probieren.

Uhrsache ist tatsächlich Umstellung auf PHP 5.6 OHNE ANKÜNDIGUNG - Ja gibts denn so was? ..

Alpha10
03.12.2014, 19:49
Ist ein reines PHP Problem der SB, alles andere passt und ich bin zu **** das in der ausgabe.php anzupassen. Werden sonderzeichen eingegeben werden die nicht mal in der Datenbank gespeichert, mit der alten PHP Version kein Problem...
Hat jemand Lust das für mich zu machen, dann bitte PN an mich!



;)

Kraemer84
03.12.2014, 23:43
Hab dir eine Pn geschickt

Alpha10
05.12.2014, 20:08
So die SB habe ich hinbekommen, es war so einfach, war ja klar!...

module.php

Zeile

mysql_query ("INSERT INTO ".$db_prefix."_shoutbox (Inhalt, Nickname, Datum) VALUES ('".addslashes(htmlspecialchars($_POST['Eintrag']))."', '".$nick['nickname']."', ".time().")");

in

mysql_query ("INSERT INTO ".$db_prefix."_shoutbox (Inhalt, Nickname, Datum) VALUES ('".$_POST['Eintrag']."', '".$nick['nickname']."', ".time().")");

ändern.

Das wars...

Lokutos
06.12.2014, 01:19
Ich hoffe

$_POST['Eintrag']

wird abgesichert... (zuvor) ansonnsten ist das ne ziemlich böse SQLInjection lücke

Alpha10
09.12.2014, 18:32
*Hüstel* Ja die Lücke lässt sich nutzen, da freut man sich das die umlaute gehen und dann geht das wieder nicht... *rofl*
Gibt es noch Alternativen zum absichern, aber so das auch die Umlaute dargestellt werden? Ich weiss n icht warum die "Ä-Striche" als slashes erkannt werden sowohl als einfacher als auch doppelter, hab schon alles probiert.

Ich poste mal die module.php - vieleicht kann Sie doch noch jemand anpassen, das die Umlaute funktionieren UND die Eingaben abgesichert sind.


<head>
<style type="text/css">
.smileys {
width:480px;
}
</style>
<script language="JavaScript">
function addValue(text)
{
document.Shoutbox.Eintrag.value = document.Shoutbox.Eintrag.value + text;
}
</script>
</head>

<? head ('Chatbox - 10000 Klammlose alle 15min + Jackpot'); ?>

<?php
include 'module/Shoutbox/files/inc/functions.inc.php';

if(get_magic_quotes_gpc()) {
array_stripslashes($_GET);
array_stripslashes($_POST);
array_stripslashes($_COOKIE);
}

$uid_finden = db_query("Select * FROM ".$db_prefix."_userdaten where uid = ".$_SESSION['uid'].""); // UID in der Datenbank finden
$nick = @mysql_fetch_array($uid_finden); // Zugehörigen Nicknamen aufrufen
$admin_auslesen = db_query("Select * FROM ".$db_prefix."_shoutbox_admin");

$style_auslesen = db_query("Select * FROM ".$db_prefix."_shoutbox_style");

$smileys_auslesen = db_query("Select * FROM ".$db_prefix."_shoutbox_smileys");

$admin = mysql_fetch_assoc ($admin_auslesen);

$style = mysql_fetch_assoc ($style_auslesen);

if ($_GET['Eintraege'] != "alt")
{

echo '<center><b>Kein Support in der SB - Bitte PN an Alpha10 senden!</b>', ('
<iframe src="module/Shoutbox/ausgabe.php" height="'.$style['iframe_height'].'" width="'.$style['iframe_width'].'" scrolling="'.$style['iframe_scrolling'].'" frameborder="'.$style['iframe_frameborder'].'"></iframe>');

} else {

echo ('<iframe src="module/Shoutbox/ausgabe.php?Eintraege=alt" height="'.$style['iframe_height'].'" width="'.$style['iframe_width'].'" scrolling="'.$style['iframe_scrolling'].'" frameborder="'.$style['iframe_frameborder'].'"></iframe></center>');

}

if ($_GET['Eintraege'] != 'alt'){
if ($admin['Gaeste'] == 'ja')
if ($_SESSION['login'] != 'true') {
$nick['nickname'] = "Gast";

echo ("
<br />
<form name=\"Shoutbox\" method=\"post\" action=\"\">
&nbsp;&nbsp;&nbsp;<input name=\"Eintrag\" type=\"text\" size=\"65\" maxlength=\"".$admin['max_nachricht']."\" />
<input name=\"Submit\" type=\"submit\" value=\"Eintragen\" />
</form>
");

} elseif ($_SESSION['login'] = 'true') {

echo ("
<br />
<form name=\"Shoutbox\" method=\"post\" action=\"\">
&nbsp;&nbsp;&nbsp;<input name=\"Eintrag\" type=\"text\" size=\"65\" maxlength=\"".$admin['max_nachricht']."\" />
<input name=\"Submit\" type=\"submit\" value=\"Eintragen\" />
</form>
");

}

if ($admin['Gaeste'] == 'nein') {
if ($_SESSION['login'] = 'true') {

echo ("
<br />
<form name=\"Shoutbox\" method=\"post\" action=\"\">
&nbsp;&nbsp;&nbsp;<input name=\"Eintrag\" type=\"text\" size=\"65\" maxlength=\"".$admin['max_nachricht']."\" />
<input name=\"Submit\" type=\"submit\" value=\"Eintragen\" />
</form>
");

}
}
}

# Abfragen ob abgeschickt wurde (Das wusste ich auch noch xD)
if ($_POST['Submit'] == 'Eintragen'){
if (trim ($_POST['Eintrag']) != "" and strlen ($_POST['Eintrag']) > $admin['min_nachricht']){

# Time ist kein String sondern integer, deshalb da keine '' (THX an Gremlin)
mysql_query ("INSERT INTO ".$db_prefix."_shoutbox (Inhalt, Nickname, Datum) VALUES ('".$_POST['Eintrag']."', '".$nick['nickname']."', ".time().")");
if ($admin['bez_sb'] == 'ja' && $_SESSION['login'] == 'true') {
$reload_db = db_query ("SELECT * FROM ".$db_prefix."_shoutbox_reload WHERE Reload >= ".time()." AND UID = ".$_SESSION['uid']."");

if (!mysql_num_rows ($reload_db)) {
kontobuchung ('+', $admin['bez_verguetung'], $_SESSION['uid']);
$buchungs_id=create_code(14);
buchungsliste ($buchungs_id,'+'.$admin['bez_verguetung'],'Chatbox',$_SESSION['uid']);
db_query ("INSERT INTO ".$db_prefix."_shoutbox_reload SET Reload = ".(time() + $admin['bez_reload']).", UID = ".$_SESSION['uid']."");
}
db_query ("DELETE FROM ".$db_prefix."_shoutbox_reload WHERE Reload <= ".time()."");
}

# Wenn vorhanden dann Fehlermeldung ausgeben: (THX an Gremlin)
if (mysql_error()) echo mysql_error();

# wo db_connect(); da muss auch db_close(); hin ;) (THX an Gremlin)
# mysql_close() or die(mysql_error());

} else {
echo "Fehler: Die eingegebene Nachricht ist zu kurz.<br /><br />";
}
}

if ($_GET['Eintraege'] == 'alt'){
echo "<br /><br /><strong><center><a href=\"javascript:history.back()\">Neue Einträge anzeigen</a></center><br /></strong>";
} else {
echo "<strong><center><a href=\"?Eintraege=alt\">Alte Einträge anzeigen</a></center><br /></strong>";
}

if ($_GET['Eintraege'] != 'alt'){
if ($_SESSION['login'] = 'true'){
if(mysql_num_rows($smileys_auslesen)) {
echo "<div class=\"smileys\">";
while($row = mysql_fetch_assoc($smileys_auslesen)) {
echo "<a href=\"javascript:;\"><img src=\"module/Shoutbox/files/smileys/".$row['img_src']."\" border=\"0\" onclick=\"addValue('".$row['img_short']."')\" /></a>&nbsp;";
}
echo "</div>";
}
}
}

// You can add everything here (e.g. "All rights reserved by YourSite.com") but it's strongly restricted to change or remove the Copyright!
// Begin Copyrigt
//include "copyright.php";
// End Copyrigt

foot ();
?>

<a href="" onClick="history.back()">

Kraemer84
09.12.2014, 18:47
Hab dir das ja in soweit schon einmal gemacht .. ich denk das liegt wieder daran das direkt die form genommen wird und nicht eine extra php genommen wird (weswegen meine $variablen geschichte nicht funktioniert hat).. ok hier ein letzter ansatz mit deinem $_POST etc der hoffentlich jetzt funktioniert


Tausche


'".$_POST['Eintrag']."'

mit


'".mysql_real_escape_string($_POST['Eintrag'], ENT_QUOTES)."'

Alpha10
09.12.2014, 19:54
Hab dir das ja in soweit schon einmal gemacht .. ich denk das liegt wieder daran das direkt die form genommen wird und nicht eine extra php genommen wird (weswegen meine $variablen geschichte nicht funktioniert hat).. ok hier ein letzter ansatz mit deinem $_POST etc der hoffentlich jetzt funktioniert
Tausche


'".$_POST['Eintrag']."'

mit


'".mysql_real_escape_string($_POST['Eintrag'], ENT_QUOTES)."'




.mysql_real_escape_string nimmt er kein Problem, aber ENT_Quotes gibt wieder eine leere Ausgabe zurück. Entferne ich Ent-Qoutes gehen die Umlaute sofort wieder.
Nur mit .ENT_SUBSTITUTE erfolgt überhaupt eine Ausgabe, dann werden Die Umlaute als &#FFFD; etc. dargestellt, alles andere mit ENT_**** probiert, Umlaute kommen nur leer zurück.

Danke nochmal, ich weiss Du brauchst Vollzugriff.... :)