php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.08.2011, 09:31  
Neuer Benutzer
 
Registriert seit: 19.07.2011
Beiträge: 14
PHP-Kenntnisse:
Fortgeschritten
JackCimberly befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Download -> Header -> .exe kaputt

Hallo php-Gemeinde.

Tja, bisher wurde ich immer durch das Lesen hier schlau und konnte alles umsetzen, was ich wollte, aber die letzten Tagen finde ich keine Lösung ...

Folgend der Code für den Header-Download:

PHP-Code:
// database connection
include("_mysql.php");


if (isset(
$_GET['fileID'])) {

$count 0;
$fileID $_GET['fileID'];

$set_ergebnis mysql_query("SELECT * FROM files WHERE fileID = '".$fileID."'") OR die("Error: $set_ergebnis <br />".mysql_error());;
$set_row mysql_fetch_object($set_ergebnis);

            
$count $set_row->downloads;
            
$file_data $set_row->file;

            
$count = ($set_row->downloads 1);
            
$sql "UPDATE files SET downloads = '$count' WHERE fileID = '".$fileID."'";
            
$result mysql_query($sql);


$file "/files/".$file_data;
header('Content-type: application/octet-stream');
header("Content-Transfer-Encoding: binary");
header("Content-Type: application/download");
header("Content-Description: File Transfer");
header('Content-Length: ' filesize($file));
$dateiname basename($file);
header('Content-Disposition: attachment; filename="' $dateiname '"');
readfile($file);


} else {
    echo 
"nicht vorhanden";

Klappt alles, nur, wenn ich Datei runter geladen habe (local mit XAMPP), dann scheint die .EXE-Datei kaputt zu sein. Größe der Datei stimmt.

Meldung, die erscheint, wenn ich die herunter geladene .EXE-Datei ausführen möchte
Lautet wie folgt:

Die Version dieser Datei ist nicht mit der ausgeführten Windows-Version kompatibel. Öffnen Sie die Systeminformationen des Computers, um zu überprüfen, ob eine x86-(32 Bit)- oder eine x64-(64 Bit)-Version des Programms erforderlich ist, und wenden Sie sich anschließend an den Herausgeber der Software.

Habe selbst Win7.
Datei ist für 32- und 64 Bit Systeme geschrieben.

Stimmt da was bei der Übertragung nicht?

Geändert von JackCimberly (01.08.2011 um 10:08 Uhr). Grund: #readfile($file); = readfile($file);
JackCimberly ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 01.08.2011, 09:48  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

hast du einen guten Editor ? dann mach die Datei doch mal dort auf - ich wette mit dir, dass du
a) PHP-Fehlermeldungen in der Exe findest
b) html-Code oder sonstwelches Kram, das nicht hineingehört ...

für b) du musst nach einem Download mit verändertem Header dein Script absichtlich beenden (exit() / die() ) - um sicherzustellen, dass keine weitere Ausgabe in der Datei landet, ansonsten würden nachfolgende echo / print-Ausgaben in der Datei landen,..

für den ersten Teil - kommentiere mal die header aus, - vielleicht kann die Daten nicht richtig gefunden werden, oder eine andere Fehlermeldung landet wegen der verbogenen Header in der Runtergeladenen Exe
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 01.08.2011, 10:08  
Neuer Benutzer
 
Registriert seit: 19.07.2011
Beiträge: 14
PHP-Kenntnisse:
Fortgeschritten
JackCimberly befindet sich auf einem aufstrebenden Ast
Standard

Hi Eagle275.

Danke Dir - für die Antwort.

Zum Editor: Ich nutze Webocton Scriptly. Für mich ist der gut .
Ich habe die herunter geladene Datei mit dem besagten Editor geöffnet.
Nur zwei Zeilen werden angezeigt, kein Text sichtbar.
Anderer Editor?

exit(); habe ich am Ende hinzugefügt (nach readfile($file);).

Also die Datei wird gefunden.

JackCimberly ist offline   Mit Zitat antworten
Alt 01.08.2011, 10:13  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

hmm ... lade dir bitte mal - wenn nicht vorhanden - die Shareware-Version vom TotalCommander herunter (Version ist eigentlich egal - hauptsache sie läuft unter windows 7) - dann geh zu der heruntergeladenen Datei und einmal beherzt auf F3 ... die ersten beiden angezeigten Zeichen MÜSSEN zwingend "MZ" sein - das steht halt für "ausführbare Datei" - wenn dort was anderes steht ....

ansonsten listet TotalCommander standardmäßig mit Zeilenumbruch - falls da also wie von mir angenommen Fehlermeldungen im Code landen, dann solltest du anstelle von MZ eben die PHP-Fehlermeldung lesen ... oder aber HTML-Code

wenn das noch keinen Aufschluss bringt , dann bitte einmal im Menü Optionen auf "hexadezimal" ... wenn dort auffällig viele 20 im mittleren Bereich auftauchen, dann landen wohl Leerzeichen im Code der Exe, die dort nix zu suchen haben ...

hast du die Exe auch mal zur Hand Vor dem Upload zum Webserver ? dass du die mal vergleichen kannst ?...

Ansonsten würd ich immer noch davon ausgehen, dass in deiner Exe irgendwelche PHP-Fehlermeldungen landen

und ändere mal bitte diese eine Zeile um bei dir
PHP-Code:
header("Content-Disposition: attachment; filename=\"".$dateiname."\";"); 
(es geht vor allem um das Semikolon)
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

Geändert von eagle275 (01.08.2011 um 10:21 Uhr).
eagle275 ist offline   Mit Zitat antworten
Alt 01.08.2011, 20:40  
Neuer Benutzer
 
Registriert seit: 19.07.2011
Beiträge: 14
PHP-Kenntnisse:
Fortgeschritten
JackCimberly befindet sich auf einem aufstrebenden Ast
Standard

Hi.

Entschuldigung, komme jetzt erst dazu, zu antworten.

Möchte nochmals den Inhalt der PHP-Datei aufführen:

PHP-Code:
// database connection
include("_mysql.php");


if (isset(
$_GET['fileID'])) {

$count 0;
$fileID $_GET['fileID'];

$set_ergebnis mysql_query("SELECT * FROM files WHERE fileID = '".$fileID."'") OR die("Error: $set_ergebnis <br />".mysql_error());;
$set_row mysql_fetch_object($set_ergebnis);

            
$count $set_row->downloads;
            
$file_data $set_row->file;

            
$count = ($set_row->downloads 1);
            
$sql "UPDATE files SET downloads = '$count' WHERE fileID = '".$fileID."'";
            
$result mysql_query($sql);


$file "/files/".$file_data;
header('Content-type: application/octet-stream');
header("Content-Transfer-Encoding: binary");
header("Content-Type: application/download");
header("Content-Description: File Transfer");
header('Content-Length: ' filesize($file));
$dateiname basename($file);
header("Content-Disposition: attachment; filename=\"".$dateiname."\";");
readfile($file);
exit();


} else {
    echo 
"nicht vorhanden";

Habe mir TotalCommander geladen.
Inhalt der ersten paar Zeilen:

Code:
MZP
Edit: Text wech? Nanü?

Vor dem MZP sind aber noch zwei Punkte, die aber beim Kopieren des Textes abhanden gekommen.

Außerdem habe ich im hexi-Modus zwischen 48- und 52 Prozent keine "20"ern gesehen. Kann aber auch sein, dass ich schnell durchgeschaut habe und dadurch nichts entdeckt habe.

Dateien liegen bei mir auf der Festplatte -> Xampp.

Dateivergleich

Beschädigte Datei(?):
Größe: 1,83 MB (1.922.828 Bytes)
Größe auf dem Datenträger: 1,83 MB (1.925.120 Bytes)
Reiter "Details": Produktversion, Copyright, Produktname usw. nicht vorhanden
Setup/Exe Icon: nicht vorhanden

Original Datei
Größe: 1,83 MB (1.922.828 Bytes)
Größe auf dem Datenträger: 1,83 MB (1.925.120 Bytes)
Reiter "Details": Produktversion, Copyright, Produktname usw. vorhanden
Setup/Exe Icon: vorhanden

So, Text musste ich noch mal schreiben. ^^

Langen die Informationen?

Geändert von JackCimberly (01.08.2011 um 20:54 Uhr).
JackCimberly ist offline   Mit Zitat antworten
Alt 02.08.2011, 08:20  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

also die beiden Punkte sind definitiv falsch ...

der Anfang in Hex-Code sollte
Code:
4D 5A
sein...

bitte kontrollier mal dein PHP-Script, ob da irgendwo noch andere Ausgaben gemacht werden ..
ich verwende quasi die gleichen Header-Zeilen wie du, und bei mir klappt das problemlos, egal welchen DateiTyp ich downloade ...

ich weiß nicht, ob die Reihenfolge ein Problem darstellt ...

du kannst aber mal bitte in die Exe auf dem Webserver gucken, ob die da schon verändert ist , dann müsstest du mal deine Upload-Funktion anschauen ...

verwendest du Output-Buffering für deine HTML-Ausgaben ?


das mit dem Hex 20 im mittleren Bereich hab ich unglücklich ausgedrückt - ich meinte damit, ob davon auffällig viele am Anfang der Datei stehen (mittlerer Bereich bezog sich auf das Fenster vom TotalCommander) - aber das hat sich ja durch die beiden Punkte erledigt
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

Geändert von eagle275 (02.08.2011 um 08:25 Uhr).
eagle275 ist offline   Mit Zitat antworten
Alt 02.08.2011, 09:38  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von JackCimberly Beitrag anzeigen
Vor dem MZP sind aber noch zwei Punkte, die aber beim Kopieren des Textes abhanden gekommen.
Ich tippe mal auf das übliche: Script in UTF-8 mit BOM abgespeichert ...?
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 02.08.2011, 09:45  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

sollte dann nicht alles am "headers already sent" scheitern ?
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 02.08.2011, 09:58  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Nicht, wenn output buffering aktiviert ist.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 02.08.2011, 10:19  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zitat:
Zitat von JackCimberly Beitrag anzeigen
Dateivergleich

Beschädigte Datei(?):
Größe: 1,83 MB (1.922.828 Bytes)
Größe auf dem Datenträger: 1,83 MB (1.925.120 Bytes)
Reiter "Details": Produktversion, Copyright, Produktname usw. nicht vorhanden
Setup/Exe Icon: nicht vorhanden

Original Datei
Größe: 1,83 MB (1.922.828 Bytes)
Größe auf dem Datenträger: 1,83 MB (1.925.120 Bytes)
Reiter "Details": Produktversion, Copyright, Produktname usw. vorhanden
Setup/Exe Icon: vorhanden

So, Text musste ich noch mal schreiben. ^^

Langen die Informationen?
Haste mal die MD5 Hashes von beiden Dateien verglichen?

Und noch ne gaaaanz doofe Zwischenfrage - es ist nicht zufällig eine 64bit EXE die auf ein 32bit OS heruntergeladen und ausgeführt wird?
Zitat:
Datei ist für 32- und 64 Bit Systeme geschrieben.
Das gibbet nicht - eine 32bit exe läuft AUCH unter einem 64bit System (subsystem), aber eine 64bit exe nicht unter 32bit..
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Antwort


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
[Erledigt] Bild erst nach 2. Download lesbar... Floezen PHP-Fortgeschrittene 1 09.06.2011 00:02
Problem mit PHP Download per Header Befehl Kingkarule PHP Tipps 2010 8 22.11.2010 16:12
[Erledigt] Download einer Datei über Header prof3 PHP Tipps 2010 3 31.08.2010 13:41
Zweck von Keep-Alive Header bei HTTP 1.1 Thalo Server, Hosting und Workstations 1 16.03.2010 21:20
[Erledigt] mod_rewrite, Datei Downloads und falsche Header kip Server, Hosting und Workstations 1 16.09.2009 12:37
[Erledigt] download via header mistermint PHP Tipps 2009 10 04.08.2009 20:22
Download einer csv-Datei netty PHP-Fortgeschrittene 6 02.05.2008 15:53
Download starten (header funktion), vorher Text ausgeben? Harakiri81 PHP-Fortgeschrittene 19 16.05.2006 21:15
header download MK0 PHP Tipps 2006 4 24.02.2006 23:30
header download lädt mp3 als text ins browserfenster PHP-Fortgeschrittene 12 19.08.2005 17:22
Header Download in Schleife - Wie? PHP Tipps 2005-2 2 02.08.2005 09:50
Problem: Cannot modify header information Alpha Centauri PHP Tipps 2005 11 25.04.2005 13:05
[Erledigt] Header Probleme beim Download PHP-Fortgeschrittene 4 15.03.2005 11:40
[Erledigt] ZIP Download - Header Problem PHP-Fortgeschrittene 1 19.08.2004 02:41
Warning: Cannot modify header... einbinden nicht möglich? PHP Tipps 2004 2 07.08.2004 15:06

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
download header.exe, php download header, php download exe, exe nach herunterladen defekt, die version dieser datei ist nicht mit der ausgeführten windows-version kompatibel, php download header(\'content-length defekt, scriptly download defekt, php download bilddatei defekt, hex editor die version dieser datei ist nicht mit der ausgeführten windows-version kompatibel. Öffnen sie die systeminformationen des computers, um zu überprüfen, ob eine x86-(32 bit)- oder eine x64-(64 bit)-version des programms erforderlich ist, und wen, php download über header datei immer defekt, csv dateien mit php auslesen und via header() downloaden, webocton scriptly zeilenumbruch semikolon, php download bild immer kaputt?, application octet-stream von online festplatte öffnen, =d&gt smiley, php downloads defekt

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:04 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