Ankündigung

Einklappen
Keine Ankündigung bisher.

Zeichenfehler Chat Programmierung

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zeichenfehler Chat Programmierung

    Liebe Php Community,

    ich bin gerade dabei einen Chat zu programmieren und bin auch relativ weit gekommen bis mir aufgefallen ist, dass beim Schreiben von Sonderzeichen, wie z.B. Umlaute und +, Fehler auftreten und das Plus sogar gar nicht angezeigt wird, wenn man den Chat aktualisiert. Ich habe nun meinen ganzen Samstag damit verbracht, den Fehler zu finden und bin einfach nur frustriert. Den Chat hatte ich am Freitag abend geschrieben, weil ich einfach mal Lust hatte einen Chat zu programmieren und deswegen ist er auch noch voller Fehler im Aufbau, da es mir eben einfach nur ums Prinzip ging.

    den Chat findet ihr hier: www.chabfo.com/1/index.php

    index.php
    PHP-Code:
    <?php
        session_start
    ();
        
        
    $_SESSION["TextNr"] = array();
            
        
    //$_SESSION["TextNr"][] = 4;
        
        //echo $_SESSION["TextNr"][2];
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">

    <head>
        <title>Chat</title>

        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="description" content="" />
        <meta name="author" content="" />
        <meta name="keywords" content="" />
        
        <link href="style.css" type="text/css" rel="stylesheet" />
        
        <script type="text/javascript" src="jQuery/jquery-1.9.1.min.js"></script>
        <script type="text/javascript" src="jQuery/draganddrop.js"></script>
        <script type="text/javascript" src="jQuery/ajax.js"></script>
        <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
        
    </head>

    <body>

    <div id="Chatbox">
        <div id="Balken">
        Andere Farbe für den header
        </div>
        <div id="Konversation">
               <b>Chatverlauf</b>
        </div>
        <div id="Textfeld">
            <form id="ChatInput" action="" method="">
                <textarea name="Text" id="Text"></textarea>
                <input id="SubmitMsg" type="submit" value="Senden" />
               </form>
        </div>
        <div id="Senden">
        <b>Senden</b>
        </div>
    </div>


    </body>

    </html>
    ChatDatenbankGET.php
    PHP-Code:
    <?php

    session_start
    ();

    //mysql_connect("","root");
    mysql_connect("rdbms.strato.de""""");

    //mysql_query("create database if not exists chatbase");

    //mysql_select_db("chatbase");
    mysql_select_db("");

    $Tabelle "create table if not exists Chatverlauf (Nummer int(11) auto_increment, Sortierung timestamp, Text varchar(1000) not null, Datum varchar(20) not null, Zeit varchar(20) not null, unique key Nummer (Nummer)) ENGINE=MyISAM default charset=latin1";

    mysql_query($Tabelle);

    $suchen "select * from Chatverlauf";

    $res mysql_query($suchen);
    $num mysql_num_rows($res);

    //$ladenNr = $num - sizeof($_SESSION["TextNr"]);
    $ArrayZahl sizeof($_SESSION["TextNr"]) + 1;
    //echo $ladenNr;

        
    for($i $ArrayZahl$i <= $num$i++)
        {
                
    $suchenSpec "select * from Chatverlauf where Nummer = '$i'";

                
    $resSpec mysql_query($suchenSpec);
                
                while(
    $dsatz mysql_fetch_assoc($resSpec))
                {
                    
    $dsatz1 htmlentities($dsatz["Text"]);
                    
    $dsatz2 htmlentities($dsatz["Zeit"]);
                    
    $dsatz3 htmlentities($dsatz["Datum"]);
                    
                    
                    echo 
    "<p><b>" $dsatz2 "</b>" $dsatz1 "</p>";            
                }
                
                
    $_SESSION["TextNr"][] = $i;    
        }


    //while($dsatz = mysql_fetch_assoc($res))
            //{
                //$dsatz1 = htmlentities($dsatz["Text"]);
                
                //echo $dsatz1;
                
            //}    


    ?>
    ChatDatenbank.php
    PHP-Code:
    <?php

    session_start
    ();

    //mysql_connect("","root");
    mysql_connect("rdbms.strato.de""""");

    //mysql_query("create database if not exists chatbase");

    //mysql_select_db("chatbase");
    mysql_select_db("");


    mysql_select_db("chatbase");

    $Tabelle "create table if not exists Chatverlauf (Nummer int(11) auto_increment, Sortierung timestamp, Text varchar(1000) not null, Datum varchar(20) not null, Zeit varchar(20) not null, unique key Nummer (Nummer)) ENGINE=MyISAM default charset=latin1";

    mysql_query($Tabelle);

    if(
    $_GET["Text"] != "")
    {

        
    $Datum date("d.m.Y");                                                    //Tag.Monat.Jahr
        
    $Zeit date("H:i:s");
        
        
    $TDecode $_GET["Text"];
        
    $T mysql_real_escape_string($TDecode);                        //umwandeln von sql anweisungen um sie für mysql unschädlcih zu machen
                
                    
            
    $Datensatz "insert into Chatverlauf (Nummer, Sortierung, Text, Datum, Zeit) values (NULL, CURRENT_TIMESTAMP, '$T', '$Datum', '$Zeit')";
            
            
    mysql_query($Datensatz);
        
        
        
        
            
    $Pruefen "select * from Chatverlauf where Datum = '$Datum' and Zeit = '$Zeit'";
            
            
    $res mysql_query($Pruefen);
            
            while(
    $dsatz mysql_fetch_assoc($res))
                {
                    
    $dsatz1 htmlentities($dsatz["Nummer"]);
                
                    
    $_SESSION["TextNr"][] = $dsatz1;            
                }

        
    }
    ?>
    ajax.php
    PHP-Code:
    $(document).ready( function()
    {

        
        
        $(
    "#Text").focus();
        
        $.
    fn.scrollTo = function( targetoptionscallback ){
      if(
    typeof options == 'function' && arguments.length == 2){ callback optionsoptions target; }
      var 
    settings = $.extend({
        
    scrollTarget  target,
        
    offsetTop     50,
        
    duration      500,
        
    easing        'swing'
      
    }, options);
      return 
    this.each(function(){
        var 
    scrollPane = $(this);
        var 
    scrollTarget = (typeof settings.scrollTarget == "number") ? settings.scrollTarget : $(settings.scrollTarget);
        var 
    scrollY = (typeof scrollTarget == "number") ? scrollTarget scrollTarget.offset().top scrollPane.scrollTop() - parseInt(settings.offsetTop);
        
    scrollPane.animate({scrollTop scrollY }, parseInt(settings.duration), settings.easing, function(){
          if (
    typeof callback == 'function') { callback.call(this); }
        });
      });
    }




        var 
    index 0;
        
        $(
    "#SubmitMsg").click( function() {
            
    alert("Hallo");
            var 
    Msg = $("#Text").val();
            $.
    post("post.php", {textMsg});
            $(
    "#Text").attr("value""");
            return 
    false;
        });
        
        
        $(
    "#Senden").click( function() {
            var 
    Text = $('#Text').val();
            $(
    "#Konversation").append("<p>" Text "</p>");
            $(
    "#Konversation").scrollTo("#Konversation:last", {easing'swing'duration'1000'});
            $(
    '#Text').val("");
            $(
    "#Text").focus();
            
            var 
    URL "ChatDatenbank.php?Text=" Text;
            
                $.
    get(URL, function(ergebnis) {
                    
                });
            
            
            
    //$('#Konversation').animate({
            //scrollTop: $("#Konversation:last").offset().top
        //}, 500);
        
    });
        
        $(
    "#Text").keydown(function(e) {
               if (
    e.which == 13) {  // Enter
            
    e.preventDefault();        // Damit kein Enter nach dem Absenden hinzugefügt wird
                
    var Text = $('#Text').val();
                $(
    "#Konversation").append("<p>" Text "</p>");
                $(
    "#Konversation").scrollTo("#Konversation:last", {easing'swing'duration'1000'});
                $(
    '#Text').val("");
                
                
    //var meineDaten = $('#ChatInput').serialize();
                
                
    var URL "ChatDatenbank.php?Text=" Text;
            
                $.
    get(URL, function(ergebnis) {
                    
                });
            
                
    //$.post("ChatDatenbank.php", {TextPost: Text});
            
                //postToUrl(URL, {Text: 'Text'});
                
                //$.post(URL, meineDaten, function(ergebnis) {
                    
                //}, 'html');
               
    }        
        });
        
        
        
    setInterval(function() {
              var 
    URL "ChatDatenbankGET.php";
            
                $.
    post(URL, function(ergebnis) {
                    if (
    ergebnis
                    {    
                        $(
    "#Konversation").append(ergebnis);
                        
    //$("#Konversation").scrollTo("#Konversation:last", {easing: 'swing', duration: '1000'});
                        
    if(index == 0)
                        {
                            $(
    "#Konversation").animate({ scrollTop7000 }, 1000);
                            
    index 1;
                        }else
                        {
                            $(
    "#Konversation").scrollTo("#Konversation:last", {easing'swing'duration'1000'});
                        }
                    }
                });
        }, 
    1000);
        
        
    }); 
    Ich freue mich über jegliche Hilfe und schonmal Danke im Voraus!

    Euer Neat


  • #2
    wie sehen die Fehler bei den Umlauten denn aus?

    Kommentar


    • #3
      Wie wäre es wenn du in den Tabellen UTF als Charset verwendest, wenn du das im HTML-Dokument bereits tust?

      Und sorg mal dafür, dass der per PHP ausgegebene Chatverlauf vorher durch htmlspecialchars() gejagt wird - sonst kann man JS-Code injizieren, wie es bereits jemand demonstiert hat.

      Kommentar


      • #4
        Cool, dass schon welche geantwortet haben! Ich werde das mit dem Tabellen-Charter gleich ausprobieren, wenn ich zu Hause bin
        Das mit dem htmlspecialchars kommt daher, dass ich anfangs rumprobiert hatte. Wenn man den Chat aktualisiert werden alle Funktionen über die Datenbank geladen und dann auch durch htmlentities gejagt, auch ist dann die Uhrzeit zu sehen
        Könnte es sein, dass das auch daran liegen könnte, dass ich geh statt Post bei Ajax verwende? Ich meine weil & und + ja gar nicht angezeigt werden :\ habt das auch schon ausprobiert, bekomme das aber mit Post einfach nicht hin, da die Postvariable im zweiten Skript irgendwie nicht ankommt :\ kann mir jemand helfen wie ich das umsetzen kann mit Post?

        Danke Neat

        Kommentar


        • #5
          Wie bei allen Problemen mit "kaputten Zeichen": Nutze konsequent UTF-8

          http://www.php.de/adventskalender-20...perlative.html
          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

          Kommentar

          Lädt...
          X