Downloadscript beschadigt files

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

T-SQL Database developer

Functie omschrijving Ben jij een ETL database specialist? Houd jij ervan om te puzzelen met Databases, Query's & Stored procedures? Zoek jij uitdaging, vrijheid en verantwoordelijkheid? Zoek dan niet verder! Wij zijn per direct op zoek naar medior en senior database developers. Je gaat werken voor een relatief klein softwarebedrijf in omgeving Tilburg. Samen met 12 collega's (allemaal techneuten), ga jij je bezig houden met het bouwen en/of onderhouden van database software. Deze software wordt internationaal ingezet voor het automatiseren van logistieke processen. Jouw werkzaamheden gaan er als volgt uit zien: Je bent in een klein team met developers, verantwoordelijk

Bekijk vacature »

Full stack Developer / .NET / Angular / Azure

Dit ga je doen Jij gaat je als Full Stack .NET Developer voornamelijk bezighouden met: Het vertalen van concepten naar passende innovatieve en duurzame oplossingen; Het ontwikkelen van bedrijf kritische en gebruiksvriendelijke applicaties voor de internationale markt en intern gebruik; Bouwen aan software om het Internet of Things netwerk te ondersteunen; Het maken en onderhouden van interfaces tussen systemen aan de hand van API's; Het onderhouden en blijven verbeteren van de ontwikkelde software. Hier ga je werken Binnen deze organisatie zal jij als Full Stack .NET Developer een belangrijke rol krijgen en ga je dagelijks de uitdaging aan om maatwerk

Bekijk vacature »

PHP Developer

Functieomschrijving Wij zijn op zoek naar een PHP Developer met Laravel ervaring! Voor een groeiende werkgever in regio Breda zijn wij op zoek naar een medior PHP developer met Laravel ervaring. Je gaat aan de slag met het ontwikkelen van maatwerk software voor klanten in een specifieke markt. Als PHP developer ben je samen met een gemotiveerd team van 6 collega’s verantwoordelijk voor de ontwikkeling, beheer en het innoveren van informatiesystemen voor klanten in een specifieke branche. Als software developer ondersteun je complexe uitdagingen van klanten. Je brengt hun wensen in kaart en vertaalt deze door naar maatwerk software. Om

Bekijk vacature »

Consultant Low Code Developer

Functie omschrijving Heb jij verstand van datamodellering, NO CODE Platformen en kun jij het aan om projecten te leiden? Ben jij toe aan een nieuwe uitdaging en ben jij HBO afgestudeerd in de richting van IT? Voor een mooie opdrachtgever in omgeving Delft zijn wij op zoek naar een No Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten. Onderdelen functie Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform, je kunt denken aan Mendix of Betty Blocks. Je bent verantwoordelijk voor

Bekijk vacature »

Back-end programmeur

Functieomschrijving Heb jij kort geleden je MBO of HBO ICT in ontvangst mogen nemen? Of ben je klaar voor een nieuw hoofdstuk in jouw carrière? Voor een uitdagende werkgever in de regio van Tilburg zijn wij op zoek naar een ambitieuze back-end programmeur met affiniteit met MS Acess. Samen met een enthousiast team ben je verantwoordelijk voor het bouwen van maatwerk software voor hun klanten. Je hebt kennis of ervaring van SQL, Maar affiniteit met MS Acess is nog belangrijker. Je bent sociaal naar klanten en flexibel ingesteld. Je denkt altijd in kansen en gaat graag de uitdaging aan. Verder

Bekijk vacature »

.NET developer

Functie Als .NET ontwikkelaar start jij in een multidisciplinair team met 7 ontwikkelaars. Dit team is verdeeld onder Front-end ontwikkelaars en backend developers. De backend developers werken voornamelijk aan desktop applicaties in combinatie met backend systemen. Hier ga jij dus ook mee aan de slag! Hierbij wordt voornamelijk gebruik gemaakt van C# .NET, WPF, UWP, XAML en MVVM. WPF, UWP, .NET Core, Azure Devops en Entity Framework. WPF en UWP worden dan ook voornamelijk gebruikt voor de user interface van de desktop applicatie. Het development team is dan ook erg gedreven m.b.t. het ontwikkelen van vooruitstrevende en innovatieve horeca automatiseringsoplossingen.

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

.NET developer

Klaar voor een nieuwe uitdaging? Welke technologieën gaan schuil achter de dagelijkse energievoorziening? Als senior .NET developer bij Kenter maak jij samen met je team het verschil, zowel voor de interne organisatie als voor eindklanten. Samen bouwen jullie aan innovatieve dienstverlening met behulp van de nieuwste technologieën en tools. Het is een functie met veel vrijheid, goede arbeidsvoorwaarden én je draagt jouw steentje bij aan de energietransitie. Klinkt dit als iets voor jou? Lees dan verder of solliciteer direct! Wat ga je doen als senior .NET developer? Als senior .NET developer bij Kenter (onderdeel van Alliander) ben je van onschatbare

Bekijk vacature »

Functioneel applicatiebeheerder - SOP-SYS-SAM

TenneT is hard groeiend om de onze ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Functioneel Applicatiebeheerder voor het financiele domein op onze locatie Arnhem die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je gaat samenwerken in een team van circa 15 functioneel applicatiebeheerders en gaat onderdeel uitmaken van een DevOps team. Met dit team ga je applicaties (laten) ontwikkelen en beheren. Hierbij concentreer je je vooral op

Bekijk vacature »

Back end developer Onderwijssoftware

Functie Als back end developer kom jij terecht in een klein, maar hecht team bestaande uit 5 andere developers (waarvan 2 senioren, 2 medior en 1 junior). Met de gezamenlijke missie om “ieder kind te helpen met onze software” wordt er dagelijks gepassioneerd en hard gewerkt aan ons in-house ontwikkeld platform. Deze software is gebaseerd is op AI, machine Learning en wetenschappelijke inzichten. Dagelijks zul jij werken met onze high traffic webapplicatie. We hebben ruim 300.00 gebruikers en meer dan 2 miljard records waar je te maken mee krijgt! Verder zul jij je bezighouden met: – Het ontwikkelen van hoogwaardige

Bekijk vacature »

Java developer Zorgsysteem

Dit ga je doen Werken aan het eigen gebouwde zorgsysteem; Verbeteringen maken en toepassen binnen de applicatie; Jij gaat werken aan de Back-end van de applicatie en sporadisch werk je mee aan de Front-end; Samenwerken met andere teams voor een optimaal resultaat; Jij kan 'clean' werken en high quality code schrijven; Jij werkt resultaatgericht. Hier ga je werken De organisatie houdt zich bezig met diverse applicaties met betrekking tot zorgregistratie. Dankzij hun systeem komt alle informatie, omtrent de zorg van een patiënt, op een overzichtelijke en toegankelijke manier samen in één systeem te staan. Op deze manier is deze informatie

Bekijk vacature »

Front-end Angular developer

Functie In jouw rol als Front-End developer werk je samen met de backend developers om middels tweewekelijkse sprints het platform naar een hoger niveau te tillen. Hiernaast heb je affiniteit met data en werk je graag samen met het team om de gegevensintegriteit en -beveiliging te waarborgen, om ervoor te zorgen dat de gebruiker wereldwijd de beste SaaS-services heeft. Deze organisatie heeft meer dan 100 mensen in dienst, waarvan er 45 in Nederland werken. Het ontwikkelteam bestaat uit 10 mensen en is verdeeld in 2 scrumteams. Het eerste team bestaat uit Java en Scala ontwikkelaars. Het tweede team, waar jij

Bekijk vacature »

Java Front-end Developer

Dit ga je doen Ontwikkelen van nieuwe functionaliteiten in Java met tools als Springboot, MS SQL Server (T-SQL) en JavaScript; Het onderhouden van de (web-)applicaties binnen een complexe omgeving; Werken aan de migratie van een monolithisch systeem naar een architectuur gebaseerd op Kubernetes; Code reviews met collega's en actieve kennisuitdelingsessies voeren; Het uitvoeren van unit- en systeemtests Experimenteren met nieuwe tools en technieken. Hier ga je werken Binnen deze organisatie kom je te werken op de afdeling die gegevens verzamelt vanuit het hele land. Denk hierbij aan vertrouwelijke persoonsgegevens. Het team verwerkt al deze data met als doel het waarborgen

Bekijk vacature »

.NET developer

Functie Als developer heb jij de keuze om aan te sluiten bij het team (13 developers) die op locatie projectmatig bij klanten werkt. Wanneer jij liever intern bij de werkgever werkt is er ook alle ruimte voor jou in het interne team (8 developers) van dit bedrijf. Je werkt samen aan verschillende projecten bij of voor de klant. Het project wordt aangeleverd door sales aan de project manager. Die maakt samen met de Resourcer een planning en op basis daarvan wordt uit het development team een “projectgroep” opgesteld. Hoeveel en welke projecten jij wilt oppakken gebeurt geheel in samenspraak met

Bekijk vacature »

Junior Low-code ontwikkelaar gezocht omgeving Arnh

Bedrijfsomschrijving Wij zijn een dynamisch IT-bedrijf dat zich richt op het stroomlijnen van bedrijfsprocessen en het creëren van ondersteunende applicaties. Onze kracht ligt in het combineren van zakelijk inzicht met IT-expertise via gestroomlijnde procesontwerpen en wendbare applicatieontwikkeling met behulp van Low-code technologieën. Als jonge professional krijg je de kans om samen te werken met een team van 15 deskundige collega's, verspreid over nationale en internationale locaties. We bieden je een leerzame omgeving waar je je vaardigheden kunt ontwikkelen en groeien in je rol als Low-code ontwikkelaar. Word jij onze nieuwe Junior Low-code Ontwikkelaar (OutSystems)? Versterk ons team en draag bij

Bekijk vacature »
Sam H

Sam H

29/07/2012 00:04:32
Quote Anchor link
Op mijn sites staan files die users zelf kunnen uploaden in een geheime map /uploads.
Maar als ze files downloaden lukt dit ook, maar vanaf de moment dat je ze opent zegt de pc dat ze beschadigt zijn.
Als ik dit alles op localhost draait werkt alles perfect. Ook als ik de files open rechtstreeks vanuit uploads/file.jpg werkt alles perfect.

Enig idee hoe dit komt?

Dit is het downloadsscript waar via een POST het id van de file wordt meegegeven.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
session_start();

$username = $_SESSION['username'];
$password = $_SESSION['password'];

$host = 'x';
$username_db = 'x';
$password_db = 'x';
$dbnaam = 'x';

$db = mysql_connect($host, $username_db, $password_db) or die (mysql_error());
mysql_select_db($dbnaam, $db) or die (mysql_error());

//Check do we have username and password

if(!$username && !$password)
    {

        echo 'Geen toegang.';
        die();
    }

    
    
    
// Usage: <a href="download.php?file=test.txt&category=test">Download</a>
// Path to downloadable files (will not be revealed to users so they will never know your file's real address)

$hiddenPath = "uploads/";

// VARIABLES
if (!empty($_POST['file'])){
$id = $_POST['file'];
    $result = mysql_query("SELECT * FROM files WHERE id='$id'");
    $row = mysql_fetch_array($result);
$file = $row['locatie'];

$file = str_replace('%20', ' ', $file);
$category = (!empty($_GET['category'])) ? $_GET['category'] . '/' : '';
}
else {
    die('Hacking attempt reported.');
}

$file_real = $hiddenPath . $category . $file;
$ip = $_SERVER['REMOTE_ADDR'];

// If requested file exists
if (file_exists($file_real)){
// Get extension of requested file
$extension = strtolower(substr(strrchr($file, "."), 1));
// Determine correct MIME type
switch($extension){
case
"asf": $type = "video/x-ms-asf"; break;
case
"avi": $type = "video/x-msvideo"; break;
case
"exe": $type = "application/octet-stream"; break;
case
"mov": $type = "video/quicktime"; break;
case
"mp3": $type = "audio/mpeg"; break;
case
"mpg": $type = "video/mpeg"; break;
case
"mpeg": $type = "video/mpeg"; break;
case
"rar": $type = "encoding/x-compress"; break;
case
"txt": $type = "text/plain"; break;
case
"wav": $type = "audio/wav"; break;
case
"wma": $type = "audio/x-ms-wma"; break;
case
"wmv": $type = "video/x-ms-wmv"; break;
case
"zip": $type = "application/x-zip-compressed"; break;
case
"jpg": $type = "image/jpeg"; break;
default:
$type = "application/force-download"; break;
}

// Fix IE bug [0]
$header_file = (strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE')) ? preg_replace('/\./', '%2e', $file, substr_count($file, '.') - 1) : $file;
// Prepare headers
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public", false);
header("Content-Description: File Transfer");
header("Content-Type: " . $type);
header("Accept-Ranges: bytes");
header("Content-Disposition: attachment; filename=\"" . $header_file . "\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($file_real));
// Send file for download
if ($stream = fopen($file_real, 'rb')){
while(!feof($stream) && connection_status() == 0){
//reset time limit for big files
set_time_limit(0);
print(fread($stream,1024*8));
flush();
}

fclose($stream);
}
}
else{
// Requested file does not exist (File not found)
echo("Requested file does not exist");
die();

}

?>
Gewijzigd op 29/07/2012 00:05:23 door Sam H
 
PHP hulp

PHP hulp

22/12/2024 07:49:21
 
Marco PHPJunky

Marco PHPJunky

29/07/2012 00:35:39
Quote Anchor link
Laten we gewoon is bij het script beginnen...

om mee te beginnen:
- haal je vars buiten de quotes.
- Niet onnodig vars kopiëren.
- gebruik Geen * maar schrijf de velden uit.
- gebruik geen die() midden in je script!
------------------------------------------

waarom zitten/kunnen er spaties zitten/in de bestandsnamen ?
Waar zijn de foutafhandeling ? / Controles ?
je weet dat er verschillende MIME types zijn voor zowel jpeg als jpg en andere afbeeldingen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
jpeg    image/jpeg
jpg    image/jpeg
jpg    image/pjpeg
jpg     image/jpg
png    image/png
gif    image/gif
tif    image/tiff
tiff    image/tiff
ico    image/x-icon
bmp    image/bmp
pnm    image/x-portable-anymap
pnt    image/x-macpaint
pntg    image/x-macpaint
ppm    image/x-portable-pixmap

Kijk anders een naar deze functie: mime_content_type()
En deze Fileinfo

En je moet soms oppassen met de:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?PHP
header("Content-length: $size");
?>

Als de file size kleiner is dan de echte grote dan krijg je ook een corrupted file als je hem download
Gewijzigd op 29/07/2012 00:37:43 door Marco PHPJunky
 
Sam H

Sam H

29/07/2012 00:50:49
Quote Anchor link
Ok ik zal er allemaal eens naar kijken!
Maar ik snap niet dat dit kan verschillen tussen localhost en online?
Alles is exact hetzelfde, zelfs sommige files zijn mee geupload enz..

en ik snap ook niet goed wat je bedoelt met "waarom zitten/kunnen er spaties zitten/in de bestandsnamen ?"
Er kunnen toch spaties inzitten?

Toevoeging op 29/07/2012 00:53:47:

Ok ik heb het gevonden, hij gaf een error bij de

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
//reset time limit for big files
set_time_limit(0);
?>


Als ik dit eruit haal werkt het perfect. De error is:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Warning: set_time_limit() has been disabled for security reasons in /home/a9367061/public_html/test.php on line 82


Welke security reasons?
Gewijzigd op 29/07/2012 00:54:59 door Sam H
 
Marco PHPJunky

Marco PHPJunky

29/07/2012 01:58:17
Quote Anchor link
Er Zitten 'grote' verschillen tussen online en offline (localhost).
Als iets online staat heb je te maken met de de computers van anderen en hun instellingen elke computer kan bijvoorbeeld een andere Java(script) versie draaien of staat Uit of hun browser anders hebben ingesteld of andere tijd zone...

Jou server is een 'statische' omgevingen waarin alles gecontroleerd en 'correct' ingesteld is... dat kan je NOOIT zeggen voor die van een ander...
Voorbeeld:
Ik bedoel van jij kan een heel mooi login systeem maken gebouwd m.b.v. javascript en dan zal het op jou computer vast perfect werken...
Maar als ik op mijn computer javascript UIT heb staan zal het NIET meer werken..
Snapje ?

Dat klopt er kunnen spaties in een bestandsnamen zitten ja..
Alleen als je gaat werken met paden en bestanden op een server of in de URL kan het zijn dat niet elke browser/script/download er goed mee omgaat en je hele rare dingen krijgt...

Gebruik daarom NOOIT spaties in bestandsnamen..
Vervang deze door een _ (of dergelijks)!!

Nou die functie (set_time_limit) staat uit als PHP Safe mode aan staat.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
This function has no effect when PHP is running in safe mode.
There is no workaround other than turning off safe mode or changing the time limit in the php.ini

Bron: PHP.net

php.net

En deze staat waarscheinlijk uit in safe mode omdat je met deze functie het aantal secondes dat een script mag draaien kan setten...
Als dat getal (X aantal secondes) berijkt is geeft hij een Fatal error..

Dus waarscheinlijk staat/draaid je PHP local of op de server in Safe mode...

Heb je het draaien op een home server of op een hosting ?
Gewijzigd op 29/07/2012 02:12:45 door Marco PHPJunky
 
Sam H

Sam H

29/07/2012 15:27:54
Quote Anchor link
Het draait nu tijdelijk op een gratis hosting, als voorbeeld.

Is het mogelijk om dan aan de php.ini file te komen?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.