php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.08.2006, 13:55  
Erfahrener Benutzer
 
Registriert seit: 22.01.2005
Beiträge: 610
Connar befindet sich auf einem aufstrebenden Ast
Standard Downloadscript funktioniert nicht

Ich hab für meine Webseite ein Downloadscript geschrieben, aber irgendwie funktioniert es nicht und ich hab keine Ahnung warum. Vielleicht könnt ihr mir irgendwie helfen.

PHP-Code:
<?php
    $productids 
= array();
    
$sql "SELECT id, fileurl FROM product WHERE price='0.00'";
    
$result mysql_query($sql);
    while(
$row mysql_fetch_array($result)) $productids[] = $row["id"];
    
    if(isset(
$_GET["product"]) && is_numeric($_GET["product"]) && in_array($_GET["product"], $productids))
    {
        
$product intval($_GET["product"]);
        
$sql "SELECT name, version, fileurl FROM product WHERE id=$product";
        
$result mysql_query($sql);
        while(
$row mysql_fetch_array($result))
        {
            if(
file_exists($row["fileurl"]))
            {
                
$fileurl $row["fileurl"];
                
$sql "UPDATE product SET downloads=downloads+1 WHERE id=$product";
                
mysql_query($sql);
                
                if(
ereg("Opera(/| )([0-9].[0-9]{1,2})"$_SERVER["HTTP_USER_AGENT"])) $browser "opera";
                elseif(
ereg("MSIE ([0-9].[0-9]{1,2})"$_SERVER["HTTP_USER_AGENT"])) $browser "ie";
                else 
$browser "";
                
                
$mime_type = ($browser == "ie" || $browser == "opera") ? "application/octetstream" "application/octet-stream";
                
                
$search_string = array("\\""/"":""*""?""\"""<"">""|"" "".");
                
$replace_string = array("""""""""""""""""""_""_");
                
$filename str_replace($search_string$replace_string$row["name"])."_".str_replace($search_string$replace_string$row["version"]).".rar";
                    
                
header("Content-Type: ".$mime_type); 
                
header("Content-Disposition: attachment; filename=\"$filename\""); 
                 
                
readfile($fileurl);
            } else
            {
                
# Fehlermeldung
            
}
        }
    } else
    {
        
# Fehlermeldung
    
}
?>
Das Problem ist nun, dass er die Datei nicht zum Download anbietet, sondern eine lange Reihe von Zeichen ausgibt (in der man ab und an einen Dateinamen lesen kann, der im Archiv drin ist).

Die Datenbankverbindung wird vorher natürlich aufgebaut und die benötigten Werte sind in der Datenbank enthalten (sprich bei der Überprüfung, ob die Datei existiert geht alles klar, etc.).


MFG Connar
Connar ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.08.2006, 14:31  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Ich habe das Gefühl, dass das nur am Browser liegt.
Was passiert, wenn Du statt den Link zu dem Script anzuklicken, auf "Ziel speichern.." gehst?

Deine DB-Abfrage ist übrigens furchtbar ineffizient.
Wenn Du nur das in $_GET['product'] enthaltene Produkt willst, brauchst Du nicht alle aus der DB zu lesen.
Dazu kannst Du einfach die Abfrage leicht abändern:
"... WHERE price='0.00' AND id=$_GET[product]";
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 20.08.2006, 14:46  
Erfahrener Benutzer
 
Registriert seit: 22.01.2005
Beiträge: 610
Connar befindet sich auf einem aufstrebenden Ast
Standard

Der bietet mir ja garnicht die Möglichkeit an ob ich speichern oder öffnen will, sondern gibt einfach im Browser die Zeichenkette aus.

Die DB-Abfrage ist deshalb so, weil mit den Werten noch was anderes gemacht wird, was aber nichts mit diesem Script zu tun hatte und ich es deshalb entfernt hab.


MFG Connar
Connar ist offline  
Alt 29.08.2006, 22:37  
Neuer Benutzer
 
Registriert seit: 04.06.2004
Beiträge: 6
hamlet.ost
Standard

also wenn du noch dran bastelst, ich hab das mal so gemacht:

PHP-Code:
        $basedir "/home/files";
    
$filename sprintf("%s/%s"$basedir$db_array[filepath]);
    
header("Content-Type: application/octet-stream");
    
header("Cache-Control: cache, must-revalidate");    
    
header("Pragma: public");
    
$save_as_name "$db_array[filepath]";
    
header("Content-Disposition: attachment;filename=\"$save_as_name\"");
    
readfile($filename);
    exit; 
und das ganze halt am anfang vor jeder ausgabe von code im head der datei als eigene funktion

warum die überprüfung ob opera oder IE ? ich hab bis jetzt noch kein problem an meiner weise entdeckt.

lg

hamlet
hamlet.ost ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Datenbankeintrag funktioniert nicht phrain PHP Tipps 2008 13 03.04.2008 12:59
Session funktioniert nicht bei session.use_cookies = Off Quagga PHP Tipps 2007 13 13.01.2007 18:27
Lokal funktioniert alles -> auf Server fast nichts PsychoEagle Datenbanken 2 14.08.2006 08:43
[Erledigt] Hilfe: Zugriff auf Webserver funktioniert nicht mehr Server, Hosting und Workstations 5 06.02.2006 22:34
Nach Einfügugng der Sessions funktioniert mein Program nicht PHP-Fortgeschrittene 1 02.10.2005 06:13
Neues Fenster automatisch öffnen funktioniert nicht ? HTML, Usability und Barrierefreiheit 3 07.08.2005 23:43
Kontakrformular funktioniert nur zum Teil PHP Tipps 2005-2 12 18.07.2005 11:24
Aus Datei lesen und in Datei schreiben.. funktioniert nicht FBI PHP Tipps 2005-2 3 03.07.2005 16:55
PHP funktioniert nicht PHP Tipps 2005 20 28.04.2005 13:56
Php Gästebuch funktioniert nicht auf dem Server PHP Tipps 2005 13 21.04.2005 22:11
pear mime mail >> attachment funktioniert nicht PHP Tipps 2005 4 28.01.2005 16:23
pear mime mail funktioniert nicht überall PHP Tipps 2005 4 05.01.2005 20:42
Login funktioniert mit MD5 nicht PHP Tipps 2004-2 8 13.12.2004 19:32
Dateien erstellen oder schreiben funktioniert nicht im Web PHP Tipps 2004-2 1 05.12.2004 19:39
[Erledigt] move_uploaded_file funktioniert nicht! PHP-Fortgeschrittene 4 23.08.2004 22:41

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
download script php funktioniert nicht, downloadscript funktioniert auf webserver nicht

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:26 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.