php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS Probleme mit HTML5, Bootstrap oder jQuery ?

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 20-10-2006, 14:55
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard innerHTML = "<script>..."

ich habe mir einen Ajax-Chat gebastelt und scheitere nun an einem dummen Hindernis...

Mit Ajax hole ich mir die Daten aus der php-Datei und die wiederum aus der Datenbank.
Es kann nun vorkommen, dass ein Script mit eingefügt wird im Chat.
z.B. <script>alert("hallo")</script>
Doch wenn ich innerHTML verwende wird das Script nicht ausgeführt, wenn auch angezeigt im Quelltext. Wie kann ich das Script so einfügen lassen, dass es auch ausgeführt wird?

MfG

JMC
Mit Zitat antworten
  #2 (permalink)  
Alt 20-10-2006, 15:18
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

normalerweise versucht man sowas ja zu unterbinden. aber gibts in javascript nicht auch ein eval?

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 20-10-2006, 15:29
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

Sie können es auch nicht direkt einfügen sondern nur mit VBC z.B.

:SCRIPT=rb:Meine Schrift in Regenbogenform:/SCRIPT:

eveal nützt mir nicht so viel weil ich die PHP-Datei auslese und die dann z.B. so aussieht:

<b>Fritzchen</b>: Hallo <script>alert("hallo")</script>
<b>Fritzchen</b>: Hallo <script>firework()</script>
<b>Fritzchen</b>: Hallo <script>play_sound(4)</script>! Wie gehts denn so?^^

also habe ich nur einen ganz kleinen Teil der Datei auf den eveal angewendet werden kann.
Mit Zitat antworten
  #4 (permalink)  
Alt 20-10-2006, 21:35
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

oooijoijoijoijooooi
hast du eine ahnung, wie groß die sicherheitslücken sind?

als erstes mußt du überprüfen, ob der relevante code kein risiko darstellt. dann mußt du das ganze per regexp aufdröseln und entsprechend formatiert von php an js übergeben.

ich glaube, es wäre einfacher, du würdest vordefinierte js-funktionen bereit stellen und dann entsprechend verarbeiten.

btw: was ist VBC? visual basic script? das ist doch ie only.

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #5 (permalink)  
Alt 20-10-2006, 22:14
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Zitat:
Original geschrieben von Kropff
ich glaube, es wäre einfacher, du würdest vordefinierte js-funktionen bereit stellen und dann entsprechend verarbeiten.
Und ich glaube, genau das macht er. Sein Chatclient (also seine Webseite) lädt eine JS-Datei, die bestimmte Funktionen enthält. User A kann nun mit bestimmten Tags im Chattext an User B dafür sorgen, dass diese Funktionen bei User B ausgeführt werden. Das klingt nur unsicher, denn zwischendurch laufen die Daten ja noch über den Server und der kann mit stripslashes() oder so erstmal alles Gefährliche entfernen. Diese Tags bleiben dabei erhalten, können geparst und durch den entsprechenden JS-Code ersetzt werden, der bei User B eben die JS-Funktionen aufruft.

Geändert von onemorenerd (20-10-2006 um 22:17 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 21-10-2006, 20:54
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

Danke onemorenerd

genau so wirds gemacht und dies muss dann irgendwie ausgeführt werden... mit innerHTML aber wird der <script>-tag nicht verarbeitet also wie kann ich dafür sorgen dass er das doch wird?

und sry wegen dem VBC ich nenne bbcode, vieleicht fälschlicherweise ,immer so.
Mit Zitat antworten
  #7 (permalink)  
Alt 21-10-2006, 23:30
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Der Hinweis kam oben schon einmal, vielleicht hast du ihn überlesen: http://de.selfhtml.org/javascript/ob...engig.htm#eval
Mit Zitat antworten
  #8 (permalink)  
Alt 22-10-2006, 14:51
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

Danke, nein eigentlich nicht.

Könntest du mir ein Beispiel geben wie ich das in meinem Fal verwirklichen kann?

Meinst du alle Scriptbereiche einzeln rausnehmen und dann verarbeiten? so z.B.:

PHP-Code:
 $string "Hallo. [script]play_sound(4)[/script]Wie gehts den so?[script]
alert('huhuu')[/script]"
;
preg_match_all("/\[script\][a-z0-9_\(\)\'\"]+\[\/script\]/i",$string,$matches);
$matches implode(";",$matches[0]).";";
$string preg_replace("/\[script\][a-z0-9_\(\)\'\"]+\[\/script\]/i","",$string);
$matches preg_replace("/\[[\/]?script\]/i","",$matches);
echo 
"matches: ".$matches// Ausgabe: matches: play_sound(4);alert('huhuu')
echo "String: ".$string// Ausgabe: String: Hallo. Wie gehts den so? 
Dann verwende ich bei $matches eval und bei $string innerHTML oder wie hast du dir das vorgestellt?
Mit Zitat antworten
  #9 (permalink)  
Alt 22-10-2006, 15:03
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Wenn du in .innerHTML einfach JS-Code reinschreibst, wird zwar der Inhalt des DOM-Elements geändert, aber nicht der JS-Interpreter aufgerufen. Folge: Der Code wird nicht ausgeführt.

Du könntest ein neues DOM-Element vom Typ script als Child des Elements erzeugen, über dessen innerHTML wir die ganze Zeit reden. Aber ich bin mir nicht sicher, ob da in allen Browsern der JS-Interpreter anspringt.

Deshalb versuche es mal so: Definiere einen onchange-Handler für das Element, über dessen innerHTML wir sprechen. Der Handler eval't den (neuen) Inhalt von innerHTML. Könnte funktionieren.
Mit Zitat antworten
  #10 (permalink)  
Alt 22-10-2006, 16:28
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

Die 1. Variante funktioniert leider z.B. beim IE nicht. Aber sonst eigentlich schon. Dann muss ich aber sowas wie bei $string und $matches machen.

die 2. Variante habe ich mal so probiert:
Code:
<script>
eval("<div>hi</div>;a=3;alert('hallo')");
</script>
und sie funktioniertsobald ich nach und vor jedem Aufruf von Javscript einen ; mache.
dies könnte die Lösung sein, wenn nicht
eval("a=3 und b=5, das ist die Lösung!;alert('Kapiert?!');");
z.B. einen Javascriptfehler verursachen würden.

so muss ich wohl doch jeweils einzeln $matches und $string übergeben und dann

.innerHTML += $string(als AJAX-responsetext)
eval($matches(als AJAX-responsetext))
Mit Zitat antworten
  #11 (permalink)  
Alt 23-10-2006, 09:39
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Wenn du zwei so unterschiedliche Arten von Rückgabedaten hast - einmal Textdaten, einmal Scriptcode - dann würde ich mich von innerHTML (und vermutlich auch XMLHTTPRequest.responseText, weil damit AJAX ja "so schön einfach ist", nicht wahr?) mal verabschieden, und das ganze sauber aufbauen ... also dem X in AJAX auch Bedeutung verleihen: Sauberes XML zurückgeben, in dem es dann z.B. für Scriptcode ein eigenes Element gibt [1], dessen Inhalt dann leicht extrahiert werden könnte, etc.



[1] Der Name eines auch in XHTML vorhandenen solchen wäre übrigens bspw. <script>.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #12 (permalink)  
Alt 23-10-2006, 15:11
bärlina
 Junior Member
Links : Onlinestatus : bärlina ist offline
Registriert seit: Oct 2005
Beiträge: 131
bärlina ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wennich das hier alles so lese, dann fällt mir auf, dass hier grad einige leute gleichzeitig an einem chat arbeiten, der auf dieser ajax-shoutBox basiert...(mich eingeschlossen).. und deren funktionen unterscheiden sich nur wenig...

vielleicht sollten wir alle nen gemeinsamen thread öffnen, statt jeder seinen eigenen...wir haben nämlich oft alle die gleichen probleme..
erfahrungsmangel mit dem innerHTML bzw DOM/child...übergabe, ablauf...usw.

falls nicht, werd ich meinen 2seiten thread gleich mal pflegen
Mit Zitat antworten
  #13 (permalink)  
Alt 24-10-2006, 12:49
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

Danke es klppt jetzt bei mir alles.

@ wahsaga: Ich habe jetzt sowieso alles mit responseXML gemacht. Wenn es noch eine andere Möglichkeit gibt hast du ein Tutorial oder so für mich?

MfG

JMC
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:46 Uhr.