DiamondDog84: Script download starten?

Hallo Leute,
ich hab Probleme und zwar möchte ich das nach meinem Script,
die datei datei.rar runtergeladen wird.
Ich hab dazu auch einen Code eingebaut,
nur der funktioniert leider nicht.
Das Script:
<?php
  $datei = fopen("../txt/download/homepage.txt","r+");
  $counterstand = fgets($datei, 10);
  if($counterstand == "")
    {
    $counterstand = 0;
    }
  $counterstand++;
  rewind($datei);
  fwrite($datei, $counterstand);
  fclose($datei);
$file= ..... ;
if(file_exists($file)) {
   header('Content-Type: application/rar');
   header('Content-Length: '.filesize($file));
   header('Content-Disposition: attachment; filename="datei.rar"');
   readfile($file);
}
?>
Hoffe mir kann jemand helfen.
Im kurzen und ganze geht es da drum das,
der Stand in homepage.txt
um 1 erhöt wird und dann,
der download gestartet wird.

  1. Hello,

    Ich hab dazu auch einen Code eingebaut,
    nur der funktioniert leider nicht.

    rot. Ich nehme an, das hilft dir nicht weiter, oder? Siehst du, uns die Beschreibung des Problems auch nicht. Was ist dein Problem? Was tut der Code? Was tut er nicht? Welche Fehlermeldung erhälst du?

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    Konsens ist kein Beweis  --  John Naisbitt
    1. Hey sorry,
      hatte ich voll vergessen.
      Aber hab ne andere Lösunge gefunden.
      Mit Javascript und nem meta damit klappt alles.

      1. Hello,

        Mit Javascript und nem meta damit klappt alles.

        solange du dir bewusst bist, welche Auswirkung das hat: Bei der JavaScript-Lösung fordert der Browser die Daten direkt an, d.h. die Adresse der Datei wird sichtbar und diese muss per HTTP zugreifbar sein. Theoretisch kann ich diese URL hier posten und jeder lädt die Datei ohne dass dein Zähler das merkt. Die readfile-Variante würde zwangsläufig durch den Skript gehen und ermöglicht auch die Ablage der Datei außerhalb des per HTTP erreichbaren Bereichs.

        MfG
        Rouven

        --
        -------------------
        sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
        Eine Bilanz ist wie der Bikini einer Frau. Sie zeigt fast alles, aber verdeckt das Wesentliche  --  Günter Stotz, Regierungsdirektor des baden-württembergischen Wirtschaftsministeriums
        1. Hey ok da hast du wohl recht.
          Und das mit Javascript und meta is auch nicht so einer super Lösung.
          Hier noch mla das Script,
          nach dem der download gestartet werden soll.
          <?php
            $datei = fopen("../txt/download/homepage.txt","r+");
            $counterstand = fgets($datei, 10);
            if($counterstand == "")
              {
              $counterstand = 0;
              }
            $counterstand++;
            rewind($datei);
            fwrite($datei, $counterstand);
            fclose($datei);
          $file= ..... ;
          if(file_exists($file)) {
             header('Content-Type: application/rar');
             header('Content-Length: '.filesize($file));
             header('Content-Disposition: attachment; filename="datei.rar"');
             readfile($file);
          }
          ?>
          Also wenn ich alles nach $file rausnehme dann zählter,
          nur der download startet halt nicht :)
          Habe ich das Script aber so wie oben,
          kommt folgende Fehlermeldung:
          Parse error: syntax error, unexpected '.' in /usr/export/www/vhosts/funnetwork/hosting/diamonddog/download/counter_homepage.php on line 13

          1. Mahlzeit,

            Parse error: syntax error, unexpected '.' in /usr/export/www/vhosts/funnetwork/hosting/diamonddog/download/counter_homepage.php on line 13

            Dann zählen wir doch mal:

            1

            <?php

            2

            $datei = fopen("../txt/download/homepage.txt","r+");

            3

            $counterstand = fgets($datei, 10);

            4

            if($counterstand == "")

            5

            {

            6

            $counterstand = 0;

            7

            }

            8

            $counterstand++;

            9

            rewind($datei);

            10

            fwrite($datei, $counterstand);

            11

            fclose($datei);

            12

            $file= ..... ;

            13

            if(file_exists($file)) {

            Hm - da ist kein Punkt. Aber in der Zeile dadrüber stehen 5 Stück. Ich schätze mal, die hast Du statt der normalen Zuweisung dort stehen. Was steht denn da normalerweise?

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. Gute Frage *gg*
              hab das Script so gefunden
              und kenn mich mit PHP auch nciht so gut aus,
              dachte das müste so sein.
              Hab aber eine leichter Lösung gefunden:
              <?php
                $datei = fopen("../txt/download/homepage.txt","r+");
                $counterstand = fgets($datei, 10);
                if($counterstand == "")
                  {
                  $counterstand = 0;
                  }
                $counterstand++;
                rewind($datei);
                fwrite($datei, $counterstand);
                fclose($datei);
                header("Location: homepage.rar");
              ?>
              Es muß ja nicht überprüft werden ob die Datei vorhanden ist,
              sie soll ja nur als Download aufgerufen werden.
              Trozdem 1000 Dank fürs Helfen.

              1. Mahlzeit,

                Gute Frage *gg*
                hab das Script so gefunden
                und kenn mich mit PHP auch nciht so gut aus,

                OMG ... dann sag das gefälligst gleich zu Anfang - woher sollen die Mitleser denn wissen, dass Du eigentlich überhaupt gar nicht weißt, was Du tust? Ich dachte, da würde irgendwo ein ECHTER Fehler auftreten ... stattdessen hast Du einfach nur nicht funktionierenden Beispielcode kopiert.

                Herr, schmeiß' Hirn vom Himmel!

                MfG,
                EKKi

                --
                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
              2. Hallo,

                das taugt jetzt gar nichts mehr:

                Hab aber eine leichter Lösung gefunden:
                <?php
                  $datei = fopen("../txt/download/homepage.txt","r+");
                  $counterstand = fgets($datei, 10);
                  if($counterstand == "")
                    {
                    $counterstand = 0;
                    }
                  $counterstand++;
                  rewind($datei);
                  fwrite($datei, $counterstand);
                  fclose($datei);
                  header("Location: homepage.rar");
                ?>

                Jetzt wird der URL auf die _Datei_ bekannt gegeben. Das bedeutet also, dass man sie per HTTP direkt anfordern kann. Es findet keine Übersetzung mehr statt.
                Außerdem müssen URLs im Location.Header vollständig sein, also auch das Scheme (z.B. http://) enthalten.

                Der Zähler ist auch Müll so. Die Datei, die den Zählerstand enthält, müsste zur Veränderung auf jeden Fall gesperrt werden. So, wie es jetzt gehandhabt wird, wird es bei mehreren gleichzeitigen Zugriffen auf jeden Fall irgendwann krachen und der Zähler ist korrumpiert.

                Das nur für's Archiv, denn der OP wird wohl kaum wiederkommen ...

                LG
                Chris©