Form submit probleem met file,hidden inputs, validate

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hans De Ridder

Hans De Ridder

20/10/2017 14:06:10
Quote Anchor link
Ik heb een probleem met het submitten van een form.
Het definitieve checken gebeurt in PHP.
Maar om te voorkomen dat een file onnodig temp wordt opgeslagen
validate ik de form ook in javascript.

De procedure is al volgt:

1 - een bestand wordt gekozen
2 - (eventueel tekst en) bestand worden gecheckt.
3 - bij oke wordt de 'submitknop' getoond.
4 - versturen

Wanneer ik alles de eerste keer juist heb werkt alles door naar PHP.
En wordt het bestand opgeslagen.

Is er wat verkeerd dan komt vanuit javascript de melding wat er verkeerd is.
Maar dan wordt de vorige juiste submit herhaald, en weer opnieuw opgeslagen.

Ik heb al geprobeerd met aparte input file reset, met form.reset(), met location.reload();
Ook wat geprobeerd met onsubmit = "return showname()".
Maar krijg het niet voor elkaar.
De uitwerking is dan wat anders...
Maar in ieder geval niet correct.

Hier wat stukjes uit de javascript en HTML.
Myvar is de waarde voor oke(1) of fout(0);

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
<form id = "vorm" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="hidden" name="MAX_FILE_SIZE" value="4000000">
<div class="upload" id="upload"><input name="userfile"  id = "userfile"  type="file" style="text-align:left;" onchange = "showname()"></div>
<div class="uploadA"><input type="image" id="process" name="process" type="submit" value= "submit" src="button2.png" border="0"></div>
</form>

<script>
var myVar = 1;

function showname () {
.
.
.
.
.
if (myVar == 0)
{
//document.getElementById("userfile").value = null;
//vorm.reset();
//location.reload();
}
}


Toevoeging op 20/10/2017 14:48:20:

Ik denk dat het opgelost is...
Myvar weg en in die plek: return false;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<div class="upload" id="upload"><input name="userfile"  id = "userfile"  type="file" style="text-align:left;" onchange = "return showname()"></div>
 
PHP hulp

PHP hulp

30/11/2024 01:43:00
 
Hans De Ridder

Hans De Ridder

21/10/2017 15:50:01
Quote Anchor link
De submit met image werkt niet in IE11 en Edge.
Ook al geprobeerd om image in de button te zetten bij CSS.
Maar werkte ook niet.

Chrome en Safari geven geen probleem.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<div class="uploadA">
<input type="image" id="process" value= "submit" name="process" src="button2.png" border="0">
</div>
Gewijzigd op 21/10/2017 15:50:45 door Hans De Ridder
 
Thomas van den Heuvel

Thomas van den Heuvel

21/10/2017 18:46:08
Quote Anchor link
Even voor de duidelijkheid, er wordt niets "onnodig" opgeslagen tenzij jouw code dit zelf doet. Bestanden worden standaard geupload naar een tijdelijke locatie die op een gegeven moment wordt geleegd. Alleen tijdens de uitvoering van code heb je toegang tot, of liever gezegd, weet je van het bestaan van, geuploade bestanden. Deze informatie trek je uit $_FILES. Met behulp van de informatie in deze superglobal verplaats je de bestanden naar een andere, permanente(re) locatie. Na afloop van de uitvoering van je code bestaat $_FILES niet meer, dus de "link" (verwijzingen naar de tijdelijke bestandsnamen op de tijdelijke locatie) naar de geuploade bestanden zijn dan verloren/niet langer bekend waardoor deze dan dus praktisch gezien niet meer "bestaan".

Als het foutloos invullen van het formulier zo'n heikel punt is zou je de bestanden apart kunnen uploaden (in een apart formulier - zie voor inspiratie bijvoorbeeld hoe je in gmail attachments kunt toevoegen), maar dit houdt dan ook in dat je het verwijderen (naast het verplaatsen naar een permanente(re) locatie) van bestanden zelf zult moeten regelen.

EDIT: het is dus in principe geen probleem dat er bestanden worden geupload, deze worden normaal gesproken vanzelf opgeschoond.
Gewijzigd op 21/10/2017 18:48:05 door Thomas van den Heuvel
 
Hans De Ridder

Hans De Ridder

21/10/2017 21:39:40
Quote Anchor link
Bedanktvoor je reactie.
Het probleem is nu opgelost...
Toch via button. En in CSS een image.
Toen werkte alles.
Wat betreft de tijdelijke opslag.
Ik praat over validate via javascript (clientside).
En als er fouten in zitten wordt er niet gesubmit.
Dus niet doorgestuurd naar PHP.
Dan wordt er toch niks opgeslagen?

Is alles oke dan wordt alles doorgestuurd naar de PHP.
En wederom gevalideerd.
Gewijzigd op 21/10/2017 21:40:59 door Hans De Ridder
 
Thomas van den Heuvel

Thomas van den Heuvel

22/10/2017 19:40:28
Quote Anchor link
Als er niets verstuurd wordt, wordt er ook niets opgeslagen nee.
 



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.