HTML Datei unsichtbar laden

VIPbanner_de

www.VIPbanner.de
ID: 72674
L
1 Mai 2006
2.598
150
hallo miteinander. Ich habe folgendes Problem.. Ich habe ein Script was meine User sich auf Ihrer Seite einbauen, welches eine Grafik läd.

Jetzt wollte ich da noch einen counter dran hängen der anzeigt wieviele User die Grafik gerade anschauen. Das Problem ist das die größe der Ausgabe nicht verändert werdn darf. Ansonsten hätte ich das ganz einfach mit einem 1 pixel iframe gelöst. Jetzt ist die Frage: kann ich eine Datei unsichtbar mitladen, ohne das sich die Größe der Ausgabe auf der Userpage verändert?

Gibts ne Möglichkeit das irgendwie "hidden" einzufügen oder so?

P.S: Ausgabe erfolgt in HTML (Kein PHP) im Body einer Seite
 
ja aber hier muss auch ein header definiert sein. in diesem fall der syle.. und das geht nicht. Ich habe nur den Body zur Verfügung, da das ganze extern (nicht auf meinem Space) aufgerufen wird und ich auf den header keinen Einfluss hab
 
Der Style muss ja nicht unbedingt generell im Header gesetzt werden, du kannst ja einzelnen Tags styles verpassen (z.B. <a href="..." style="...">)
 
ok stimmt.. aber wie mache ich es am schlausten mit einer datei.. is ja nicht nur ein text...

also user baut java Script ein und das script erzeugt folgendes:

Code:
<table width="100" border="0" cellspacing="0" cellpadding="0" height="100">
<tr><td><a href="<-siteurl->" target="_blank"><img src="<-Grafik->" width="<-width->" height="<-height->" border="0" alt="<-sitetitel->"></a></td></tr>
</table>

Da möchte ich jetzt die counter.html einfügen(unsichtbar und ohne die größe der Tabelle zu verändern). Damit möchte ich bezwecken das ich immer weiß wieviele das script grade aktiv haben
 
Wie genau meinst du das mit "counter.html" einfügen? Wie einfügen?
Und was ist in der Counter.html? (und jetzt sag nicht, ein Counter :ugly: )
 
Wie genau meinst du das mit "counter.html" einfügen? Wie einfügen?
Und was ist in der Counter.html? (und jetzt sag nicht, ein Counter :ugly: )

ganz easy... Das Script ruft auf externen Seiten eine Grafik auf. Die Counter.html ist (man glaubt es kaum *gg*) ein Counter. in dieser Datei läuft ein ajax script welches zählen soll wieviele User sich gleichzeitig (live) das Bild anschauen. Ich hab nur keine Ahnung wie ich das so umsetzen kann, das sich dadurch das vorgegebene Format (Pixel) nicht verändert. Brauch jetzt also keiner den Vorschlag machen das als iframe einzufügen.. weil da muss ich ja ne mindestgröße von 1 pixel haben.. das wäre aber 1 pixel zuviel :)
 
Werden beide Seiten von Dir aus eingebunden? Sprich, lieferst Du das Javascript zum Bildeinfügen und die Counter.html von Deiner Seite aus? Dann verzichte doch auf jegliche Anzeige des Counters und bau den AJAX-Kram in das ausliefernde Skript ein. Wäre die einfachste und sinnvollste Lösung.

Für AJAX 'nen IFrame einbinden zu müssen, wäre ja auch irgendwie etwas sehr am Thema vorbei... ;)
 
das direkte einbinden hab ich probiert.. ging aber leider nicht. Folgender ajax couner-code soll eingefügt werden:


counter.php
PHP:
<?php

/**
 * Wichtig: Daten nicht im Cache ablegen, sonst
 * kommt es speziell im Internet Explorer zu
 * Problemen bei der korrekten Anzeige!
 */
header('Cache-Control: no-cache');

/* Benutzer, die derzeit online sind, in Array ablegen */
$users_online = array();
$users_online = users_online();

/* Aktionen unterscheiden */
switch($_REQUEST['action'])
{
  /* aktuelle Besucher senden */
  case 'show':
    echo "cur|" . $users_online[0] . "|max|" . $users_online[1];
    break;
  
  /* in undefiniertem Zustand "?" senden */  
  default:
    echo "cur|?|max|?";
}


/**
 * \brief Benutzer ermitteln, die derzeit
 * online sind und veraltete Eintraege
 * aus der Counter-Datei entfernen.
 */  
function users_online()
{
  /* Counter-Datei angeben */
  $file_cur = "user_online.txt";
  $file_max = "user_rekord.txt";
  
  /**
   * Timeout eines Benutzers nach 5 Minuten,
   * dieser Wert kann beliebig angepasst werden.
   */
  $min = 5;
  $time = time() - $min * 60;
  
  /**
   * IP des Benutzers ermitteln, um ihn spaeter
   * wieder daran identifizieren zu koennen.
   */
  $current_ip = $_SERVER['REMOTE_ADDR'];

  /* alte Eintraege aus Counter-Datei entfernen */
  if (file_exists($file_cur))
  {
    $lines = file($file_cur);
    
    foreach($lines as $key => $data)
    {
      list($ip, $timest) = explode("|", $data);
      
      if(trim($timest) < $time || trim($ip) == $current_ip)
      {
        unset($lines[$key]);
      }
    }
  }
  
  /* aktuelle Daten eintragen */
  $lines[] = $current_ip . "|" . time() . "\n";
  $save = implode("", $lines);
  $handle = fopen($file_cur, "w");
  fputs($handle, $save);
  fclose($handle);

  /* Anzahl der Nutzer, die aktuell online sind */
  $user = count($lines);
  

  /* Besucherrekord pruefen und ggf. ueberschreiben */
  $handle = fopen($file_max, "r+");
  $counter = fgets($handle, 10);
  if ($user > $counter)
  {
    $counter = $user;
    rewind($handle);
    fwrite($handle, $counter);
  }
  fclose($handle);
  
  /* aktzelle Besucherzahl und Rekord zurueckgeben */
  return array($user, $counter);  
}
  
?>


counter.html:
HTML:
<!--
  AJAX Live Online Counter
  ------------------------
  
  Diese Datei implementiert einen einfachen Counter,
  der anzeigt, wieviele Benutzer sich gerade auf einer
  Seite befinden und wieviele Benutzer maximal zur
  gleichen Zeit online waren.
  
  Dank AJAX erfolgt die Anzeige live, d.h. die Seite
  muss nicht neu geladen werden. Hat ein Benutzer
  die Seite geoeffnet und betritt dann ein zweiter
  Besucher die Seite, so bekommt der erste Besucher
  auch den neuen Betrachter im Counter angezeigt.
  
  Die Aktualisierung erfolgt hier alle 5 Sekunden,
  der Intervall kann aber beliebig angepasst werden.
  
-->
<html>

<head>
  <title>Live Online Counter</title>

  <script type="text/javascript">

    /**
     * \brief Request Objekt erzeugen.
     *
     * \return Request Object
     */
    function createRequestObject()
    {
      var requestObject;
      var browser = navigator.appName;
      
      if (browser == "Microsoft Internet Explorer")
      {
        requestObject = new ActiveXObject("Microsoft.XMLHTTP");
      }
      else
      {
        requestObject = new XMLHttpRequest();
      }
      
      return requestObject;
    }
    
    
    /* Request Objekt erzeugen */
    var http = createRequestObject();
    
    /* alle 5 Sekunden automatisch aktualisieren */
    setInterval("sendRequest(\"show\")", 2000);
    
    /* erste Anfrage schon beim Laden der Seite senden */
    window.onload = sendRequest("show");
    
    
    /**
     * \brief Anfrage an Server senden.
     *
     * \param action auszufuehrende Aktion
     */
    function sendRequest(action)
    {
      http.open('GET', './counter/counter.php?action=' + action);
      http.onreadystatechange = handleResponse;
      http.send(null);       
    }
    
    
    /**
     * \brief Rueckmeldung verarbeiten und
     * aktuellen Counter-Stand anzeigen.
     */
    function handleResponse()
    { 
      /**
       * Zustand des Steuerelements abfragen:
       * - 0: nicht initialisiert (noch kein open)
       * - 1: ladend (noch kein send)
       * - 2: geladen (Request wurde abgesetzt)
       * - 3: interaktiv (Antwort noch nicht komplett uebertragen)
       * - 4: Antwort erfolgt, Anfrage abgeschlossen
       */
      if (http.readyState == 4)
      {
        /* Antwort auslesen */
        var response = http.responseText;
        var update = new Array();
        
        /* Daten in Bestandteile zerlegen */
        if (response.indexOf('|' != -1))
        {
          /* ggf. Umbrueche am Anfang ausfiltern */
          while(response.charAt(0)=='\r' || response.charAt(0)=='\n')
          {
            response = response.slice(1, 99);
          }
          
          /* Elemente in Array ablegen */
          update = response.split('|');
          
          /* Oberflaeche aktualisieren */
          document.getElementById(update[0]).innerHTML = update[1];
          document.getElementById(update[2]).innerHTML = update[3];          
        }
      }
    }

  </script>
</head>

<body>
  <h3>AJAX Live Online Counter</h3>
  <div><span id="cur">?</span> Benutzer sind momentan online</div>
  <div><span id="max">?</span> Benutzer waren maximal online</div>  
</body>

</html>

Soviel mal zum Quellcode des Counters. Die Werte (aktuell und maximum) werden wie man in der php sehen kann in 2 .txt Dateien gespeichert.

Jetzt die Frage wie krieg ich das am besten hin das der Counter im Script aktiv ist. Direktes einfügen hab ich auch schon probiert, geht aber nicht, da das Script im Header ausgeführt werden muss.