Webstatt.org - Community seit 2006 - 2012 (2024?)

headers allredy sent

user-329
08.08.2006 12:12

huhu ich hätt da mal nen problem:

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

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

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

// Convert filename
$translate = array('ß' => 'ss', 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'Ä' => 'Ae', 'Ö' => 'Oe', 'Ü' => 'Ue'zwinkern;
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'zwinkern?'application/octetstream':'application/octet-stream'zwinkern);
header('Content-disposition: '.(($browser=='ie'zwinkern?'inline':'attachment'zwinkern.'; filename="'.$filename.'"'zwinkern;
if(isset($filesize)) header('Content-Length: '.$filesize);
if($browser == 'ie'zwinkern header('Pragma: public'zwinkern;
else header('Pragma: no-cache'zwinkern;
header('Expires: 0'zwinkern;

// Read file
if($fp = fopen($file, 'r'zwinkern){
while(!feof($fp)) echo fgets($fp, 4096);
fclose($fp);
}else echo 'Error while reading';
}
include("../*****<- db halt"zwinkern;
$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]'zwinkern;
}
}
?>


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 user-158k 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?

Avatar user-182
08.08.2006 12:13

(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 <?php? kann das sein?

Seid ihr auch schon wix'r? xD
user-329
08.08.2006 12:16

nein da ist nix

Avatar user-255
08.08.2006 12:49

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

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
user-329
08.08.2006 12:53

wie meinste das?

Avatar user-168
08.08.2006 13: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.

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
user-329
08.08.2006 13:04

Hm danke für den link den konnt ich eh gebrauchen mit cookies Fettes Grinsen was kann ich den nun dagegen unternehmen? traurig

Avatar user-118
08.08.2006 16:47

Du kannst ein

ob_start();


ganz an den Anfang packen.

Ich brauche keine Signatur
Avatar user-325
08.08.2006 18:46

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

PHP spricht hebräisch. lächeln
Parse error: syntax error, unexpected ')', expecting T_PAAMAYIM_NEKUDOTAYIM
user-329
08.08.2006 19:22

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

Avatar user-166
08.08.2006 19:44

Original von user-118
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 user-182 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 user-182 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.

[ » HesaSys - ein freies, schnelles und flexibles WCMS ]