mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 25.04.2024 09:13 Benutzername: Passwort: Auto-Login

Thema: [Javascript -> PHP] String wird falsch übergeben [solved] vom 21.08.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [Javascript -> PHP] String wird falsch übergeben [solved]
Autor Nachricht
metty
Threadersteller

Dabei seit: 21.03.2005
Ort: Köln
Alter: 39
Geschlecht: Männlich
Verfasst Di 21.08.2007 16:58
Titel

[Javascript -> PHP] String wird falsch übergeben [solved]

Antworten mit Zitat Zum Seitenanfang

Hallo Miteinander,

meine ersten Gehversuche mit Ajax hab ich eigentlich ganz gut überstanden. Nach der üblichen Tutorialwälzerei wollte ich mich als dran machen, etwas sinnvolles zu programmieren und hab dabei an ein Gästebuch gedacht. Ein Gästebuch welches nicht (komplett) neugeladen werden muss, wenn man Einträge hinzufügt, Seiten wechselt etc. Beim ersten hakts allerdings schon an einer Kleinigkeit. Zwar kann ich Einträge hinzufügen und die neuen anzeigen lassen, aber die Kodierung der Strings hakt. Zeilenumbrüche macht er auch nicht...

Wenn ich zum Beispiel in meinem Kommentar Umlaute oder Sonderzeichen einfüge, werden die zu irgendeinem Kauderwelsch konvertiert. Ich weiß allerdings nicht warum.

Aus
Code:
ä ö ä

wurde
Code:
ä ö ä


Irgendwas ist falsch, das weiß ich. Ich weiß nur nicht was. Habt ihr vielleicht ne Ahnung?

HTML mitJavascript:
Code:

<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title>Burkhardrock &ndash; 31.08.2007 &ndash; Wadersloh, Stellwerk</title>
<link href="style/sheet.css" rel="stylesheet" type="text/css" />
<base target="_self" />
<script type="text/javascript" src="script/javascripts.js"></script>
<script type="text/javascript" src="script/prototype.js"></script>

<script type="text/javascript" language="javascript">
<!--

function getGBEntrys(startpos,limit) {

    var url = "inc/guestbook.php";
    var pars = "do=get&startpos=" + startpos + "&limit=" + limit;
   
    var myAjax = new Ajax.Request(
        url,
        {
            method: "post",
            parameters: pars,
            onCreate: Element.show("systemWorking"),
            onComplete: showGBEntrys
        }
    );
}

function showGBEntrys(Request) {
    Element.hide("systemWorking");
    $("gaestebuchdiv").innerHTML = Request.responseText;
}

function makeEntry() {
   
    var url = "inc/guestbook.php";
    //var pars = "do=make&" + Form.serialize(document.forms['gbeintrag']);
    var pars = "do=make&gbname=" + $F("gbname") + "&gbemail=" + $F("gbemail") + "&gbhomepage=" + $F("gbhomepage") + "&gbcaptcha=" + $F("gbcaptcha") + "&gbcomment=" + $F("gbcomment");
    //alert(pars);
   
    var myAjax = new Ajax.Request(
        url,
        {
            method: "post",
            postBody: pars,
            onCreate: hideForm
        }
    );
}

function updatePage(Request) {
    Element.hide('write');
    Element.hide('gbform');
    Element.show("systemWorking");
    getGBEntrys(0,500);   
}

function showFehler(Request) {
    $('gbeintragmeldung').innerHTML = Request;
}

function showForm() {
    Element.hide('write');
    Element.show('gbform');
}

function hideForm() {
    Element.hide('write');
    Element.hide('gbform');
}

//-->
</script>



<!-- Was hat 4 Beine und einen Arm? - Nen Rottweiler auf nem Kinderspielplatz! -->
</head>
<!--[if lte IE 6]>
<style type="text/css" media="all" />
body {
    background: #000000;
}
div#einhundert {
    background: #000000;
}

div #logo {
    background-image: url("images/bg_title_ie.gif");
}

div#infos {
   background-image: url("images/bg_infos.gif");
}
</style>
<![endif]-->
<body onload="getGBEntrys(0,500); MM_preloadImages('images/nav_geschichte_o.gif','images/nav_diebands_o.gif','images/nav_alleinfos_o.gif','images/nav_gaestebuch_o.gif','images/nav_impressum_o.gif')">
<!-- 100% -->
<div id="einhundert">
<!-- SEITE START -->
<div id="site">
<!-- LOGO START -->
<div id="logo"><a href="index.html"><img src="images/clearpixel.gif" alt="" border="" width="358" height="254" /></a></div>
<!-- LOGO ENDE -->i
<!-- INFOS START -->
<div id="infos"></div>
<!-- INFOS ENDE -->

<!-- CONTENT START -->
<div id="contentorange">
<div id="contentgrau">
<div id="content">
    <p class="headline"><img src="images/head_gaestebuch.gif" width="126" height="19" border="0" alt="G&auml;stebuch" /></p>
    <p id="write" style="display:block;" class="fliesstext"><a href="javascript:showForm();">Eintrag schreiben</a></p>   
    <div style="display:none;" align="center" id="systemWorking"><img src="images/spinner.gif" alt="loading..." /><br />loading...<br /></div>
    <p id="form" class="fliesstext"><div id="gbform" style="display:none; margin-bottom:0px;">
        <form name="gbeintrag" id="gbeintrag" action="javascript:makeEntry();" method="post">
        <table width="330" cellpadding="0" cellspacing="0" border="0">
            <tbody>
                <tr>
                    <td style="width:80px;" class="formtext">Name:</td>
                    <td style="width:250px;" class="formtext"><input type="text" name="gbname" id="gbname" class="textfeld" value="" /></td>
                </tr>
                <tr>
                    <td style="width:80px;" class="formtext">E-Mail:</td>
                    <td style="width:250px;" class="formtext"><input type="text" name="gbemail" id="gbemail" class="textfeld" value="" /></td>

                </tr>
                <tr>
                    <td style="width:80px;" class="formtext">Homepage:</td>
                    <td style="width:250px;" class="formtext"><input type="text" name="gbhomepage" id="gbhomepage" class="textfeld" value="" /></td>
                </tr>
                <tr>
                    <td style="width:80px;" class="formtext">Kommentar:</td>
                    <td style="width:250px;" class="formtext"><textarea name="gbcomment" id="gbcomment" class="textarea" cols="10" rows="10"></textarea></td>

                </tr>
                <tr>
                    <td style="width:80px;" class="formtext">Menschlich?</td>
                    <td style="width:250px;" class="formtext"><img src="inc/captcha/captchaimg.php?{hash}" style="margin-bottom:3px; border:1px solid #000000;" alt="" /><br /><input
                    type="text" name="gbcaptcha" id="gbcaptcha" class="textfeld" /></td>
                </tr>
                <tr>
                    <td style="width:80px;" class="formtext">&nbsp;</td>
                    <td style="width:250px;" class="formtext"><input type="submit" onclick="makeEntry()" name="gbsubmit" id="gbsubmit" value="Eintragen" /></td>

                </tr>
            </tbody>
        </table>
        <div id="gbeintragmeldung" class="fliesstextrot"></div>
        </form></div></p>
    <p class="fliesstext"><div id="gaestebuchdiv"></div></p>
</div>
<div id="navigation"><a href="geschichte.html" title="Geschichte"><img
    src="images/nav_geschichte.gif" id="nav_geschichte" width="99" height="32" border="0" alt="Geschichte" onmouseover="MM_swapImage('nav_geschichte','','images/nav_geschichte_o.gif')" onmouseout="MM_swapImgRestore()" /></a><a
    href="diebands.html" title="Die Bands"><img src="images/nav_diebands.gif" id="nav_diebands" width="86" height="32" border="0" alt="Die Bands" style="margin-left:15px;" onmouseover="MM_swapImage('nav_diebands','','images/nav_diebands_o.gif')" onmouseout="MM_swapImgRestore()" /></a><a
    href="alleinfos.html" title="Alle Infos"><img src="images/nav_alleinfos.gif" id="nav_alleinfos" width="93" height="32" border="0" alt="Alle Infos" style="margin-left:15px;" onmouseover="MM_swapImage('nav_alleinfos','','images/nav_alleinfos_o.gif')" onmouseout="MM_swapImgRestore()" /></a><a
    href="gaestebuch.php" title="G&auml;stebuch"><img src="images/nav_gaestebuch_o.gif" id="nav_gaestebuch" width="96" height="32" border="0" alt="G&auml;stebuch" style="margin-left:15px;" onmouseover="MM_swapImage('nav_gaestebuch','','images/nav_gaestebuch_o.gif')" onmouseout="MM_swapImgRestore()" /></a><a
    href="impressum.html" title="Impressum"><img src="images/nav_impressum.gif" id="nav_impressum" width="95" height="32" border="0" alt="Impressum" style="margin-left:15px;" onmouseover="MM_swapImage('nav_impressum','','images/nav_impressum_o.gif')" onmouseout="MM_swapImgRestore()" /></a>
</div>
</div>
</div>

<!-- CONTENT ENDE -->   

</div>
<!-- SEITE ENDE -->
</div>

</body>
</html>


Und der PHP Code:
Code:

        $gbname = $_REQUEST['gbname'];
        $gbemail = $_REQUEST['gbemail'];
        $gbhomepage = $_REQUEST['gbhomepage'];
        $gbcaptcha = $_REQUEST['gbcaptcha'];
        $gbcomment = $_REQUEST['gbcomment'];
        //$gbcomment = rawurlencode($gbcomment);
       
        if($gbname=="") {
         header("Content-Type: text/javascript");
          echo "showFehler(\"Bitte gib deinen Namen ein!\");";
          exit;
        }
        if($gbcomment=="") {
         header("Content-Type: text/javascript");
          echo "showFehler(\"Bitte Kommentar eingeben!\");";
          exit;
        }
        $captchaCheck = checkCaptcha($gbcaptcha);
      if($captchaCheck==true) {
         //E-Mail checken, falls nicht korrekt, verwerfen.
         if($gbemail!="") { $emailcheck = MXCheck($gbemail); }
         if ($emailcheck!=false){ $gbemail = $gbemail; } else { $gbemail =""; }
         // Eintragen
         InsertGBEntry($gbname, $gbemail, $gbhomepage, $gbcomment);
         //Unset captcha
         session_unset();
            $GBEntries = GetGBEntries(0, 1);
            while($GBEntry = mysql_fetch_array($GBEntries)) {
               //Kommentarvariablen zuweisen
              $id = $GBEntry['id'];
              $zeit = date("d M Y - h:ia", $GBEntry['timestamp']);
              $name = $GBEntry['name'];
              //$name = ConvertSpecialSigns($name);
              if($GBEntry['email']!="") {
                    $email = "<a class=\"gbmail\" href=\"mailto:" . $GBEntry['email'] . "\" title=\"" . $GBEntry['email'] . "\">" . $name . "</a>";
                } else {
                    $email = $name;
                }
              if($GBEntry['homepage']!="") {
                    $homepage = " | <a class=\"gbmail\" target=\"_blank\" href=\"" . $GBEntry['homepage'] . "\" title=\"" . $GBEntry['homepage'] . "\">Homepage</a>";
                } else {
                    $homepage = "";
                }
              $kommentar = htmlspecialchars($kommentar);
              $kommentar = nl2br($GBEntry['comment']);

              $eintag = "<div id=\"eintrag\" class=\"gaestebucheintrag\">\n";
              $eintag .= "<div class=\"gbdatum\">" . $zeit . "</div>\n";
              $eintag .= "<div class=\"fliesstextz\">" . $kommentar . "</div>\n";
              $eintag .= "<div class=\"gbname\" align=\"right\">geschrieben von " . $email . $homepage . "</div>\n";
              $eintag .= "</div><br />\n";
           }

             header("Content-Type: text/javascript");
           echo "updatePage();";
         
      } else {
         header("Content-Type: text/javascript");
          echo "showFehler(\"Du hast den Code falsch eingegeben!\");";
          exit;
          //echo "Du hast den Code falsch eingegeben!";
      }



Hat irgendwer ne Ahnung? Ich verzweifel schon. Mädchen!

[edit]
Als erledigt markiert.


Zuletzt bearbeitet von tacker am Mi 22.08.2007 09:27, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Zeithase

Dabei seit: 09.05.2005
Ort: Erfurt
Alter: 39
Geschlecht: Männlich
Verfasst Di 21.08.2007 17:01
Titel

Antworten mit Zitat Zum Seitenanfang

Richtigen Header mit einheitlichem Charset (z.B. UTF8) senden.
  View user's profile Private Nachricht senden
Anzeige
Anzeige
metty
Threadersteller

Dabei seit: 21.03.2005
Ort: Köln
Alter: 39
Geschlecht: Männlich
Verfasst Di 21.08.2007 17:04
Titel

Antworten mit Zitat Zum Seitenanfang

Zeithase hat geschrieben:
Richtigen Header mit einheitlichem Charset (z.B. UTF8) senden.


Klingt logisch.
Im HTML hab ich den Charset ja auch angegeben.

Code:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


Wie übergeb ich das denn?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Zeithase

Dabei seit: 09.05.2005
Ort: Erfurt
Alter: 39
Geschlecht: Männlich
Verfasst Di 21.08.2007 17:05
Titel

Antworten mit Zitat Zum Seitenanfang

Server-Charset hat hoehere Prioritaet als Meta-Angaben. In PHP sollte das via

Code:
header('content-type: text/html; charset=utf-8');


gehen. Alternativ kannst Du, sofern Du Zugriff auf die Webserver-Konfiguration hast, auch default ein einheitliches Charset via AddDefaultCharset in der Apache-Konfiguration setzen.


Zuletzt bearbeitet von Zeithase am Di 21.08.2007 17:06, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
metty
Threadersteller

Dabei seit: 21.03.2005
Ort: Köln
Alter: 39
Geschlecht: Männlich
Verfasst Di 21.08.2007 17:10
Titel

Antworten mit Zitat Zum Seitenanfang

Heißt das ich sollte den Header Code als PHP in meiner zur Zeitigen HTML Datei einbinden? Ganz oben?

//Edit: Sorry, steh aufm Schlauch.


Zuletzt bearbeitet von metty am Di 21.08.2007 17:10, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Zeithase

Dabei seit: 09.05.2005
Ort: Erfurt
Alter: 39
Geschlecht: Männlich
Verfasst Di 21.08.2007 17:19
Titel

Antworten mit Zitat Zum Seitenanfang

metty hat geschrieben:
Heißt das ich sollte den Header Code als PHP in meiner zur Zeitigen HTML Datei einbinden? Ganz oben?


Du sollst den Header-Schnipsel in das Ajax-Skript (inc/guestbook.php) pappen. Verwende dort das gleiche Charset wie in Deinem HTML-Dokument.
  View user's profile Private Nachricht senden
metty
Threadersteller

Dabei seit: 21.03.2005
Ort: Köln
Alter: 39
Geschlecht: Männlich
Verfasst Di 21.08.2007 17:23
Titel

Antworten mit Zitat Zum Seitenanfang

Juhu es klappt! Danke!
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen String an andere Funktionen übergeben
[SOLVED] [PHP] (int)$string = andere zahl nach typecast
Javascript Photoshop String in INT umwandeln
ID aus Datenbank in Javascript mit übergeben
Javascript: Parameter übergeben und aufrufen?
Value eines Radiobuttons an Javascript übergeben
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.