mmofacts.com

PHP das JS versteht?

gepostet vor 18 Jahre, 9 Monate von Macavity
Hiho,
ich suche grade nach einer einfachen Möglichkeit variablen aus Javascript-Dateien in php einzulesen.
Also in der js-Datei könnte dann etwa so aussehen:

// lustiger kommentar...

var text = "hallo du da.";

und ich suche eine php script das mir jetzt zb eine $js['text'] Variable mit "hallo du da." füllt...

hat jemand zufällig irgendwo so was rumliegen?
gepostet vor 18 Jahre, 9 Monate von Kampfhoernchen
Riecht für mich nach ner RegEx.
Guckst du am besten hier:
www.regenechsen.de
gepostet vor 18 Jahre, 9 Monate von Krisch
Äh, du willst aber schon nur die Zuweisung aus der Datei und nicht den Variablenwert zur Laufzeit, oder?
gepostet vor 18 Jahre, 9 Monate von Macavity
Äh, du willst aber schon nur die Zuweisung aus der Datei und nicht den Variablenwert zur Laufzeit, oder?

hä...

ich habe letztlich mehrere JS-Dateien, von denen eine ausgewählt wird, in denen werte wie breite und höhe angegeben sind (zusammen mit einigem anderen zeugs)
und ich suche eine möglichkeit diese Werte in Variablen einzulesen.
gepostet vor 18 Jahre, 9 Monate von Sarge
ich glaube es geht vorallem um die frage _wann_ du sie einlesen willst die hier einigen unklar ist..

Da JS Clientseitig und PHP Serverseitig ausgeführt wird ist dein Ziel mir zumindest unklar.

normalerweise wäre php->js und nicht js->php..

Wenn das Javascript irgendwas berechnet o.ä. mit hilfe des Users so wird dir imho nichts anderes übrig bleiben diese Variablen als ein POST oder GET Request in irgendeiner form abzusetzen und sie dann ganz normal zu verarbeiten wie immer.

Stehen sie fest in deinen JS-Dateien drinnen so könntest du einfach mit php drübergehen und danach suchen&rausschneiden.. (z.b. über die regular expressions o.ä. wie das hörnchen schon gemeint hat) doch da fragt man sich dann nach dem Sinn des ganzen..
gepostet vor 18 Jahre, 9 Monate von Chojin
der sinn des ganzen würde mich jetzt doch brennend interessieren...

geht es darum, dass das javascript dem server irgendwelche informationen über den clientrechner mitteilen soll?
(bildschirmauflösung, browserkennung, lokale uhrzeit)

reg4rds
chojin
gepostet vor 18 Jahre, 9 Monate von Klaus
*hust* Die Browserkennung kann PHP auch alleine herausbekommen.
gepostet vor 18 Jahre, 9 Monate von Macavity
der sinn des ganzen würde mich jetzt doch brennend interessieren...

nun ich habe mehrere js-dateien in denen die "beschreibung" von je einer Karte steht. Und um praktisch die Seite vorzubereiten in der diese Karte zu sehen ist, wäre es am praktischsten diese Werte auslesen zu könne.

regEx war theoretisch schon der richtige Hinweis, ich hatte nur gehofft das es vielleicht eine einfachere mir unbekannte Möglichkeit gibt.
geht es darum, dass das javascript dem server irgendwelche informationen über den clientrechner mitteilen soll?

nein.

Stehen sie fest in deinen JS-Dateien drinnen so könntest du einfach mit php drübergehen und danach suchen&rausschneiden.. (z.b. über die regular expressions o.ä. wie das hörnchen schon gemeint hat) doch da fragt man sich dann nach dem Sinn des ganzen..

habe ich ja nun klar gemacht oder?

die frage lautet also weiterhin: gibt es eine einfachere Möglichkeit als regülare Ausdrücke?
gerade bei vielen Variablen ist das doch sehr unkonform...

ich hatte halt gehofft das es etwas ähnliches alla ini_get() gibt.. oder das jemand schonmal sowas gebraucht hat oder so...
gepostet vor 18 Jahre, 9 Monate von Kallisti
Bau dir eine Include Datei in der du verwaltest was fuer eine JS Datei du einbindest und welche Werte du dann hast (das was du auslesen willst).

Die JS Datei wird ja vom PHP sowieso erst eingebunden, die Informationen sind statisch. Es ist daher absolut sinnlos bzw. unsinnig diese jedesmal einzulesen und zu parsen... Da sollte ein normales include weit performanter sein.
gepostet vor 18 Jahre, 9 Monate von Chojin
Original von Klaus
*hust* Die Browserkennung kann PHP auch alleine herausbekommen.

Mir wäre neu, dass das mit PHP geht. Das zuständige Array wird vom Webserver mit Informationen gefüllt, nicht von PHP.
ergo: Wenn du klugscheißen willst musst du früher aufstehen

Im übrigen ist es durchaus gebräuchlich den browsertypen mit javascript zu identifizieren. Das machen beispielsweise drittanbieter von Webstatistiken häufig so.

Original von Macavity


Original von Chojin

geht es darum, dass das javascript dem server irgendwelche informationen über den clientrechner mitteilen soll?
nein.
Thema erledigt!

-> es macht keinen Sinn was du da vorhast. :roll:
-> lös das ganze mit php und nicht auf der clientseite.

reg4rds
chojin
gepostet vor 18 Jahre, 9 Monate von Macavity
@Chojin
da kann ich dir nicht zustimmen, es macht weit mehr Sinn meine Idee über JS zu realisieren da es mit PHP erfordern würde das jeder Schritt das die gesamte Seite neugeladen wird was alles andere als performant ist.

Im übrigen habe ich mich an die erste Antwort gehalten und das ganze mit regulären Ausdrücken gelöst. Es funktioniert, prima.

Nur warum wehren einige von euch so vehement gegen js? Keine Frage ist PHP mächtiger aber deswegen darf es doch trotzdem manchmal sinnvoller sein was anderes einzusetzen oder nicht?
gepostet vor 18 Jahre, 9 Monate von knalli
Bleibt eigentlich nur Ajax übrig..
gepostet vor 18 Jahre, 9 Monate von Kallisti
Es wehrt sich ja auch niemand direkt gegen JS (auch wenn ich der Meinung bin, dass eine Webseite auch ohne Js benutzbar sein sollte und JS das Verhalten nur verfeinert).

Nur ist es sinnlos Javascript mit php zu parsen... weil das in Sachen performance einfach voellig unsinnig ist, statischen Content parsen zu wollen.

Vielleicht solltest du dein exaktes Problem beschreiben, anstatt DEINEN Versuch es zu loesen...
gepostet vor 18 Jahre, 9 Monate von Macavity
-.- ich habe mein exaktes Problem doch nun schon mehrfach beschrieben...nochmal?

Nur ist es sinnlos Javascript mit php zu parsen... weil das in Sachen performance einfach voellig unsinnig ist, statischen Content parsen zu wollen.

wieso? wenn ich mich halt entschieden habe (weil es nach meiner ansicht besser ist) Daten in einer JS-Datei zu speichern. Dann hat das doch sinn. und wenn es nicht mal viel aufwand macht Php dazu zubringen das auch noch zu verstehen. wunderbar geht doch.
gepostet vor 18 Jahre, 9 Monate von Kallisti
Nein, du hast dein exaktes Problem NICHT EINMAL beschrieben. Du hast lediglich deine HERANGEHENSWEISE beschrieben.

Es KANN nicht besser sein eine Datei erst parsen zu muessen, wenn du die Daten sowieso statisch speicherst. Das ist doch totaler Unsinn?!

Da kannst du besser die Javascripts generieren und zentral mit einem include verwalten oder die statischen Javascripts + eine Verwaltungsdatei nutzen...

Das hat nichts mit "Ansicht" zu tun, es ist einfach Fakt, dass das Parsen einer Textdatei unperformant sein MUSS. Und es ist nun einmal absoluter Unsinn solch einen Overhead zu generieren, wenn es vollkommen ueberfluessig ist.

Es hat keinen Vorteil, nur Nachteile - wieso sollte man es dann so machen?
gepostet vor 18 Jahre, 9 Monate von Sarge
Hier hat sicher niemand etwas gegen JS und ich schätze so ziemlich jeder hier setzt es mehr oder weniger gezielt ein. Allerdings ist JS nur für die client-seite geeignet. Du solltest damit auch keine relevanten Berechnungen ausführen da diese ohne größeren Aufwand durch den Benutzer manipuliert werden.

Du versuchst das Problem deines Lösungsansatzes eines uns unbekannten Problems zu lösen (bzw hast es nun mit Regexp gelöst) ... allerdings solltest du eine ebene tiefer gehen und das Problem an der Wurzel packen und somit wird dein Lösungsansatz hinfällig werden, denn dieser ist so ein sehr unperfomanter "work-around".
Und wenn du Hilfe dazu willst, so müsstest du erst einmal das eigentliche Problem schildern (nicht das Problem deines Lösungsansatzes )

Wir können leider noch nicht hellsehen

Aber ich versuch es trotzdem einmal ^^ ...

Wenn diese Werte in deinen JS's wirklich statisch sind so wäre es z.b. wesentlich perfomanter du speicherst diese seperat nocheinmal in eine extra Datei und diese liest du in php als Array ein. Somit würde das ganze nach var parsen wegfallen und du unmengen an performance sparen.

Reine Vermutung da wir das eigentliche Problem nicht kennen.
gepostet vor 18 Jahre, 9 Monate von gorgo
Original von Chojin
Original von Klaus
*hust* Die Browserkennung kann PHP auch alleine herausbekommen.

Mir wäre neu, dass das mit PHP geht. Das zuständige Array wird vom Webserver mit Informationen gefüllt, nicht von PHP.
ergo: Wenn du klugscheißen willst musst du früher aufstehen



Technisch vieleicht Korrekt, aber argumentationstechnisch (im Zusammenhang) wäre mir das bissl Peinlich. Man muss ja nicht immer Recht haben wollen
gepostet vor 18 Jahre, 9 Monate von Chojin
Na wer bist du den?
Also "argumentationstechnisch" muss ich mich sicher nicht verstecken.
Wenn dir hingegen ein Beitrag in diesem Forum peinlich ist, dann würde ich an deiner statt nicht weiterschreiben...

Nur weil du die selbstironie in dem zitierten beitrag nicht gefunden hast, ist sie trozdem vorhanden. Meine motivation dabei war lediglich, dass der beitrag von Klaus nicht "im zusammenhang" mit dem rest der unterhaltung stand. :roll:

reg4rds
chojin
gepostet vor 18 Jahre, 9 Monate von gorgo
lies PN. Ich hoff ohne Publikum hast du dein Klassenclown Gen unter Kontrolle
gepostet vor 18 Jahre, 9 Monate von woodworker
choin ich find die lösugn immer noch doof

aber http://aurore.net/projects/php-js/
php-js is an experimental PHP extension which embeds Mozilla SpiderMonkey into PHP.
Just use js_eval to evaluate your JavaScript. js_eval returns the value returned by the JavaScript interpreter to PHP.
gepostet vor 18 Jahre, 9 Monate von Chojin
Schön dass du die Lösung doof findest, ich find sie selber auch doof, weil Javascript sich nicht wirklich als Template-dateiformat eignet. Naja je nachdem wie oft die Dateien von Änderungen betroffen sind wird man füher oder später diesen Lösungsansatz verfluchen.
Also wenn eine Map nur einmal aufgesetzt wird und dann für immer so bleibt spricht auch nichts dagegen ein JS file zu haben und zusätzlich ein PHP file das für nur diese Map die Abläufe steuert.

Ist aber nebenbei auch garnicht mein Topic. Hab mich nur zuletzt zu dem unqualifizierten kommentar von Gogo geäußert.

Cool das wir nochmal zum thema zurückkommen.
reg4rds
chojin
gepostet vor 18 Jahre, 9 Monate von gorgo
schreib mir doch ne pm wenn dich ärgerst .. weil es sonst echt keinen interessiert.

-------------------------
Das nächste mal kannst du direkt ne PM benutzen...Betrachte dich als verwarnt.

By Riston

P.S. Massenqotes bringen keinem was...

edit by Gorgo:

ach du dicke !
Wie wärs mit einer vernünftigen nachvollziebahren Begründung ?
So bin ich ja im Moment ja nicht in der Lage zukünftiges Fehlverhalten zu unterlassen ...und ich will das ja um Gotteswillen vermeiden.


Also was hat denn Mister Riston so erzürnt ?

Frag net so dümmlich, du weißt es genau, und ich stehe voll hinter Ristons Entscheidung. Ich wollte es genauso machen, nur war ein ein bisserl schneller.

EDIT BY Kampfheornchen

P.S. Massenqotes bringen keinem was...

Sorry ich seh als Grund bislang nur irgendwie persöhnliche Abneigung. Und die Begründung Massenquotes ist ja bissl sehr an den Haaren herbeigezogen. Da müsstet ihr gleichmal den folgetext verwarnen.

Also selbst wenn ihr das hier alles in eurer Freizeit macht und natürlich die MACHT des Adminmodus mit euch ist, so wäre es nicht schlecht mal genauer zu definieren gegen welche geschriebene oder ungeschriebene Regel ich verstoßen hab.
gepostet vor 18 Jahre, 9 Monate von Macavity
Original von Kallisti
Nein, du hast dein exaktes Problem NICHT EINMAL beschrieben. Du hast lediglich deine HERANGEHENSWEISE beschrieben.

Es KANN nicht besser sein eine Datei erst parsen zu muessen, wenn du die Daten sowieso statisch speicherst. Das ist doch totaler Unsinn?!

Da kannst du besser die Javascripts generieren und zentral mit einem include verwalten oder die statischen Javascripts + eine Verwaltungsdatei nutzen...

Das hat nichts mit "Ansicht" zu tun, es ist einfach Fakt, dass das Parsen einer Textdatei unperformant sein MUSS. Und es ist nun einmal absoluter Unsinn solch einen Overhead zu generieren, wenn es vollkommen ueberfluessig ist.

Es hat keinen Vorteil, nur Nachteile - wieso sollte man es dann so machen?


gut dann nochmal..kann sein das ich nur das halbe problem beschrieben habe..

wiir haben also diverse karten-dateien in js. und wir haben eine map.php die die seite vorbereitet.
also header und footer einfügt, session verwaltet etc etc...was man halt so braucht in einer seite...
vorher war es dann so dass wenn die seite geladen ist ein JScript aufgerufen wurde das aus der interessanten karten-datei die infos über die karte bekommt um eine tabelle aufzubauen, die dann die karte darstellt.

nun dachte ich mir das es sinnvoller wäre wenn die Tabelle schon mal von php generiert wird, da ich dachte das wäre wohl schneller als wenn die Tabelle komplett in JS gebaut wird. nun musste also ein PHP-Script das die ersten 4 Zeilen dieser JS-Karten-Dateien ausliest und versteht.
weil eben in den ersten 4 zeilen die breite und höhe der Karte stehen die die Basis der enstehenden Tabelle bilden.

Hoffe ich habe es einigermaßen erklären können. O_o
gepostet vor 18 Jahre, 9 Monate von Kallisti
Jo und dann ist genau was ich sagte der Fall: Bau dir z.B. eine weitere php datei oder ein paar Zeilen in deiner aktuellen, die nichts beinhalten als eine Zuordnung von Scriptname / Groessenangaben. Klar mag dein Weg funktionieren, aber er ist sicher nicht effizient. Wenn die Angaben sowieso statisch sind, kannst du sie auch statisch im php speichern und musst nicht extra eine andere Datei parsen.

u.U. kannst du es auch so dynamisch machen, dass du mit php angepasste Javascripts generierst (nur moeglicherweise nicht so effizient wegen des caches), oder den fertigen Javascripts nur ein paar Variablen mitgibst...
gepostet vor 18 Jahre, 9 Monate von Macavity
das mit dem php das JS generiert war meine erste Idee hat sich aber als unpraktisch und stark rechenaufwändig erwiesen.

das problem wenn ich die ergebnisse in einer Include speicher, dann muss ich halt immer prüfen wann die js-datei das letzte mal verändert oder erstellt wurde, um sicherzustellen das die include auch aktuell ist.
Denn die Karte kann sich durchaus immer mal wieder ändern.

Geht das? so eine Veränderungsdatum überprüfung? müsste eigentlich.. bin mir nur grad nicht schlüssig.

aber ehrlich gesagt bin ich mir nicht sicher ob das so den großen unterschied macht, letztlich les ich ja keine 50 Zeilen aus sondern nur popplige 4.. ist jetzt nicht grade rechenintensiv..
gepostet vor 18 Jahre, 9 Monate von Kallisti
http://de2.php.net/manual/en/function.filemtime.php

Aber eigentlich musst du nur an der Stelle an der die Javascripts auch veraendert werden, das include mit updaten...

Ist mit Sicherheit performanter als mehrere Zeilen einer Datei auszulesen und zu parsen...
gepostet vor 18 Jahre, 9 Monate von Macavity
aber das lohnt sich doch nicht...dann habe ich ja noch eine datei auf dem server rumliegen...wegen 4 poppligen werten.... das hört sich für mich nach einer sehr unnötigen aktion an...
gepostet vor 18 Jahre, 9 Monate von Kallisti
Original von Macavity
aber das lohnt sich doch nicht...dann habe ich ja noch eine datei auf dem server rumliegen...wegen 4 poppligen werten.... das hört sich für mich nach einer sehr unnötigen aktion an...


Eine Datei tut dem Server nicht weh, aber bei jeder Anfrage manuell eine Datei auslesen und parsen, das tut weh.
gepostet vor 18 Jahre, 9 Monate von Macavity
klar eine datei nicht aber ich bräuchte dann ja soviele dateien wie maps. was dann schon einige wären. vor allem weil die gleiche info dann ja doppelt in separaten dateien gespeichert ist... fällt dir nicht auf das das "etwas" seltsam ist?
gepostet vor 18 Jahre, 9 Monate von Kallisti
???!

Faellt mir nix mehr zu ein ^^



// javascript block rohbau oeberhalb

switch(intval($_GET['mapid']))
{
case 1: $x = 100; $y=200; break;
case 2: $x = 250; $y=400; break;
default: $x = 23; $y= 42;
}

echo 'var x = ',$x,'; var y = ',$y,';';

// die generischen Kartenfuntionen

?>

oder per html javascript einbinden, wenn die verschiedenen Karten sich in mehr als wenigen Daten unterscheiden ... $path.'map'.intval($_GET['mapid']).'.js'... dann musst du natuerlich die Koordinaten bzw. alle daten, die du im php haben willst, doppelt verwalten.
gepostet vor 18 Jahre, 9 Monate von Macavity
na gut ich denke die diskussion ist vorbei...

Auf diese Diskussion antworten