Willkommen in der Webstatt
User-1 am 08.08.06 14:12

huhu ich hätt da mal nen problem:

<?php
// (c) 2005 by xyz-72
// http://xyz-72Online.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 xyz-48k 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?
User-2 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?

User-1 am 08.08.06 14:16

nein da ist nix

User-3 am 08.08.06 14:49

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

User-1 am 08.08.06 14:53

wie meinste das?

User-4 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.

User-1 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? :(

User-5 am 08.08.06 18:47

Du kannst ein

ob_start();

ganz an den Anfang packen.

User-6 am 08.08.06 20:46

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

User-1 am 08.08.06 21:22

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

User-7 am 08.08.06 21:44

Quote
Original von xyz-8
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 xyz-72 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 xyz-72 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