Ik ben bezig om een simpele CMS in elkaar te draaien, waarbij het onder meer mogelijk is om foto's te uploaden. Gisteren ben ik er de hele dag mee bezig geweest, en aan het einde van de dag deed hij precies wat hij moest doen: afbeelding uploaden en de alt-tekst erbij. * TerraGuy blij, drie achterwaartse salto's enzo.
Aangezien hij voor nagenoeg iedereen te gebruiken moet zijn, open ik hetzelfde bestand in Internet Explorer (ik gebruik zelf FireFox) en wat krijgen we nu: de tekst uit het formulier wordt wel doorgevoerd maar de afbeelding wordt niet opgeslagen..
Om wat specifieker te zijn: als ik in FireFox een joekel van een bestand upload, is hij ff bezig met de verwerking en herlaadt de pagina daarna netjes met de nieuwe foto (afgezien van het cache-probleempje).
In IE is hij direct klaar als ik de submit-button aanklik, hoe groot de foto ook is, en er verschijnt geen nieuwe foto op de pagina, en ook niet op mijn harde schijf (dit kan ik direct controleren). Hij doet het gewoon niet dus.
Natuurlijk heb ik alles nog 10x doorgelezen, gezocht met Google & hier, maar niks te vinden wat de reden kan zijn voor deze flauwe weerbarstigheid van IE. Ik dacht dat PHP-code browseronafhankelijk was en dat PHP altijd dezelfde uitkomst zal geven, in elke browser, of is dat niet zo? Of zit er een fout in de form?
Afijn, de code:
..en de include die de afbeelding verwerkt (alleen relevante code):
Aangezien hij voor nagenoeg iedereen te gebruiken moet zijn, open ik hetzelfde bestand in Internet Explorer (ik gebruik zelf FireFox) en wat krijgen we nu: de tekst uit het formulier wordt wel doorgevoerd maar de afbeelding wordt niet opgeslagen..
Om wat specifieker te zijn: als ik in FireFox een joekel van een bestand upload, is hij ff bezig met de verwerking en herlaadt de pagina daarna netjes met de nieuwe foto (afgezien van het cache-probleempje).
In IE is hij direct klaar als ik de submit-button aanklik, hoe groot de foto ook is, en er verschijnt geen nieuwe foto op de pagina, en ook niet op mijn harde schijf (dit kan ik direct controleren). Hij doet het gewoon niet dus.
Natuurlijk heb ik alles nog 10x doorgelezen, gezocht met Google & hier, maar niks te vinden wat de reden kan zijn voor deze flauwe weerbarstigheid van IE. Ik dacht dat PHP-code browseronafhankelijk was en dat PHP altijd dezelfde uitkomst zal geven, in elke browser, of is dat niet zo? Of zit er een fout in de form?
Afijn, de code:
PHP:
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
| <?php // include van database include("database.php"); $db = openDB(); // update de nieuwe fotonaam (alt-tekst) als er een nieuwe via 'post' is verstuurd if($_POST["fotonaam1"]){ $fotonaam1 = $_POST["fotonaam1"]; $updatedb = mysql_query("UPDATE hoofdpagina SET afbeeldingboven = '$fotonaam1'"); mysql_query($updatedb, $db); } // selecteer de alt-tekst uit de database $result = mysql_query("SELECT afbeeldingboven FROM hoofdpagina"); $row = mysql_fetch_array($result); $afbeeldingalttekst1 = $row['afbeeldingboven']; ?> <!-- Bij het indrukken van de 'submit-button' dezelfde pagina herladen --> <form action="fototest3.php" method="post" enctype="multipart/form-data"> <img src="../afbeeldingen/winkel.jpg" alt="huidige foto" class="fotos" /> <br /> <br /> Nieuwe foto versturen? Klik op bladeren en kies een nieuwe foto. <br /> <input type="file" name="afbeelding1" /><br /> De titel van de nieuwe foto:<br /> <input type="text" name="fotonaam1" maxlength="80" size="90" value="<?php print $afbeeldingalttekst1; ?>" /><br /> <?php // variabelen die voorkomen in de include een waarde meegeven $afbeelding = "afbeelding1"; $afbeeldingnaam = "winkel.jpg"; $afbeeldingenplek = "../afbeeldingen/"; $hoogte = 200; $breedte = 200; // Als er een nieuwe foto is verstuurd en het is een jpg-afbeelding: verkleinen en naar de aangegeven directory verplaatsen include("inc.losseafbeeldingenuploaden.php"); ?> <br /> <input type="submit" value="Opslaan" /><br />(Bij het versturen van grote afbeeldingen kan het opslaan lang duren.) </form> |
..en de include die de afbeelding verwerkt (alleen relevante code):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
| // bekijk of er iets is geupload if(isset($_FILES[$afbeelding])) { // bekijk of het een jpg-bestand is dat is geupload if ($_FILES[$afbeelding]['type'] == "image/jpeg"){ copy ($_FILES[$afbeelding]['tmp_name'], $afbeeldingenplek.$_FILES[$afbeelding]['name']) // Gaat er iets mis? Sterf! Sterf, zeg ik je! or die ("Er ging iets mis op de server."); // hele lap code die de afbeelding verwerkt, vorige afbeelding verwijdert en de nieuwe hernoemt naar de juiste naam |
Iedereen kan gelijk hebben, allemaal tegelijk. Dat heb je met quantum.