Willkommen in der Webstatt Zum Webstatt Blog und Stories
tnY am 08.08.06 14:12

huhu ich hätt da mal nen problem:

<?php
// (c) 2005 by Franky
// http://FrankyOnline.de/
// Dieser Vermerk darf nicht entfernt werden

function dlfile($file, $filename=''){
GLOBAL $_SERVER;

// Get filename
if(empty($filename)) $filename = basename($file);

// Convert filename
$translate = array('ß' => 'ss', 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'Ä' => 'Ae', 'Ö' => 'Oe', 'Ü' => 'Ue');
foreach($translate as $char => $trans) $filename = str_replace($char, $trans, $filename);
$filename = preg_replace('/[^a-z0-9_\-@. ]{1}/i', '_', $filename);

// Get Browser
if(preg_match('/MSIE [0-9]\.[0-9]/', $_SERVER['HTTP_USER_AGENT'])) $browser = 'ie';
elseif(preg_match('/Opera\/[0-9]\.[0-9]/', $_SERVER['HTTP_USER_AGENT'])) $browser = 'opera';
else $browser = 'unknown';

// Get Filesize
$filesize = (@filesize($file))?filesize($file):'';

// Send header
header('Content-Type: '.(($browser=='ie'||$browser=='opera')?'application/octetstream':'application/octet-stream'));
header('Content-disposition: '.(($browser=='ie')?'inline':'attachment').'; filename="'.$filename.'"');
if(isset($filesize)) header('Content-Length: '.$filesize);
if($browser == 'ie') header('Pragma: public');
else header('Pragma: no-cache');
header('Expires: 0');

// Read file
if($fp = fopen($file, 'r')){
while(!feof($fp)) echo fgets($fp, 4096);
fclose($fp);
}else echo 'Error while reading';
}
include("../*****<- db halt");
$abfrage = "SELECT * FROM galerie WHERE id='".$_GET['ordner']."'";
$ergebnis = mysql_query($abfrage) or die( mysql_error() );
while ($obj = mysql_fetch_array($ergebnis)){

$abfrage = "SELECT * FROM bild WHERE id='".$_GET['id']."'";
$ergebnis = mysql_query($abfrage) or die( mysql_error() );
while ($row = mysql_fetch_array($ergebnis))
{
$downloads = $row[downloads]+1;
$eintrag = "UPDATE bild SET downloads = $downloads WHERE id = '".$_GET['id']."'";
$eintragen = mysql_query($eintrag) OR die(mysql_error());
dlfile('bilder/$obj[ordnername]/$row[bild]');
}
}
?>


hab auch ma probiert das ich in dlfile nen richtigen dateinamen angegeben hab aber trotzdem kommt (also mit richtigen dateinamen die letzten 2 fehler nicht)

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/xxx/httpdocs/xx/xxx/bild_downloaden.php:1) in /var/www/vhosts/xxx/httpdocs/xx/xxx/bild_downloaden.php on line 26
Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/xxx/httpdocs/xx/xxx/bild_downloaden.php:1) in /var/www/vhosts/xxx/httpdocs/xx/xxx/bild_downloaden.php on line 28
Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/xxx/httpdocs/xx/xxx/bild_downloaden.php:1) in /var/www/vhosts/xxx/httpdocs/xx/xxx/bild_downloaden.php on line 29
Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/xxx/httpdocs/xx/xxx/bild_downloaden.php:1) in /var/www/vhosts/xxx/httpdocs/xx/xxx/bild_downloaden.php on line 31
Warning: fopen() [function.fopen]: Unable to access bilder/$ordnername/$row[bild] in /var/www/vhosts/xxx/httpdocs/xx/xxx/bild_downloaden.php on line 34
Warning: fopen(bilder/$ordnername/$row[bild]) [function.fopen]: failed to open stream: No such file or directory in /var/www/vhosts/xxx/httpdocs/xx/xxx/bild_downloaden.php on line 34
Error while reading


sieht jemand nen fehler? Vielen Dank und Liebe Grüße
//achja und wie kann ich am besten machen das ich in der klammer dlfile() auch variablen nutzen kann? oder soll ich einfach die funktion auflösen und es so nutzen?

netcup.de Warum gibt es hier Werbung?
Franky Franky am 08.08.06 14:13

Quote
(output started at /var/www/vhosts/xxx/httpdocs/xx/xxx/bild_downloaden.php:1)

heißt das net das du in zeile 1 ein leerzeichen hast? noch vor [FONT=courier new]<?php[/FONT]? kann das sein?

tnY am 08.08.06 14:16

nein da ist nix

milahu milahu am 08.08.06 14:49

Wenn du das Skript einbindest, darst du vorher auch nix ausgeben.. :-\

tnY am 08.08.06 14:53

wie meinste das?

Dustwolf Dustwolf am 08.08.06 15:01

http://de.php.net/manual/de/function.setcookie.php

Lies dir mal den Text über Setcookie durch, das ist beispielweise auch ein Befehl, wo keine Ausgabe zuvor erfolgen durfte. Also nichts ans den Browser gesendet werden durfte.

tnY am 08.08.06 15:04

Hm danke für den link den konnt ich eh gebrauchen mit cookies :D was kann ich den nun dagegen unternehmen? :(

Al3x0r Al3x0r am 08.08.06 18:47

Du kannst ein

ob_start();

ganz an den Anfang packen.

Thiemm Thiemm am 08.08.06 20:46

...und ob_end_flush() nicht vergessen :baby:

tnY am 08.08.06 21:22

ne hat nix gebracht... und die dateinamen werden ja immernoch nicht übergeben wegen der function...

dookie dookie am 08.08.06 21:44

Quote
Original von Al3x0r
Du kannst ein

ob_start();

ganz an den Anfang packen.

Das ist immer nur eine Notlösung. Es ist immer besser wenn man das Problem am Ursprung behebt. Außerdem ist das ob_start() viel zu unperfomant.

@Jinonidi: wie Franky schon sagte, erzeugst du in der bild_downloaden.php in Zeile 1 ein Output, der an den Browser geschickt wird. Da der Output ja einen bestimmten Header brauch, wird auch der Header gesendet. In dem Script von Franky soll aber ein anderer Header gesendet werden, was aber die Fehlermeldung ausgibt, da der Header schon gesendet wurde. Am besten du versuchst den Output nach dem Script zu senden.

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt