Downloadscript beschadigt files

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Laravel / PHP developer

Functie omschrijving Wij zijn op zoek naar een Medior PHP / Laravel Developer voor een IT-consultancy in de omgeving van Hoofddorp! Ben jij op zoek naar een leuke nieuwe uitdaging binnen een veelzijdige werkomgeving? Lees dan snel verder! Binnen dit bedrijf werk je in een ontwikkelteam, waarin je zeer betrokken bent en meedenkt over softwareoplossingen. Binnen dit Team hou je je bezig met het aanpassen, verbeteren en vernieuwen van de logistieke oplossingen. Je zult je bezig houden met de volgende werkzaamheden: Je gaat aan de hand van de wensen van klanten software ontwikkelen; Je bent bij het gehele proces betrokken;

Bekijk vacature »

Software developer (PHP) - Utrecht centrum

Functie Ieder onderdeel van de software draait op aparte servers en het bestaat dus echt uit verschillende componenten. Het team bestaat uit 4 developers, een klein team dus met korte lijnen. Alles in intern ontwikkeld en je werkt aan alle facetten. Van uitbreiding van de core tot maatwerk voor de klant. Ook liggen er verschillende uitdagingen op servervlak en databases. Je zult de eerste periode veel samenwerken met de lead developer om vervolgens echt je gang te gaan binnen de software. In het team streven ze naast de hoogst haalbare kwaliteit. Hiervoor werken ze nauw met elkaar samen en levert

Bekijk vacature »

Fullstack Software Developer

Bedrijfsomschrijving Functieomschrijving Java ontwerpen, bouwen en testen (T-shaped). Als senior ontwikkelaar ben je bekend in zowel de back-end als de frontend van een applicatie. Angular, Continious Delivery / Integration. Een ervaren iemand die de leiding kan nemen, een weg vindt in nieuwe situaties, en in oude applicaties. Initiatiefrijk, bekend met de (technische) omgevingen die we bij duo gebruiken, niet te beroerd om collega’s te helpen. Als senior programmeur in staat om op te treden als lead programmeur. Ondersteunt de testers bij de testautomatisering en minder ervaren programmeurs bij dagelijks werkzaamheden. Dit laatste met name op het gebied van Angular. Achtergrond

Bekijk vacature »

.NET Developer Medior Senior

Dit ga je doen Ontwikkelprocessen verder optimaliseren en verder ontwikkelen met C#; CI/CD-pipelines automatiseren; Herbruikbare componenten maken; Testen; Front-end pagina's gebruiksvriendelijk maken. Hier ga je werken Als .NET Developer kom jij terecht binnen een grote en internationale organisatie. Zij streven naar een positieve impact op de mens, milieu en maatschappij. Het bedrijf is oorspronkelijk een familiebedrijf en werkt aan de productie van hoogwaardige en technische systemen voor de gezondheidszorg. Momenteel willen zij betere ontwikkelprocessen creëren op internationaal gebied en staat kwaliteit en veiligheid voor hun op nummer 1! Als .NET Developer werk jij aan het ontwikkelen van verbeterde software voor

Bekijk vacature »

PHP developer (Laravel, Docker, Gitlab-CI)

Functie Het IT-team bestaat momenteel uit 4 ontwikkelaars. Ieder onderdeel van de software draait op aparte servers en het bestaat dus echt uit verschillende componenten intern ontwikkeld en je werkt aan alle facetten. Van uitbreiding van de core tot maatwerk voor de klant. Ook liggen er verschillende uitdagingen op servervlak en databases. Je zult de eerste periode veel samenwerken met de lead developer om vervolgens echt je gang te gaan binnen de software. Een groot deel van de systemen is gebouwd met behulp van het Laravel framework en PHP (minimaal 7.2), Docker voor lokaab gebruik en Gitlab-CI voor het deployen

Bekijk vacature »

C++ Ontwikkelaar

Functieomschrijving Ben jij toe aan een nieuwe uitdaging en werk je graag en goed in C++ en C#? Dan zijn we op zoek naar jou! Dit bedrijf is dé specialist op het gebied van automatiseringssoftware voor een specifieke branche en ze zijn per direct op zoek naar versterking in hun development team. Wat jij gaat doen binnen jouw rol als C++ ontwikkelaar; Je vertaalt de wensen van gebruikers naar een functioneel ontwerp. Je houdt je bezig met het ontwerpen, programmeren en testen van product aanpassingen. Je gaat nieuwe product releases implementeren in de projectteams. Je gaat de effecten van nieuwe

Bekijk vacature »

Freelance JAVA / C# Developer

Functieomschrijving Voor een opdrachtgever in omgeving Zoetermeer zijn wij op zoek naar ervaren JAVA of C# Developers die graag op projectbasis willen werken. Je komt terecht bij een informele developers club die mooie projecten uitvoeren voor grote klanten. Ben je een ervaren freelancer of werk je in loondienst en ben je toe aan een nieuwe uitdaging? Lees dan snel verder want wie weet is dit een leuke vacature voor jou! Het fijne van deze werkgever is dat je zelf mag beslissen hoe je te werk wilt gaan. Wil je als freelancer werken dan is dat OK. Wil je de zekerheid

Bekijk vacature »

Software Developer

Functie omschrijving Psst hé jij daar! Op zoek naar een nieuwe uitdaging als developer? Wacht niet langer en reageer direct. In deze functie ga je bij een familiebedrijf werken als developer. Je gaat maatwerk software ontwikkelen met de Microsoft stack. Je gebruikt technieken als C#, ASP.NET en MVC. Je werkt in een leuk team van andere developers. Je krijgt veel vrijheid in je werk en kan flexibel werken. Dagje thuiswerken? Geen probleem! Daarnaast is er veel ruimte om écht mee te denken met het bedrijf en met de klanten. Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Boxtel. Vanaf

Bekijk vacature »

BizTalk/ Azure Developer

Dit ga je doen •Understanding the scope of required functionality, translate them within context of way of working of the team into developed solutions, whilst safeguarding documentation; •Planning based on assigned sprint tasks; •Acting as an expert in estimation techniques and planning; •Understanding your role in the agile process and act in this way; •Facilitating internal communication and effective collaboration; •Working closely with scrum master to handle backlogs and new requests; •Providing information to the third parties about activities and needs for compliance. Hier ga je werken Our client is a leading organization focusing on animal nutrition, offering solutions that

Bekijk vacature »

SQL database developer

Functie omschrijving Voor een software bedrijf in omgeving Breda zijn wij op zoek naar een SQL database ontwikkelaar. Dit bedrijf bouwt applicaties om processen in distributiecentra te optimaliseren. Ter uitbreiding van het huidige team developers zijn wij op zoek naar een SQL database ontwikkelaar. De klanten van dit groeiende bedrijf zitten door heel Europa en jouw werkzaamheden zullen er als volgt uitzien: Het samenstellen van de software op basis van de input vanuit de klant (T-SQL & C#.NET). Het bezoeken van klanten om de processen en mogelijkheden in kaart te brengen. Het ontwerpen van databases met T-SQL als programmeer laag.

Bekijk vacature »

Junior Back end developer PHP, Symfony

Functie Wij hebben onlangs onze eerste collega’s aangenomen, waardoor ons development team momenteel uit 4 personen bestaat. We bouwen onze software op basis van een PHP-framework (wat op zichzelf een Symfony framework is). Qua ontwikkeling focussen wij ons op 3 focus velden; – API-ontwikkeling/ Component Creatie – Implementatie – Framework ontwikkeling; het toevoegen van nieuwe functionaliteit of interne microservices Onze senior software engineer focust zich momenteel op de laatste twee punten, maar wij komen handen te kort op het eerste veld. Daarom zijn wij op zoek naar een enthousiaste junior software engineer die graag de kneepjes van het vak wil

Bekijk vacature »

Senior Front-end developer Consultancy

Functie Als front-end developer ga je aan de slag voor verschillende klanten, waarbij veel rekening wordt gehouden met waar je woont (dit is altijd binnen het uur), en word er gezocht naar een organisatie die past bij jou. Zowel qua persoonlijke ambities als de technische aansluiting. De opdrachten duren gemiddeld 1 à 2 jaar maar dit hangt ook af van je wensen. Je werkt in een teamverband voor een klant en zult nauw samenwerken met zowel eigen collega’s als die bij de klant werkzaam zijn. Ze zijn op zoek naar een technische front-end developer die ruime ervaring heeft in één

Bekijk vacature »

PHP Developer

Dit ga je doen Ontwikkelen, implementeren en testen van PHP-oplossingen en Apps voor klanten en bedrijfsprocessen; Opstellen van requirements en uitwerken van de oplossingen; Testen van software en borgen van een soepele overdracht, inclusief documentatie; Proactief adviseren vanuit eigen expertisegebied over ontwikkelingen en verbeterpunten in technische toepassingen en processen binnen de organisatie. Hier ga je werken De organisatie is een ambitieuze en vooruitstrevende speler in de markt in de regio Rotterdam. Ze zijn de snelst groeiende in hun branche. Met een excellent aanbod en service willen zij de beste keuze zijn voor hun bestaande en nieuwe klanten. Dit alles doen

Bekijk vacature »

Medior front-end developer gezocht (€3.300 -

Functie Wat ga je doen? Jij als front-end developer gaat werken binnen de teams van/voor onze klant. Je werkt in een team met starters en ervaren ontwikkelaars met allemaal 1 overeenkomst; passie voor het vak. Maak je een fout? Geen probleem, leer ervan en ga dan weer door. Door de variëteit aan werk kun je in verschillende omgevingen een kijkje nemen en jezelf dus snel ontwikkelen. Wat hebben we jou te bieden? • Uitdagende projecten bij mooie klanten (bij jou in de buurt, of binnenkort intern vanuit ons kantoor!) • Een jonge organisatie met talentvolle collega’s • Veel ruimte voor

Bekijk vacature »

Junior .NET developer

Functie Om half 9 kom jij binnen en pak jij als eerst natuurlijk een bakje koffie of thee. Vervolgens ga jij je voorbereiden op de stand-up van kwart voor 9. Zijn er bijvoorbeeld dingen waar jij nog tegen aan loopt? Of is er nog code die getest of gereviewd moet worden? Vervolgens starten jullie met de stand up en na de stand up zoeken jullie elkaar op en gaan jullie aan de slag. Als team met 6 developers werken jullie in drie wekelijkse sprints. Het einde van een sprint is altijd op een donderdag zodat jullie op vrijdag de demo

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

18/05/2024 12:48:44
 
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.