php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 30-04-2006, 12:17
Fireball22
 Newbie
Links : Onlinestatus : Fireball22 ist offline
Registriert seit: Apr 2006
Beiträge: 29
Fireball22 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Download bei Aufruf

Hallo,
ich würde gerne selber einen Download-Counter basteln!

Ich habe mir das ganze so gedacht:

Der Download-Link geht direkt auf eine PHP-Datei, diese heißt z. B. treiber.php

Diese Datei öffnet eine Textdatei, und erhöht den Stand dort immer um 1, bei einem Aufruf.

Gleichzeitig muss die PHP-Datei aber automatisch den Download der .zip Datei starten.

Wie ist dieser automatische Download in einer PHP-Datei möglich?

Fireball22
Mit Zitat antworten
  #2 (permalink)  
Alt 30-04-2006, 13:19
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Ein Ansatz wäre dieser hier:
treiber.php
PHP-Code:
<?php
// Counter erhöhen
file_put_contents($logfilefile_get_contents($logfile)+1);
// Download starten
readfile($_GET['file']);
?>
$logfile sollte natürlich den Pfad zur Datei enthalten, in der die Zahl der Downloads festgehalten wird, die gewünschte Datei (der Download) sollte per URL (?file=foobar.txt) übergeben werden und evtl. wäre das Senden von typischen Headern vor readfile() angebracht (Beispiele dazu unter http://php.net/header).
Mit Zitat antworten
  #3 (permalink)  
Alt 30-04-2006, 14:00
Fireball22
 Newbie
Links : Onlinestatus : Fireball22 ist offline
Registriert seit: Apr 2006
Beiträge: 29
Fireball22 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Vielen Dank für deine Hilfe!
Das hier ist ja die Musterlösung, ich hätte das ganz anderst, komplizierter gemacht.

Ich hätte erst mit fopen("anzahl.txt",r+) gearbeitet...

Fireball22
Mit Zitat antworten
  #4 (permalink)  
Alt 30-04-2006, 14:13
Fireball22
 Newbie
Links : Onlinestatus : Fireball22 ist offline
Registriert seit: Apr 2006
Beiträge: 29
Fireball22 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Lokal auf meinem Rechner unter WAMP läuft alles soweit perfekt, aber leider funktioniert folgendes nicht auf dem Webserver, nachdem ich es hochgeladen habe:

PHP-Code:

/* if($_GET['file'] == "fakemailerv1.zip")
    {
    $logfile = "downloads_fakemailerv1.txt";
    }
*/

$logfile "downloads_fakemailerv1.txt";
// Counter erhöhen
file_put_contents($logfilefile_get_contents($logfile)+1);
// Download starten
readfile($_GET['file']); 
URL: http://www.michis-homepage.net/extra...kemailerv1.zip

Der kennt anscheinend nicht mal die Funktion, an was könnte das liegen?
Hat das was mit Register-Globals zu tun?




Zitat:
Fatal error: Call to undefined function: file_put_contents() in /var/www/vhosts/michis-homepage.net/httpdocs/extras/scripting/download.php on line 11
Fireball22
Mit Zitat antworten
  #5 (permalink)  
Alt 30-04-2006, 15:06
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Ein Blick ins Manual hätte dir verraten, dass es diese Funktion erst seit PHP5 gibt.
Bau dir die Funktionen file_*_contents() einfach mit fopen, fread/fwrite und fclose nach. Umgib sie mit
if (!function_exist(...)) {}, damit es bei einem PHP-Update keine Konflikte gibt.
Mit Zitat antworten
  #6 (permalink)  
Alt 30-04-2006, 15:14
Fireball22
 Newbie
Links : Onlinestatus : Fireball22 ist offline
Registriert seit: Apr 2006
Beiträge: 29
Fireball22 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Habe glaub den Fehler gefunden!

Es liegt warscheinlich daran, dass diese Funktion nur von PHP 5 unterstüztzt wird, ich habe aber auf meinem Server 4.3.10 installiert.

Fireball22
Mit Zitat antworten
  #7 (permalink)  
Alt 30-04-2006, 15:15
Fireball22
 Newbie
Links : Onlinestatus : Fireball22 ist offline
Registriert seit: Apr 2006
Beiträge: 29
Fireball22 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hehe, da war wieder "jemand" schneller

Fireball22
Mit Zitat antworten
  #8 (permalink)  
Alt 30-04-2006, 16:56
Fireball22
 Newbie
Links : Onlinestatus : Fireball22 ist offline
Registriert seit: Apr 2006
Beiträge: 29
Fireball22 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So, jetzt läuft soweit alles, so siehts aus:

PHP-Code:
<?php

if(!isset($_GET['file']))
    {
    
header('Location: [/URL]http://www.michis-homepage.net/scripting.php[/url]');
    exit();
    }

if(
$_GET['file'] == "fakemailerv1.zip")
    {
    
$logfile "downloads_fakemailerv1.txt";
    }

// $logfile = "downloads.txt";
// Counter erhöhen
// file_put_contents($logfile, file_get_contents($logfile)+1);
// Download starten


if (function_exist)
{
$datei fopen($logfile,"r+");
$stand fgets($datei,10000);
if(
$stand == "0")
    {
    
$stand 0;
    }

$stand++;
rewind($datei);
fwrite($datei,$stand);
fclose($datei);
}
else
{
// Counter erhöhen
file_put_contents($logfilefile_get_contents($logfile)+1);
}

readfile($_GET['file']);

?>
Läuft alles, nur die Ausgabe gefällt mir nicht so ganz
http://www.michis-homepage.net/extra...kemailerv1.zip

Fireball22
Mit Zitat antworten
  #9 (permalink)  
Alt 30-04-2006, 17:28
Fireball22
 Newbie
Links : Onlinestatus : Fireball22 ist offline
Registriert seit: Apr 2006
Beiträge: 29
Fireball22 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Habe jetzt noch folgendes hinzugefügt und es geht nun:

PHP-Code:
header("Content-Type: application/zip");
header "Content-Length: " filesize($_GET['file']) );
header("Content-Disposition: attachment; filename= \"fakemailerv1.zip\"");
readfile($_GET['file']); 
Aber ist das eigentlich alles richtig, und ist oben auch alles richitg?

Fireball22
Mit Zitat antworten
  #10 (permalink)  
Alt 30-04-2006, 17:45
boris-schneider
 Junior Member
Links : Onlinestatus : boris-schneider ist offline
Registriert seit: Apr 2006
Ort: Hessen/FFM
Beiträge: 208
boris-schneider ist zur Zeit noch ein unbeschriebenes Blatt
boris-schneider eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von Fireball22
Aber ist das eigentlich alles richtig, und ist oben auch alles richitg?
Kauf dir doch bitte mal ein gescheites PHP-Buch oder lese dich mal durch die unzähligen PHP Tutorials im Netz durch anstatt hier bei jeder kleinen änderung zu fragen ob das so richtig ist oder nicht.

Wenn etwas nicht funktioniert ist die warscheinlichkeit groß das etwas nicht stimmt, dann liest man sich kurz durch's manual, probiert etwas herum und sicher funktioniert es dann auch richtig.

Hilfestellung !== Ständig wegen jeder Scheisse den Hintern abgewischt zu bekommen (...sorry..)



Sers
Der Boris
Mit Zitat antworten
  #11 (permalink)  
Alt 30-04-2006, 17:58
Fireball22
 Newbie
Links : Onlinestatus : Fireball22 ist offline
Registriert seit: Apr 2006
Beiträge: 29
Fireball22 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nein, aber es ist genauso, wenn du einen Schüler einen Aufstatz schreiben lässt.
Dieser wird seine Rechtschreibfehler auch nicht selber erkennen.

Bei mir läuft im Moment alles problemlos, aber ich möchte halt trotzdem gerne mal von anderen die Meinung hören, ob man noch was verbessern könnte, ob alle Funktionen gehen und ich evtl. diese nicht nur überschrieben habe, und und und...

Aber wenn alles richitg ist, dann passt das und ich kann mich freuen

Fireball22
Mit Zitat antworten
  #12 (permalink)  
Alt 30-04-2006, 18:13
boris-schneider
 Junior Member
Links : Onlinestatus : boris-schneider ist offline
Registriert seit: Apr 2006
Ort: Hessen/FFM
Beiträge: 208
boris-schneider ist zur Zeit noch ein unbeschriebenes Blatt
boris-schneider eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von Fireball22
Nein, aber es ist genauso, wenn du einen Schüler einen Aufstatz schreiben lässt.
Dieser wird seine Rechtschreibfehler auch nicht selber erkennen.
Wenn er aber in einen Duden schaut sicherlich schon, selbiges kannst du bei PHP im manual machen!

Viele Fragen würden sich einfach erübrigen wenn man etwas recherchiert und die manuals durchblättert, mehr wollte ich damit auch garnicht sagen



Sers
Der Boris
Mit Zitat antworten
  #13 (permalink)  
Alt 30-04-2006, 18:39
Fireball22
 Newbie
Links : Onlinestatus : Fireball22 ist offline
Registriert seit: Apr 2006
Beiträge: 29
Fireball22 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die PHP-Manual kann aber sicherlich nicht sagen ob das alles so Sinn macht und alles soweit passt und keine Sicherheitsrisiken im Script entstehen!

Fireball22
Mit Zitat antworten
  #14 (permalink)  
Alt 30-04-2006, 18:46
boris-schneider
 Junior Member
Links : Onlinestatus : boris-schneider ist offline
Registriert seit: Apr 2006
Ort: Hessen/FFM
Beiträge: 208
boris-schneider ist zur Zeit noch ein unbeschriebenes Blatt
boris-schneider eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von Fireball22
Die PHP-Manual kann aber sicherlich nicht sagen ob das alles so Sinn macht und alles soweit passt und keine Sicherheitsrisiken im Script entstehen!
Wenn dein Beispiel dem beispiel aus dem manual gleicht kannst du sicher sein das es so sinn macht
Was die Sicherheistrisiken angeht hast du dies nicht gefragt, ergo wäre dies eine spezifizierte frage und berechtigt, anders als die anderen

So genug Off-Topic für heute.


Sers
Der Boris
Mit Zitat antworten
  #15 (permalink)  
Alt 30-04-2006, 19:01
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

PHP-Code:
<?php

// was'n das bitte?
if (function_exist) {
    
$datei fopen($logfile,"r+");
    
$stand fgets($datei,10000);
    
// Und das?
    
if ($stand == "0") {
        
$stand 0;
    }
    
$stand++;
    
rewind($datei);
    
fwrite($datei,$stand);
    
fclose($datei);
} else {
    
// Wie jetzt, ich denk die Funktionen gibts bei dir nicht?
    
file_put_contents($logfilefile_get_contents($logfile)+1);
}

// Wenn die Datei im selben Verzeichnis liegt und 
// genauso heißt, wie es der User in der URL sieht,
// ist es für ihn ein leichtes, deinen Counter zu umgehen.
readfile($_GET['file']);

?>
Insgesamt also ziemlicher Murks! Dreh mal dein error-reporting auf scharf!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Software für alle Arten von digitalen Marktplätzen
Software für alle Arten von digitalen MarktplätzenDigitale Marktplätze sind nicht nur im B2C Geschäft seit Jahren etabliert, sondern erfreuen sich mit Kleinanzeigen-Märkten auf lokaler und regionaler Ebene auch im privaten Bereich wachsender Beliebtheit.

09.11.2021 | Berni

Von 0 auf über 2 Mio € Umsatz in weniger als 12 Monaten – wie die Pixelwerker das nur durch SEO geschafft haben
Von 0 auf über 2 Mio € Umsatz in weniger als 12 Monaten – wie die Pixelwerker das nur durch SEO geschafft habenSEO oder SEA? Warum SEO die besserer Methode ist.

01.10.2021 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

09.11.2021 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Newsletter Script SuperWebMailer ansehen PHP Newsletter Script SuperWebMailer

Die webbasierte PHP Newsletter Software SuperWebMailer ist die optimale Lösung zur Durchführung eines erfolgreichen E-Mail-Marketings. Zur Nutzung des PHP Script-Pakets ist eine eigene Webpräsenz/Server mit PHP 5 oder neuer, MySQL 4 oder neuer und die

28.10.2021 mirko_swm | Kategorie: PHP/ Mail
Guestbook Light ansehen Guestbook Light

Das Guestbook Light (kurz: "Gblight") ist ein kinderleichtes Gästebuch in PHP. Durch den Einsatz einer SQLite Datenbank ist es einfach, leicht portabel und schnell. Aufgrund moderner Techniken erfüllt Gblight auch die neuesten Webstandards.

28.10.2021 scripthostingnet | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:32 Uhr.