Javascript in Php verfälscht

NoUse4aNick

Mitglied
Guten Tag,

also Ich habe folgendes Problem:

Sobald Ich die Seite, welche Javascript-Funktionen besitzt, mit einer PHP funktion erweitere, funktioniert das Javascript nicht mehr. Ich bin mir jetzt nicht sicher, ob ich das Ganze unter PHP oder Javascript posten soll, aber an dem Javascript kann es eigentlich nicht liegen, da die Scripts ohne die PHP Funktionen ja einwandfrei funktionieren.

Den PHP Code brauche ich ganz einfach, weil das Ganze nur erreichbar sein soll, wenn ein cookie gesetzt ist.

Lange Rede kurzer Sinn hier einfach mal der Code (mir ist bewusst, dass das Posten von HTML Codes nicht erlaubt ist, aber würde ich nur den PHP Code Posten, könnte man keinen Fehler erkennen, da einfach nichts da ist. Ich bitte um Verständniss):
PHP:
<?php
$eingeloggt=$_COOKIE['login'];
if ($eingeloggt == "ok"){
print("<!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' />
<title>AutoEdit v.1.0</title>
</head>
<script type='text/javascript'>
function oeffnefenster (url) {
 fenster = window.open(url, 'fenster1', 'width=600,height=450,status=yes,scrollbars=yes,resizable=yes');
 fenster.focus();
}
   // <![CDATA[
    function cur_ins(field, startTag, endTag, offset) {
      field.focus();
      if ((window.getSelection && document.createRange) || document.getSelection) { // FF, Op., Ko., Safari
        var scrollTop, scrollLeft;
        if (field.type == 'textarea' && typeof field.scrollTop != 'undefined') {
          scrollTop = field.scrollTop;
          scrollLeft = field.scrollLeft;
        }
        selStart = field.selectionStart;
        selEnd = field.selectionEnd;
        text = field.value.substring(selStart, selEnd);
        field.value = field.value.substring(0, selStart) + startTag + text + endTag + field.value.substring(selEnd);
        if (typeof scrollTop != 'undefined') {
          field.scrollTop = scrollTop;
          field.scrollLeft = scrollLeft;
        }
        if (text.length > 0) {
          if (offset != 0) {
            field.selectionEnd = selStart + startTag.length - offset;
          } else {
            field.selectionEnd = selStart + startTag.length + text.length + endTag.length;
          }
        } else {
          field.selectionEnd = selStart + startTag.length;
        }
        field.selectionStart = field.selectionEnd; 
      } else if (document.selection && document.selection.createRange) { // IE
        marker = document.selection.createRange();
        text = marker.text;
        marker.text = startTag + text + endTag;
        marker = document.selection.createRange();
        if (text.length > 0) {
          if (offset != 0) {
            marker.move('character', startTag.length - offset);
          } else {
            marker.move('character', startTag.length + text.length + endTag.length + offset);
          }
        } else {
          marker.move('character', -(endTag.length));
        }
        marker.select();
      } 
    }
 // ]]>
</script>
<body>
<h1 align='center'>Seiten Editor</h1>
<center>
F&uuml;r die Textformatierung siehe <a href='javascript:oeffnefenster('command.html');'>hier</a><br />
Im Augenblick wird <b>die Sartseite</b> editiert!<br />
Den zu &auml;nderten Text bitte hier eingeben:
<form name='editfeld' action='start_edit.php' method='post'>
      <fieldset>
        <legend>Nachricht</legend>
        <textarea name='message' id='message' cols='40' rows='8'></textarea>
      </fieldset>
      <fieldset>
        <button onclick='cur_ins(this.form.message, '<strong>', '</strong>', 0); return false;'><strong>B</strong></button>
        <button type='button' onclick='cur_ins(this.form.message, '<em>', '</em>', 0); return false;'><em>I</em></button>
      </fieldset>
<input type='submit' value='Fertig' />
</form></center><br />

<a href='sites.php'>Zur&uuml;ck zur Seitenauswahl</a>
</body>
</html>
");
}
else {
	
	print(" Bitte loggen sie sich zuerst ein!\n
	<br><a href='login.html'>Login</a>");
}

?>

Mit freundlichen Grüßen
 
Zuletzt bearbeitet:
Das kann auch nicht funktionieren, so wie die Quotes gesetzt sind.

Willkürlicher Auszug aus deinem Quellcode:
HTML:
onclick='cur_ins(this.form.message, '<em>', '</em>', 0); return false;'
Den müsstest du z. B. wie folgt abändern:
HTML:
onclick=\"cur_ins(this.form.message, '<em>', '</em>', 0); return false;\"
 
Vielen Dank, ja das war es.

Mich interessiert dennoch, weshalb ich in dem Falle ein \" setzen muss...
Es heist doch, dass man statt " immer ' genauso hernehmen kann !?
Lg
 
Das stimmt nicht so ganz.

Auch in PHP gibt es Unterschiede zwischen Single und Double Qoutes.
PHP:
$foo = 'Welt';

// folgendes gibt "Hallo Welt" aus
echo "Hallo $foo";

// folgendes gibt "Hallo $foo" aus
echo 'Hallo $foo';

Bei dir hat das alles jedoch nichts mit PHP zu tun, es wird schlicht und ergreifend invalides HTML ausgegeben.
Nochmal zu dem vorherigen Beispiel:
HTML:
onclick='cur_ins(this.form.message, '<em>', '</em>', 0); return false;'

In diesem Fall interpretiert der Browser das erste Quote als Anfang des Arguments, das zweite - gleichartige - Quote als Ende.
In deinem Fall würde dann lediglich folgendes als Argument übrig bleiben.
HTML:
onclick='cur_ins(this.form.message, '
Der Rest wird ignoriert.
Bei unterschiedlichen Quotes - egal welche - kann das nicht vorkommen.
 
Zurück