javascript-variable in php verwenden
elke61
- php
Hallo zusammen,
ich möchte in einem von Java-Script geöffnetem Fenster eine php-Datei ausführen und dabei eine mitgegebene Variable verwenden.
Das Java-Script wird mit einem Klick auf das Wort Karte augerufen.
Hier das Javascript:
echo "<script type=\"text/javascript\">\n";
echo "<!--\n";
echo "function aachen(ort){\n";
echo "fenster=\"aachen.php?address=\"+ort+\"\"\n";
echo "window.open(fenster, \"Zweitfenster\", \"width=520, height=420, left=322,top=210,scrollbars=no\")\n";
echo "}\n";
echo "//-->\n";
echo "</SCRIPT>\n\n";
Nun brauche ich für die google maps die Variable address
var address= "<?php echo "$address";?>" ;
So habe ich die Variable zugewiesen, aber das funktioniert nicht mehr.
Ich habe ein Update gemacht und irgendwie funkt es nicht mehr.
Vielleicht habe ich auch die richtige Datei überschrieben .. keine Ahnung.
Gerne poste ich auch die ganze php-Datei, wenn sie benötigt wird.
Kann mir jemand helfen?
viele Grüße
Elke
Mahlzeit elke61,
ich möchte in einem von Java-Script geöffnetem Fenster eine php-Datei ausführen und dabei eine mitgegebene Variable verwenden.
Du möchtest in einem von Javascript geöffneten Fenster das anzeigen lassen, was ein auf dem Server laufendes PHP-Skript als Rückgabe an den Browser liefert und dabei dem PHP-Skript per GET-Parameter einen Wert mitgeben.
Hier das Javascript:
Das ist kein Javascript. Das ist PHP-Code, der Javascript ausgibt. Zitat 1353
Nun brauche ich für die google maps die Variable address
var address= "<?php echo "$address";?>" ;
Wo genau brauchst Du diese Variable? In der Datei, in der Du das Popup öffnest? In der Datei, die im Popup geöffnet wird?
Mit obigem Code kannst Du den Wert der PHP-Variablen $address an eine nahezu gleichnamige Javascript-Variable weiterreichen, so dass dieser Wert auch dem im Browser ablaufenden Javascript zur Verfügung steht. Voraussetzung dafür ist natürlich, dass die PHP-Variable $address überhaupt einen Inhalt hat. Hast Du das überprüft?
So habe ich die Variable zugewiesen, aber das funktioniert nicht mehr.
"Funktioniert nicht" funktioniert nicht. Was genau hast Du wo gemacht? Was genau passiert und was sollte passieren?
Ich habe ein Update gemacht und irgendwie funkt es nicht mehr.
Per PHP funken? Dafür solltest Du dann wohl lieber entsprechend geeignete Hardware benutzen ... ;-)
Vielleicht habe ich auch die richtige Datei überschrieben .. keine Ahnung.
Tja. Und wie kommst Du auf die Idee, dass Deine Leser mehr Ahnung haben, wenn Du so spärlich Informationen preisgibst?
Gerne poste ich auch die ganze php-Datei, wenn sie benötigt wird.
Nein, wird sie nicht. Jedenfalls nicht zur Gänze.
Lass mich raten: Du willst den Wert, der in der HTML-Datei, die das Popup öffnet, in der Javascript-Variable address enthalten ist, an das PHP-Skript, das im Popup geöffnet wird, übergeben?
Das sollte Deine Funktion aachen() tun - gesetzt den Fall, dass Du den entsprechenden Wert als Parameter übergibst.
Im PHP-Skript kannst Du diesen Parameter dann einfach aus dem superglobalen Array $_GET auslesen. Dein Problem ist vermutlich, dass sich Dein Skript auf register_globals verlässt ...
Kann mir jemand helfen?
Du Dir selbst - aber dabei helfen wir gern ... :-)
MfG,
EKKi
Mahlzeit elke61,
Du möchtest in einem von Javascript geöffneten Fenster das anzeigen lassen, was ein auf dem Server laufendes PHP-Skript als Rückgabe an den Browser liefert und dabei dem PHP-Skript per GET-Parameter einen Wert mitgeben.
stimmt
»» Hier das Javascript:
Das ist kein Javascript. Das ist PHP-Code, der Javascript ausgibt. Zitat 1353
ok stimmt auch, dass ist das in die Datei myheader von pragmamx eingebettete Javascript.
Sorry, ich bin leider gar nicht fit in der ganzen Materie.
Ich versuche mich mal ein wenig verständlicher auszudrücken:
Ich habe pragmamx installiert und das modul links umgeändert.
Bei den Links steht bei jedem Eintrag die Ortsangabe, bzw. die Adresse. Diese Adresse soll in einem kleinen Fenster mittels googel map api dargestellt werden, wenn der Besucher auf das Wort Karte unter dem Bild klickt.
Deswegen soll die Adressangabe in die Datei aachen.php (das ist die, die in dem neuen Fenster angezeigt werden soll) eingebracht werden.
Ist das so ein wenig klarer?
Der Übersicht halber gebe ich hier noch einmal die Codefragmente an:
Einmal hier den Schnipsel, der das zum Öffnen des Fensters dient:
echo "<br><a href=\"javascript:aachen('$ort')\"><b> *** Karte *** </b></a>";
Hier nochmals der Teil im php-Script mit dem implementierten Javascript (so halbwegs richtig formuliert?)
echo "<script type=\"text/javascript\">\n";
echo "<!--\n";
echo "function aachen(ort){\n";
echo "fenster=\"aachen.php?address=\"+ort+\"\"\n";
echo "window.open(fenster, \"Zweitfenster\", \"width=520, height=420, left=322,top=210,scrollbars=no\")\n";
echo "}\n";
echo "//-->\n";
echo "</SCRIPT>\n\n";
und hier die Datei des kleinen Fenster mit google maps api ohne den header-Bereich und den Bereich mit den individuellem google-Schlüssel:
var map = null;
var geocoder = null;
var address= "<?php echo "$address";?>" ;
function load() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map"));
map.setCenter(new GLatLng(50.780313, 6.080267), 13);
geocoder = new GClientGeocoder();
showAddress (address);
}
}
function showAddress (address) {
if (geocoder) {
geocoder.getLatLng(
address,
function(point) {
if (!point) {
alert(address + " not found");
} else {
map.setCenter(point, 13);
var marker = new GMarker(point);
map.addOverlay(marker);
//Kontrolle
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
marker.openInfoWindowHtml(address);
}
}
);
}
}
//]]>
</script>
</head>
<body topmargin="0" leftmargin="0" bgcolor="#cccccc" onload="load()" onunload="GUnload()" >
<div id="map" style="width: 500px; height: 400px"></div>
Diese Datei funktioniert, wenn ich hier eine richtige Adresse angebe:
var address= "irgendeine Adresse" ;
Also kann der Fehler nur an der Übergabe der Daten liegen.
Da habe ich einen Fehler drin.
Ich bin jetzt schon seit zwei Wochen am Suchen und am Googeln, aber ich bin leider kein wirklicher Programmierer.
Ich bin schon froh, dass ich das so weit zusammen bekommen habe.
Zum Update: es handelte sich um ein update von dem CMS pragmamx, bzw. eine Neuinstallation. Aber bei der alten Version funktionierte es auch nicht mehr, wie ich feststellen musste. Insofern hilft diese Bemerkung wahrscheinlich nicht bei der Fehlerbehebung.
Da bei uns in letzter Zeit ziemlich viel Probleme waren, habe ich nur nicht mitbekommen, seit wann es nicht mehr funktioniert.
Ich hoffe, jetzt war meine Bitte um Hilfe ein wenig klarer.
viele Grüße
Elke
Hi,
und hier die Datei des kleinen Fenster mit google maps api ohne den header-Bereich und den Bereich mit den individuellem google-Schlüssel:
var map = null;
var geocoder = null;
var address= "<?php echo "$address";?>" ;
Per GET oder POST übergebene Parameter werden heutzutage nicht mehr automatisch von PHP also globale Variablen unter dem Namen des Parameters bereitgestellt, das war früher mal so, wurde aber aus Sicherheitsgründen abgeschafft.
Heute nutzt man die superglobalen Arrays $\_GET/$\_POST dafür, d.h. wenn du das Script über aachen.php?address=xyz aufrufst, dann wird dir der Wert xyz in $\_GET['address'] zur Verfügung gestellt.
Einfach so ins Dokument reinschreiben solltest du den Wert aber trotzdem nicht, das würde eine XSS-Sicherheitslücke öffnen - also wenigstens mit htmlspecialchars behandeln:
`var address= "<?php echo htmlspecialchars($_GET['address']); ?>";`{:.language-php}
Das wird zwar immer noch problematisch, wenn Zeichen übergeben werden, die in einem JavaScript-Stringliteral nicht vorkommen dürfen, wie bspw. ein Zeilenumbruch - aber dann "funktioniert" höchstens dein Script nicht mehr, also weniger tragisch. Wenn du das auch noch beheben willst, überlege selbst, wie das gehen könnte.
MfG ChrisB
--
Light travels faster than sound - that's why most people appear bright until you hear them speak.
Danke!!!!
Es funktioniert!
Hi,
»» und hier die Datei des kleinen Fenster mit google maps api ohne den header-Bereich und den Bereich mit den individuellem google-Schlüssel:
»»
»» ~~~php
var map = null;
»» var geocoder = null;
»» var address= "<?php echo "$address";?>" ;
>
> Per GET oder POST übergebene Parameter werden heutzutage nicht mehr automatisch von PHP also globale Variablen unter dem Namen des Parameters bereitgestellt, das war früher mal so, wurde aber aus Sicherheitsgründen abgeschafft.
ich hab mir so was gedacht, weil es früher so getan hat.
>
> Heute nutzt man die superglobalen Arrays $\_GET/$\_POST dafür, d.h. wenn du das Script über aachen.php?address=xyz aufrufst, dann wird dir der Wert xyz in $\_GET['address'] zur Verfügung gestellt.
>
> Einfach so ins Dokument reinschreiben solltest du den Wert aber trotzdem nicht, das würde eine XSS-Sicherheitslücke öffnen - also wenigstens mit htmlspecialchars behandeln:
>
> `var address= "<?php echo htmlspecialchars($_GET['address']); ?>";`{:.language-php}
>
> Das wird zwar immer noch problematisch, wenn Zeichen übergeben werden, die in einem JavaScript-Stringliteral nicht vorkommen dürfen, wie bspw. ein Zeilenumbruch - aber dann "funktioniert" höchstens dein Script nicht mehr, also weniger tragisch. Wenn du das auch noch beheben willst, überlege selbst, wie das gehen könnte.
Das mit dem Zeilenumbruch ist kein Problem, da ich die Links mit den Adressen eigentlich selber eingebe.
Das mit der Programmierung ist schon ein riesen Gebiet und dann auch noch auf die Sicherheitslücken zu achten! Ich wünschte ich hätte mehr Zeit, mich da richtig rein zu knien.
Aber neben Arbeit, Fernstudium bin ich schon froh, wenn ich die Seite am Laufen halte und halbwegs aktuellen Inhalt bieten kann.
Deswegen ganz, ganz herzlichen Dank!
>
> MfG ChrisB
>
>