Downloadscript beschadigt files

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Back-end Developer

Functie omschrijving Als Back-end Developer heb je de eer om als eerste interne developer bij deze organisatie te beginnen. Op dit moment zijn er externe developers, maar daar wil de organisatie verandering in brengen. Op termijn moet de gehele afdeling uit intern personeel bestaan. Je kan je voorstellen dat de eerste interne developer ook de nodige kennis mee moet brengen. Dat klopt. Je gaat je namelijk aan het begin bekommeren over de externe developers en uiteindelijk over je interne collega's. Verder ga je het volgende doen: Het bedenken, beheren en onderhouden van webportalen, API-koppelingen en applicaties; Je bedenkt en werkt

Bekijk vacature »

SQL Database developer

Functie omschrijving Wil jij meewerken aan het creëren van slimme software om magazijnen als een geoliede machine te laten lopen? Wij zoeken een zorgvuldig persoon, iemand die niet snel de hand omdraait voor complexe algoritmes. Denk jij dat jij de SQL ontwikkelaar bent die wij zoeken? Lees snel verder en wie weet zitten we binnenkort samen aan tafel! Jouw werkzaamheden zullen er als volgt uitzien: Je houdt je bezig met het ontwerpen en ontwikkelen van MS SQL server databases, dit doe je met T-SQL als programmeer laag. Je gaat aan high-end software oplossingen werken, dit doe je voor de optimalisatie

Bekijk vacature »

Software Developer C# .NET

Functie omschrijving Software Developer C# .NET gezocht voor een dynamische organisatie! Ben jij net afgestudeerd of toe aan een volgende stap in je maatschappelijke carrière? Lees dan snel verder! Wij zijn op zoek naar een Software Developer die klaar is voor een nieuwe uitdaging en die een organisatie in de regio Houten wil versterken. Je werkt in deze functie aan verschillende projecten en gaat vaak op bezoek bij klanten. In deze functie kun je een grote mate van uitdaging, diversiteit en verantwoordelijkheid verwachten. Bedrijfsprofiel Waar kom je te werken? Je komt te werken bij een organisatie dat gespecialiseerd is in

Bekijk vacature »

Senior Fullstack developer wanted! (C#, Java, Angu

Functie Under the guidance of 3 account managers, one of whom will be your point of contact within your expertise, you will start working for various clients. He or she will help you find a suitable and challenging assignment. Naturally, they will take your situation, experience and (technical) ambitions into account. The assignments last one to two years on average. This allows you to really commit to a project and make an impact as a consultant. Besides the assignment, you will regularly meet your colleagues from the IT department to share knowledge or discuss new trends, for example. Master classes

Bekijk vacature »

PHP Developer

Functieomschrijving Vanuit het hoofdkantoor in omgeving Breda ben je als PHP/Symfony Developer niet alleen gefocust op het ontwikkelen van software. Daarnaast ben je voortdurend bezig met het zoeken naar nieuwe trends en ontwikkelingen die van waarde kunnen zijn voor de efficiëntie van software ontwikkeling. Hieronder een kort overzicht van jouw takenpakket: Het ontwerpen en implementeren van webapplicaties met het Symfony Framework; Het schrijven van een schone en efficiënte codes; Het testen van ontwikkelde applicaties om te zorgen dat ze goed functioneren en voldoen aan de eisen van de klant; Onderhouden en updaten van bestaande applicaties die zijn gebouwd met het

Bekijk vacature »

Developer Low-code

Dit ga je doen Low-code ontwikkeling van software voor landelijk bekende organisaties; Opleveren van mooie eindproducten, middels de Agile methodiek; Samenwerken in een team van 10 collega's; Direct contact met de eindklant over de gewenste oplossingen. Hier ga je werken Als Developer kom je te werken in de regio van Lelystad bij een organisatie die met toonaangevende klanten uit heel Nederland samen werkt. De producten en diensten van de organisatie bereiken miljoenen Nederlanders. Hierbij komt een grote hoeveelheid informatie kijken en deze moet discreet en veilig verwerkt worden. De processen die hierbij horen worden door het IT team vormgegeven. De

Bekijk vacature »

Back-end PHP Software Developer - Juniorfunctie

Functieomschrijving Wij zijn op zoek naar een PHP Software Developer om ons team te versterken en mee te werken aan de ontwikkeling van eigen IOT-oplossingen. In deze functie ben je verantwoordelijk voor het bouwen van webapplicaties, apps en dashboards voor het uitlezen en managen van sensoren in machines. Je werkt nauw samen met een team van ontwikkelaars en engineers om de beste software-oplossingen te creëren. Jouw werkzaamheden zien er als volgt uit: Je bent in deze rol verantwoordelijk voor het ontwerpen, ontwikkelen en onderhouden van webapplicaties en softwaretoepassingen voor in-house ontwikkelde IOT oplossingen. Je werkt aan complexe databases en back-end

Bekijk vacature »

Senior C# Software Ontwikkelaar te Zaandam

Bedrijfsomschrijving Deze werkgever heeft als missie om haar klanten op ICT-gebied volledig te ontzorgen. Ze zijn een ICT bedrijf met een verscheidenheid aan ICT oplossingen waaronder Cloud oplossingen en een groot deel van het werk is gericht op software realisatie. Voor de Enterprise-klanten voert het relatief kleine ontwikkelteam waar jij deel uit van kan gaan maken binnen deze organisatie te Zaandam de grootste opdrachten uit. Niet alleen websites en complexe webapplicaties maar ook mobile apps, web services en complete systeemintegraties! Je moet dan denken aan Dynamics, Sharepoint en Salesforce. Je komt hier terecht in een relatief kleine organisatie met ontzettend

Bekijk vacature »

Junior/Medior Front-end developer

Functie Als Front-end developer werk je intensief samen met 1 van de UX-designers en denk je mee over de gebruiksvriendelijkheid en design van onze web- en mobile apps. Je bent betrokken bij sessies met gebruikers om designs te valideren en usability van de app-in-wording te testen. Vervolgens gebruik je dit om samen met je team waarin ook back-end (.NET) developers zitten, te zorgen voor de realisatie van de best mogelijke apps voor studenten en docenten. Eisen • Je hebt een hands-on development en coding mind-set en werkt graag aan een high quality code base welke je consequent onderhouden kan worden

Bekijk vacature »

Medior Java developer

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

Functie Als ervaren .NET ontwikkelaar ontbreekt er aan passie en motivatie niks. Jij bent communicatief sterk en pakt iedere uitdaging dan ook met beide handen aan. Op projectbasis ga jij met je team of met enkele andere ontwikkelaars intern aan de slag bij diverse partners. Op basis van het project ga jij aan de slag en zijn de werkzaamheden en technieken erg divers. Jouw werkgever stelt jouw ontwikkeling hierin voorop, zo krijg je een vast vertrouwenspersoon die één keer in de maand op locatie van jouw project zal kijken hoe het gaat en of er eventuele aandachtspunten zijn. Daarnaast krijg

Bekijk vacature »

Full stack developer Node.js, React Remote

Functie Als fullstack JavaScript developer vind jij het uitdagend om op basis van concrete klantvragen nieuwe functionaliteiten te ontwikkelen. Bij voorkeur worden deze functionaliteiten op een bepaalde manier geprogrammeerd, zodat ze door meerdere klanten te gebruiken zijn. Je hebt dus vaak te maken met abstracte vraagstukken. Om dit te kunnen realiseren sta je nauw in contact met de product owner en/of klant. Je bent niet alleen onderdeel van het development team, maar hebt ook vaak contact met de product-owner en/of klanten om daardoor inzichten te verzamelen die leiden tot productverbeteringen. • Inzichten verzamelen bij de klant en/of product owner •

Bekijk vacature »

Medior/senior Front-end developer

Functie Je maakt deel uit van een DevOps Scrum team en werkt samen met back-end developers, test-engineers, interaction designers en een projectmanager. Er zijn verschillende groepen Scrum teams. Een roadmap team is jouw ‘’thuisbasis’’, daar wordt gewerkt aan doorontwikkeling van bestaande omgevingen voor een aantal klanten. Hiernaast zijn er projectteams waar nieuwe omgevingen worden gebouwd, of grote complexe wijzigingen worden doorgevoerd op bestaande omgevingen. Je kunt (afhankelijk van jouw wensen en doelen) dus afwisselend werken in beide teams. Hiernaast participeer je in het Chapter Front-end development waar gezamenlijk kennis en ervaring wordt gedeeld. Als Front-end developer is het jouw doel

Bekijk vacature »

Remote - Front-end Angular developer

Functie The IT team currently consists of the IT Manager, 2 back-end developers, 1 full-stack developer, 1 designer, and a DevOps engineer. They are currently looking for an experienced Front-end developer who will work autonomously and in a disciplined manner, being the only developer working on their Front-end applications at the start. They do have the ambition to find a second developer soon, who you will then be able to supervise. You will be working on the further development of their existing UI in Angular. But also developing a mobile app. They place great value on User Experience and opt

Bekijk vacature »

Medior/senior Front-end developer (Vue.js)

Functie Als Front-end developer ben je uiteindelijk overkoepelend aan de slag voor de 3 ontwikkelteams die ieder aan een specifiek product werken. In samenwerking met de UX-designer en de huidige Front-end developer zorg je voor gebruiksvriendelijke software. Lijkt het jou interessant om complexe problemen op te lossen en feautures naar een hoger niveau te tillen? En vind je het niet erg om oudere delen van de applicaties te refactoren i.c.m. het toevoegen van nieuwe functionaliteiten? Dan komen wij graag met je in contact. Eisen • HBO werk- en denkniveau (ze kijken niet naar papieren, maar naar denkniveau, motivatie en zelfredzaamheid)

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

16/02/2025 12:50:18
 
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.