Ankündigung

Einklappen
Keine Ankündigung bisher.

avatar changer

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • avatar changer

    Hallo,

    folgendes Problem: Ich habe mir ein Script geschrieben, was Avatareadresse aus der Datenbank ausliest und dann immer nen anderen Avatar ausgeben soll. (Halt für Foren)
    Hier erstmal der Code für die Ausgabe:
    Code:
    <?php
    header ("Content-type: image/jpg");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    // HTTP/1.0
    header("Pragma: no-cache");
    // Date in the past
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    // always modified
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-control: private");                          // <= it's magical!!
    
    $im = ImageCreate (90,90);
    
    $id=$_GET['id'];
    if (!empty($id))
    {
    include ("config/config.inc.php");
    $sql="SELECT *
    FROM $tabelle_verbind
    WHERE linkid=$id
    AND aktiv=1
    ORDER BY letzte ASC LIMIT 1";
    $result=mysql_query($sql) or die(mysql_error());
    if (mysql_num_rows($result)==1)
    {
    $row=mysql_fetch_assoc($result);
    $sql2="SELECT * FROM $tabelle_avatar WHERE avaid='$row[avaid]'";
    $result2=mysql_query($sql2) or  die(mysql_error());
    $row2=mysql_fetch_assoc($result2);
    $zeit=time();
    $sql3="UPDATE $tabelle_avatar SET avaviews=avaviews+1 WHERE avaid='$row[avaid]'";
    $sql4="UPDATE $tabelle_seiten SET seitenviews=seitenviews+1 WHERE seitenid=$id";
    $sql5="UPDATE $tabelle_verbind SET letzte=$zeit WHERE id='$row[id]'";
    $result3=mysql_query($sql3) or die(mysql_error());
    $result4=mysql_query($sql4) or die(mysql_error());
    $result5=mysql_query($sql5) or die(mysql_error());
    $url="avatare/".$row2[avaurl];
    }
    else {
    $url=$noturl;
    }
    
    header("LOCATION: $url");
    exit();
    
    
    }
    
    ?>
    So, erstes Probelm: Im PHPBB z.B. wird geprüft, ob das Bild zulässig ist bezüglich der größe. Dabei ist das Teil immer unzulässig. Wie krieg ich das zulässig? (Also, das das Forum erkennt, das die Bildeer nicht größer als 90x90 sind z.B.)

    zweites Problem: In einem anderen Forum kann ich es zwar einblenden, aber es wird immer der gleiche Avatar geladen. Immer der, der als erstes da war. Laut der statistik kommt immer ein anderer, wird nur nciht angezeigt. Liegt wahrscheinlich daran, das es noch im Cache ist, das Bild (Jeder User hat nen anderes. halt das was er zuerst gesehen hat)

    Wie verhinder ich, das es immer das gleiche ist ?

    Ich hoffe ich hab mich verständlich ausgedrückt ?`

    Danke


  • #2
    a: .. die zu Beginn gesaetzt Header sagen mir: Du willst das Bild im Script ausgeben ... dafür sollte man aber besser http://pear.php.net/package/HTTP_Download nutzen .. da muss man sich dann nicht selber um das gehaedere und gecache und was nicht alles kümmern ....

    b: .. am ende schiebst du einen 30x raus ...
    Eine vollständige URL wäre allerdings besser:
    Code:
    $location =
        'http://'.
        $_SERVER['HTTP_HOST'].
        '/'.
        $url;
    
    header('HTTP/1.0 302 Moved Temporarily');
    header('Location: '.$location);

    genrell beissen sich die bdein Ansätze aber schonmal ...

    Kommentar


    • #3
      also so ?
      Code:
      <?php
      
      $id=$_GET['id'];
      if (!empty($id))
      {
      include ("config/config.inc.php");
      $sql="SELECT *
      FROM $tabelle_verbind
      WHERE linkid=$id
      AND aktiv=1
      ORDER BY letzte ASC LIMIT 1";
      $result=mysql_query($sql) or die(mysql_error());
      if (mysql_num_rows($result)==1)
      {
      $row=mysql_fetch_assoc($result);
      $sql2="SELECT * FROM $tabelle_avatar WHERE avaid='$row[avaid]'";
      $result2=mysql_query($sql2) or  die(mysql_error());
      $row2=mysql_fetch_assoc($result2);
      $zeit=time();
      $sql3="UPDATE $tabelle_avatar SET avaviews=avaviews+1 WHERE avaid='$row[avaid]'";
      $sql4="UPDATE $tabelle_seiten SET seitenviews=seitenviews+1 WHERE seitenid=$id";
      $sql5="UPDATE $tabelle_verbind SET letzte=$zeit WHERE id='$row[id]'";
      $result3=mysql_query($sql3) or die(mysql_error());
      $result4=mysql_query($sql4) or die(mysql_error());
      $result5=mysql_query($sql5) or die(mysql_error());
      $url="avatare/".$row2[avaurl];
      }
      else {
      $url=$noturl;
      }
      $location =
          'http://'.
          $_SERVER['HTTP_HOST'].
          '/'.
          $url;
      
      header('HTTP/1.0 302 Moved Temporarily');
      header('Location: '.$location);
      exit();
      
      
      }
      
      ?>
      Hm,

      b) bringt nichts kommt immer noch, das Format ist nicht zulässig. Dafür wird jetzt in dem Forum wo sonst immer das gleiche angezeigt wurde gar nichts mehr angezeigt...

      a) hm, habs mir mal angeguckt. wie benutzt man dieses pear? gibts dazu nen tutorial ? hab ich noch nie gemacht...

      die headersachen hatte ich nur drin um 1. vorzugaukeln das das bild die passende größe hat und 2. versuchen das chachen zu verhindern. hat aber nciht geklappt gehabt...

      Kommentar


      • #4
        noch jemand ne Idee ? Oder bin ich nur zu blöd? Bitte, helft mir

        Kommentar

        Lädt...
        X