Prüfen ob Datei auf server vorhanden
Armin
- javascript
Hallo,
Ich habe vor das wenn ein Benutzer auf der Seite eingelogt ist und die Seite nicht aktualisiert, er aber eine Nachricht bekommt darauf hingewiesen wird (durch ein Hinweistext der dann eingeblendet wird) das er eine Nachricht empfängt.
Ich hatte es mir so gedacht das ein JavaScript kontinuierlich schaut ob eine .txt Datei auf den Servervorhanden ist und wenn diese Datei vorhanden ist den Text ausgibt.
Die Datei schaut zb so aus "username.txt"
ODER Idee 2
Das Java Script ruft alle 5 Sekunden die Seite "neuenachrichten.php" auf. Wenn auf der Seite "0" Steht dann macht das Java Script nix und ruft in 5 Sekunden wieder die "neuenachrichten.php" auf. Sollte dort zb jetzt Stehen "Armin" dann soll das JavaScript den Text einblenden "Armin hat ihnen soeben eine Nachricht geschrieben"
Kann mir einer sowas machen ? oder Codeschnippsel geben bzw Tips wo ich soetwas finden kann ?
Habe in sachen JavaScript keine bis gar keine Ahnung.
Gruss Armin
Grüße,
Habe in sachen JavaScript keine bis gar keine Ahnung.
willkommen im club.
variante 2 klingt nach ajax, mit dem ich gerade eben so meine probleme hatte -
dashabe ich gefunden:
var ajaxdestination="";
function get_data(what) { // get data from source (what)
try {
xmlhttp = window.XMLHttpRequest?new XMLHttpRequest():
new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) { /* do nothing */ }
// we are defining the destination DIV id, must be stored in global variable (ajaxdestination)
ajaxdestination=what;
xmlhttp.onreadystatechange = triggered; // when request finished, call the function to put result to destination DIV
var to="blabla.php?checkuser="+what;
xmlhttp.open("GET", to);
xmlhttp.send(null);
xmlhttp.onreadystatechange = triggered;
return false;
}
function triggered() { // put data returned by requested URL to selected DIV
if (xmlhttp.readyState == 4) if (xmlhttp.status == 200)
document.getElementById(ajaxdestination).innerHTML=xmlhttp.responseText;
}
rufst einfach die funktion alle paar secunden (lieber alle 30 oder so) auf -
eswürde in den element mit gegebner ID was reinschreiben, ersetze es durch alert(); und du hast was du willst. nur noch php-seite muss dann stimmen.
hats geholfen?
MFG
bleicher
eswürde in den element mit gegebner ID was reinschreiben, ersetze es durch alert(); und du hast was du willst. nur noch php-seite muss dann stimmen.
Ganz so einfach wird es nicht.
Wenn er wirklich per alert(); etwas aufgeben will muss er diesen neuen Quellcode, der durch Ajax in die Seite kommt erst noch ausführen.
Das würde dann mit der Javascript Funktion eval() geschehen.
Viel einfacher wäre es da einfach ein alert zu imitieren. Also den DIV-Kontainer erst versteckt halten und dann irgendwo mit der Meldung einblenden.
mfg
Alex
Grüße,
Ganz so einfach wird es nicht.
ich meinte
function triggered() { // put data returned by requested URL to selected DIV
if (xmlhttp.readyState == 4) if (xmlhttp.status == 200)
alert(xmlhttp.responseText);<---
}
würde sowas nicht gehen?
MFG
bleicher
Da habe ich wohl etwas zu kompliziert gedacht.
Das müsste schon gehen. Nur eben jeglicher Code der in die "Hauptseite" geladen wird muss erst noch ge-"eval()"-t werden.
Mahlzeit Alex,
Das müsste schon gehen. Nur eben jeglicher Code der in die "Hauptseite" geladen wird muss erst noch ge-"eval()"-t werden.
... was diese Lösung schon wieder zu einem Sicherheitsrisiko macht: eval() is evil!
MfG,
EKKi
Hallo,
... was diese Lösung schon wieder zu einem Sicherheitsrisiko macht: eval() is evil!
Moment mal. Wo soll hier das Sicherheitsrisiko liegen?
Man holt mit XMLHttpRequest Code vom eigenen Server und führt diesen mit eval() aus. Das hat erstmal das gleiche Risiko wie das Einbinden von Scripten via <script src="...">. Es sei denn, ein Angreifer schafft es, JavaScript ins System zu schleusen, welches dann auch noch in die Serverantwort geschrieben und ausgeführt wird. Das ist dann aber kein Problem von eval, sondern nennt sich XSS und passiert auch ohne eval gerne mal.
Mathias
Mahlzeit molily,
... was diese Lösung schon wieder zu einem Sicherheitsrisiko macht: eval() is evil!
Moment mal. Wo soll hier das Sicherheitsrisiko liegen?
Das Risiko ist, dass man eval() benutzt. Täte man das nicht, gäbe es prinzipiell nicht die Möglichkeit, (ungeprüft) Code von dritter Stelle - egal ob eigener Server oder nicht, ob vertrauenswürdig oder nicht - auszuführen.
Ich wollte damit darauf hinweisen, dass man eigentlich immer versuchen sollte, ohne eval() auszukommen. Wenn eine Problemlösung zwangsläufig auf eval() angewiesen ist, dann ist in 99,9999% der Fälle nicht richtig nachgedacht worden und nur in 0,0001% der Fälle besteht wirklich keine andere Möglichkeit ... IMHO und meiner Erfahrung nach.
MfG,
EKKi
Grüße,
ich weiss nicht so recht, wie eval() funzt, ist es ein grund zu freude oder trauer?
MFG
bleicher
[latex]Mae govannen![/latex]
Grüße,
ich weiss nicht so recht, wie eval() funzt, ist es ein grund zu freude oder trauer?
If you ever find yourself in a sitiation where you feel you just have to use eval,
give me a call and let me talk you out of it.
(Douglas Crockford, The Javascript Programming Language, Part 3, ca. 15:30min)
Cü,
Kai
Hallo,
Das Risiko ist, dass man eval() benutzt.
Die Aussage ist so unsinnig wie »Das Risiko ist, dass man JavaScript benutzt«.
Täte man das nicht, gäbe es prinzipiell nicht die Möglichkeit, (ungeprüft) Code von dritter Stelle - egal ob eigener Server oder nicht, ob vertrauenswürdig oder nicht - auszuführen.
Wie gesagt - das script-Element bietet diese Möglichkeit »prinzipiell« auch. Das ist noch lange kein Grunde, gegen das script-Element an sich zu agitieren. Solange ich vertrauenswürdige Scripte von meinem Server einbinde, besteht kein Problem. Man denke nur an JSON: Es ist derzeit ohne native sichere JSON-Implementierungen Unsinn, JSON vom eigenen Server nicht mit eval() auszuführen. Für die Sicherheit muss dann die Serverseite sorgen.
Ich wollte damit darauf hinweisen, dass man eigentlich immer versuchen sollte, ohne eval() auszukommen.
Um strukturierte Daten zu übertragen, gibt es im Grunde nur JSON, und selbst sicheres JSON-Parsing verwendet schließlich eval().
Mathias
Hallo,
hats geholfen?
Ich weiss es noch nicht :-) ich muss jetzt mal schauen wie ich das verbauen muss wie gesagt keine ahnung von JavaScript / AJAX
werde da mal versuchen was zu schaffen
dennoch vielen dank fürs erste zur not melde ich mich erneut :-)
Gruss Armin
Hallo,
ich habe mich jetzt die ganze zeit damit beschäftigt und verstehe es nicht :-)
SRY
Gibt es die möglichkeit das mir einer das Java Skript so baut das das Java Skript alle 30 Sekunden die Ausgabe von der datei pruefen.php anzeigt und in einen <span><span> wieder Dynamisch anzeigt ?
bsp PHP
<?php
$test = rand(0,5);
switch ($test) {
case 0: echo "Die Zahl ist die 0"; break;
case 1: echo "Die Zahl ist die 1"; break;
case 2: echo "Die Zahl ist die 2"; break;
case 3: echo "Die Zahl ist die 3"; break;
case 4: echo "Die Zahl ist die 4"; break;
case 5: echo "Die Zahl ist die 5"; break;
}
?>
Und alle 30 Sekunden Soll das JavaSkript die neue Anzeige der .php datei anzeigen.
Gruss Armin