JavaScript-Ausgabe in PHP-Variable schreiben


#1

Hallo,

ich habe gerade ein kleines Problem mit JS und PHP. Ich habe gerade nen kleinen JavaScript für geoIP eingebunden, damit ich die Herkunft des Besuchers ermitteln kann. Wollte das in die PHP-Mail schreiben, die mir zugeschickt werden soll, wenn jemand diese Seite betritt, aber das geht schief. Genauso wie die Stelle in ne Datei zu schreiben.

Hier der Code:

$land = 'Land: <script type="text/javascript">document.write(geoip_country_name());</script><br />'; $region = 'Region: <script type="text/javascript">document.write(geoip_region_name());</script><br />'; $stadt = 'Stadt: <script type="text/javascript">document.write(geoip_city());</script>';
Wie kann ich das am besten lösen? Vielen Dank schon einmal. (:

Gruß, DMan


#2

Aus dem kurzen Codeschnipsel kann man nicht wirklich erkennen woran das Problem liegen könnte.


#3

Wenn ich Datei öffne, wird es ausgefüllt.

Land: Germany Region: «Bundesland» Stadt: «Ort»
Aber wenn ich dann z.B. $land in ner Datei speichern oder in die Mail an mich packen möchte, dann wird bei ersterem der Code in die Datei gepackt und bei Letzterem nur "Land: " angezeigt.

Ich bräuchte irgendwas, mit dem ich ‘(Land: )Germany’ als Inhalt speichern könnte.


#4

verwendung von ajax und php ?!


#5

@netsplit: Gib bitte nicht nur so allgemeine Antworten, auch deine letzte hat mir nicht weitergeholfen.


#6

Dein Beispielcode lässt darauf schließen, dass du offenbar noch nicht verstanden hast, wann und wo PHP abläuft, und wann und wo JavaScript … mach dir das also bitte erst mal klar.


#7

JS ist Clientseitig, PHP ist Serverseitig, das weiß ich. Und deshalb wollte ich wissen, ob es eine Möglichkeit oder eine Funktion gibt, mit der man dieses Problem umgehen kann.


#8

Google mal nach ajax und les erstmal den wiki artikel dann weißt du vll was ich damit meinte…


#9

Die einfache, zugämgliche und barrierefreie Möglichkeit ist, ein Formular anzubieten, wo der Nutzer die Angaben eintragen und bei Bedarf abschicken kann. Das Formular kann man dann mit PHP
auswerten und die email erstellen oder sonstwas damit machen, etwa absoeichern.
Sofern Skriptinterpretation aktiviert ist, kann man das Formular natürlich auch per Skript automatisch ausfüllen. Abschicken sollte der Nutzer das dann aber selber - so mancher möchte vielleicht gar nicht, daß man das so genau lokalisiert - ist die Antwort bei Mobiltelephonen wirklich plausibel? Ordnen die Betreiber der Netzen denen immer ortsabhängige IPs zu?

Eine einfache PHP-Methode ist wohl auch, daß du dir die IP per PHP abspeichern oder zuschicken läßt und du bastelst dir dann daheim auf deinem Rechner ein Skript, welches diese Anfragen an einen Dienst stellt, der der IP einen Ort zuordnet. Gibt etwa auch so ein geoip-Teil für PHP, kannst du auf deinem Rechner ja installieren…


#10

Top Antwort, danke. An die Idee hab ich garnicht gedacht. Ich hoffe, du meintest das ungefähr so:

<script type="text/javascript">
document.getElementById('info1').innerHTML = geoip_country_name();
document.getElementById('info2').innerHTML = geoip_region_name();
document.getElementById('info3').innerHTML = geoip_city();
window.onunload = document.getElementById("info").submit();
</script>

<div style="display:none;"><form id="info" method="POST">
<span id="info1"><input type="text" name="info1" value="Test" /></span><br />
<span id="info2"><input type="text" name="info2" value="Test2" /></span><br />
<span id="info3"><input type="text" name="info3" value="Test3" /></span><br />
<input type="submit" style="color: transparent; background-color: transparent; border-color: transparent; cursor: default;">
</form></div>

IP wird auch festgehalten und das soll geheim übertragen werden. Die Seite enthält vertrauliches Material und deshalb soll jeder Benutzer festgehalten werden.


#11

Vertraulich und internet - naja, das beißt sich irgendwie prinzipiell ;o) - erst recht, wenn man solchen Kram sieht.

Das Skript sendet die Daten ja gegebenenfalls automatisch und das Formular wird gegebenenfalls per CSS sogar vor dem Nutzer verborgen - alles eher unseriös, sicherrlich nicht, was ich meinte ;o)
Zudem hat das Formular nicht einmal ein action-Attribut, um es erfolgreich ohne Skript abzusenden, ist also eher technischer, unzugänglicher Unfug. Da geht dann auch schon jeder Anschein von Vertraulichkeit und Seriösität dahin ;o)

Skript-Experte bin ich ja nicht, aber sollte man die id-Attribute nicht bei den input-Elementen setzen und dann die value-Attribute über das DOM (.setAttribut) manipulieren statt mit diesem dubiosen .innerHTML herumzumurksen? Zudem, wenn man die Leute schon per Skript hintergehen will, ist es da nicht hilfreicher, das ganze Formular rein über das DOM zu erstellen, statt solch eine halbgare Mischung zusammenzubasteln? Und wenn man schon so weit ist, kann man die Leute dann ja auch gleich noch mit AJAX austricksen statt über diesen Umweg. Gewiß hilft das, die Leute wieder dahin zu bringen, JavaScript prinzipiell abgeschaltet zu lassen, besonders auf ‘vertraulichen’ Seiten ;o)


#12

Aber ja, sein Code funktioniert auch nicht :wink: