• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Javascript mit PHP-Aufruf

Status
Für weitere Antworten geschlossen.

theglen

Neues Mitglied
Hallo

Ich möchte gerne in einem Javascript die Herkunft eines Webbesuchers ermitteln und stehe komplett an. Meine Webseite besteht komplett aus HTM-files, bisher verwende ich darin nichts Serverseitiges.

Derzeit habe ich z.B. eine PHP Funktion 'Findcountry' in einem PHP-File auf meinem Server gebastelt, welche mir anhand der IP des Besuchers das Länderkürzel (z.B. CH für die Schweiz) als Text zurückgibt. Anhand dieses Wertes möchte ich dann im Javascript einen anderen Inhalt darstellen als wenn der Benutzer z.B. aus Deutschland oder sonstwoher kommt.

Im Prinzip sähe die Funktion dann wie folgt aus:

Code:
<script type="text/javascript">
 
var $country= [B]AUFRUFDERPHPFunktion[/B];
if ($country = 'CH') {
document.write('Hallo Schweiz');
} else if ($country = 'DE' {
document.write('Hallo Deutschland');
} else {
document.write('Hallo Du aus Sonstwoher');
}
 
</script>


Wie binde ich das Ergebnis dieses PHP-Aufrufs in Javascript Wie komme ich an diesen Wert heran? Oder habe ich den komplett falschen Ansatz gewählt? (muss zugeben, bin ein JS-Newbie)

Besten Dank für die Unterstützung!
 
Werbung:
google mal nach ajax, das ist das was du brauchst.

schon mal interessant,besten Dank! aber ich bräuchte eine kitzekleine starthilfe, quasi ein anschieben, dummybeispiel z.B. es gibt im internet soo viele beispiele, und keines ist ähnlich wie das was ich möchte...

Ich müsste ein Request machen auf die Funktion "findcountry" im File "country.php", welches sich im gleichen Ordner befindet wie das HTML-File, in dem das Javascript läuft, den Rückgabewert dann z.B. der Variable "$strLand" zuweisen. Ich komm nicht dahinter... :???:
 
Werbung:
also als erstes solltest du deine country.php so umschreiben, dass, wenn man die country.php aufruft, sofort die Funktion ausgeführt wird, und das Land zurückgegeben wird, also z.b. so:
country.php
PHP:
function country() {
  //Hier steht deine Country funktion
  //angenommen in $strLand steht das ermittelte Land solltest du 
  //falls noch nicht vorhanden, am Ende ein
  return $strLand;
  //schreiben
}
//jetzt fügst du einfach unten was hinzu:
echo country();
Beim aufruf der country.php im Browser sollte jetzt sofort das Land dort stehen
Jetzt kannst du die Seite mit Ajax abfragen.
Code:
<script>
function getXMLObject() { 
  xmlHttp = false
  //XMLHttpRequest-Instanz erstellen
  //... für Internet Explorer
  try {
    xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
  } catch(e) {
    try {
      xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    catch(e) {
      xmlHttp  = false;
    }
  }
  //... für Mozilla, Opera, Safari usw.
  if (!xmlHttp  && typeof XMLHttpRequest != 'undefined') {
    xmlHttp = new XMLHttpRequest();
  }
}
var xmlHttp = false
var thecountry = ""
//Funktion für deinen aufruf
countryfinder() {
  xmlHttp = getXMLObject()
  xmlHttp.open("GET","country.php", true)
  xmlHttp.onreadystatechange = function() {
    if (xmlHttp.readyState == 4) {
      thecountry = xmlHttp.responseText;
      alert(thecountry)
    }
  }
}
</script>
 
besten Dank für die Rückmeldung Frankie.

Hatte zwar noch einige Hunde in deinem Code vergraben, aber es hat mich auf die richtige Spur geführt! Thanks!

Gruss,
Glen
 
jetzt habe ich doch noch eine frage dazu.
technisch funktioniert das ding meiner meinung nach.

wie kann ich dies nun testen? da ich in der schweiz zu hause bin, zeigt es mir immer den schweizer text an. der deutsche ist gleich wie der schweizer text. wie kann ich testen, ob nun in England oder der USA der richtige text angezeigt wird?

gibt es eine art wunder web-preview dienst, bei dem von anderer IP die Seite geladen wird, um solche sachen zu testen?
 
Werbung:
wenn du schon ein php script verwendest, wieso machst du das dann nicht über php ?

PHP:
<?PHP

$ip = $REMOTE_ADDR;

$file = file("http://www.db.ripe.net/whois?query=".$ip."&.submit=");

foreach($file as $element)
{
    if(stristr($element,"country:"))
    {
        echo $element;
        break;
    }
}
?>
 
Werbung:
wenn du schon ein php script verwendest, wieso machst du das dann nicht über php ?

PHP:
<?PHP
 
$ip = $REMOTE_ADDR;
 
$file = file("http://www.db.ripe.net/whois?query=".$ip."&.submit=");
 
foreach($file as $element)
{
    if(stristr($element,"country:"))
    {
        echo $element;
        break;
    }
}
?>


Hallo Sysop.
Für meine Seite verwende ich ein eigens kreiertes "Mini-CMS". Ich setze damit dynamisch ein HTML-File zusammen. Ein kompletter Umbau meiner Seite auf PHP wäre zwar möglich, aber viel zu aufwändig für das, wofür ich es derzeit einsetze.

ps: Als ich das AJAX-Ding gebastelt habe, sagte ich mir auch "Am saubersten wäre eigentlich, das ganze direkt in php zu machen..."
 
Könntest du uns einmal deine Webseite verraten?

werde ich bald tun, versprochen.
bevor ich es tue, möchte ich aber noch einen teil der logik, welcher derzeit noch fälschlicherweise im javascript ist, ins php zu "moven"... :mrgreen:

den einsatz kann ich ja schon verraten.
ich habe eine englischsprachige webseite zu einem thema. darin beschreibe ich u.A. auch bücher und zeige da direktlinks zu kaufen der bücher an (buchhändler fängt mit a an und hört mit mazon auf) auf.
problem: meine besucher sind im moment ca. 30% aus USA, 20 % aus Grossbritannien, 45 % aus aus restlichem Europa) und 5 % Rest der Welt.
Wenn ich nun xyz.com werbung anzeige und ein engländer klickt drauf, dann bestellt er das buch danach nicht dort, sondern wechselt manuell auf xyz.co.uk und ich bekomme keine verkaufsprovision.
die funktion setze ich nun ein, um xyz.de, xyz.co.uk oder xyz.com werbung anzuzeigen, je nach dem, woher mein besucher kommt!
mit dem aufwand, den ich in dieses script und php gesteckt habe, werde ich dank den werbeeinnahmen auf einen stundenlohn von ca. 25 Cents kommen... :roll:
 
....
Derzeit habe ich z.B. eine PHP Funktion 'Findcountry' in einem PHP-File auf meinem Server gebastelt, welche mir anhand der IP des Besuchers das Länderkürzel (z.B. CH für die Schweiz) als Text zurückgibt. ...

dem entnehme ich, dass du ja schon php-code am laufen hast. nun ist es eigentlich gerade mit php ein leichtes, auf grund des ländercodes (ch, at, us etc.) eine ersetzung mit php zu machen. alles was du brauchst ist eine tabelle oder ein csv-file, in dem die kürzel und die zugehörige länderbezeichnung liegen. man könnte dort z.b. auch gleich in der landessprache grüssen oder so.

alles andere (ajax, javascript etc) würde ich schon deshalb vermeiden, da javascript doch in vielen firmen standardmässig deaktiviert ist, deine funktion also dort nicht funktionieren wird.
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
dem entnehme ich, dass du ja schon php-code am laufen hast. nun ist es eigentlich gerade mit php ein leichtes, auf grund des ländercodes (ch, at, us etc.) eine ersetzung mit php zu machen. alles was du brauchst ist eine tabelle oder ein csv-file, in dem die kürzel und die zugehörige länderbezeichnung liegen. man könnte dort z.b. auch gleich in der landessprache grüssen oder so.

alles andere (ajax, javascript etc) würde ich schon deshalb vermeiden, da javascript doch in vielen firmen standardmässig deaktiviert ist, deine funktion also dort nicht funktionieren wird.

- vorher hatte ich noch kein php, nein. alles mit html-files gelöst, welche ich (wie erwähnt) mit einem lokalen CMS-Tool bequem erstellen kann.
- php habe ich genau dafür genommen, um zu ermitteln, woher ein user kommt, genau das mache ich mit einem csv file auf dem server.
- da aber das ganze "frontend" nur HTML ist, musste ich irgendeinen weg finden, die php-funktion, welches mir das länderkürzel zurückgibt, aus dem html aufzurufen. => ein kompletter umbau auf php wäre für mich zu aufwändig
- die seite richtet sich an private nutzer. falls jemand doch im geschäft auf meine seite geht und javascript deaktiviert hat, weiche ich auf <noscript> aus... (da kommt halt die xyz.com werbung...)

link folgt, sobald ich das script "gesäubert" habe. :grin:
 
wie versprochen poste ich nun den link einer seite, bei der dies zum Einsatz kommt:

Harrington on Hold'em Volume 1, Dan Harrington & Bill Robertie swiss-holdem-poker.com
wer in deutschland sitzt, sollte links eine amazon.de werbung sehen.
wer in england sitzt, eine amazon.co.uk werbung
wer in der schweiz oder liechtenstein surft, eine amazon.de..
usw...
der aufruf hier ist nur hoh1();

das javascript findest du hier:
http://www.swiss-holdem-poker.com/amazon.js

php-inhalt (welche länder gehören zu welchem land) verrate ich natürlich nicht...

besten Dank noch an alle Mithelfer.
Werde mich bald an die Arbeit machen, um auch die anderen Buchseiten so anzupassen...
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben