Goedemorgen allen,

Ik heb een stukje in mijn ajax.php staan maar ik zou graag meerdere foto's tegelijk willen toevoegen.


if ($_SESSION['role'] == 'user'  ){
			$_SESSION['profile_id'] = $f_id ;
		}
		
		$allowedExts = array("gif", "jpeg", "jpg", "png");
		if (isset($_FILES["ppicture"]) ){

		$extension = end(explode(".", $_FILES["ppicture"]["name"]));
	
		if ((($_FILES["ppicture"]["type"] == "image/gif")|| ($_FILES["ppicture"]["type"] == "image/jpeg")|| ($_FILES["ppicture"]["type"] == "image/jpg")|| ($_FILES["ppicture"]["type"] == "image/pjpeg")|| ($_FILES["ppicture"]["type"] == "image/x-png")|| ($_FILES["ppicture"]["type"] == "image/png"))&& ($_FILES["ppicture"]["size"] < 2000000)&& in_array($extension, $allowedExts))
		{
			if ($_FILES["ppicture"]["error"] > 0){
			$r = array('status'=> 'error', 'text'=>"fout: " . $_FILES["file"]["error"]);
			debug($r,config::debug);
			}else{
				$source_path = $_FILES['ppicture']['tmp_name'];
				$image2 = create_image($source_path, $f_id.'_150x150_0.jpg', 150, 150);
				
			
				if ($image2 !==''){
					$db->query("UPDATE user_profiles set profile_image = '".$image2 ."' where profile_id='".$f_id."' ");
					$image3 = create_image($source_path, $f_id.'_300x300_0.jpg', 300, 300);
					move_uploaded_file($source_path,'images/'.$f_id.'_original_0.jpg');
					$image = $image3 ;
				
				}
				
			}
  		}else{
			//echo $_FILES["ppicture"]["type"].$_FILES["ppicture"]["size"]  ;
			$r = array('status'=> 'error', 'text'=>$_t['wrong_format']);
			debug($r,config::debug);
 		}

		}
		$r = array('status'=> 'success', 'text'=>$_t['profile_is_created'] , 'pp'=>'<img src="'.config::site_url.'controller/'.$image.'" alt="">','id'=>$f_id );


Dit is wat er in ajax staat en dit op moment in mijn gewone bestand:


<input type="hidden" id="profile_id2" name="profile_id2" value="<?php echo $profile_id; ?>" >
    <input id="ppicture" name="ppicture"   class="input-file" type="file">
	<p class="help-block"><?php echo $trns['limit_foto']; ?></p>
  <button id="save" name="save" class="btn btn-primary ajax"><?php echo $trns['upload']; ?></button>


Nu weet ik dat ik in principe regel


	<input id="ppicture2" name="ppicture2"   class="input-file" type="file">

zou kunnen bijvoegen enkel moet ik dan alles wat in ajax staat ook omzetten naar ppicture2?
Als je dingen dynamisch wilt opzetten is het misschien ook handiger dat je van hard coding via id's afstapt.

Deze code lijkt mij ook nog eens knetter onveilig. Waarom zit er een user id in een form ($f_id?) en waarom stop je deze variabele terug in de sessie?? Als iemand op een of andere manier $f_id kan wijzigen, houdt dit dan ook in dat je effectief van user kan schakelen? Dit kan toch nooit de bedoeling zijn?!
Het script is zo gekocht volledig zoals het nu is, de beveiliging moet inderdaad sterk aangepast worden dat ben ik helemaal met je eens, echter ben ik eerst proberen alles te maken zodat het gewoon even werkt voor nu, dit zal ook niet online draaien voor het allemaal goed klaar is maar ik kom er gewoon niet uit om meerdere foto's tegelijk te uploaden vandaar dat ik het ook via deze weg probeer te vragen.

Wat Adoptive aangeeft is mogelijk lijkt me maar niet om hier iets bij samen te voegen en zijn script werkt met het plaatsen van foto's in een mapje, de foto's gaan wat dat betreft al goed enkel kan ik er nu maar 1 per keer uploaden en dat wil ik bijvoorbeeld naar 5 per keer hebben.
Als je een applicatie/stuk functionaliteit vergelijkt met een huis, dan is veiligheid niet het dak wat je er als laatste opzet, maar deze zouden de pijlers/steunpilaren van het huis moeten vormen.

Anyhow, als je dan toch van AJAX gebruik maakt, waarom maak je dan niet zo'n "background upload" ding, op een soortgelijke wijze als je attachments kunt toevoegen in een Gmail e-mailbericht, met zo'n voortgangsindicator ofzo.

Er zijn ook andere vormen denkbaar, maar als je AJAX gebruikt dan is er in principe geen verplichting (meer) om eerst alle bestanden te selecteren, en dan alles achter elkaar te uploaden, omdat dit toch in de achtergrond plaatsvindt.

Het voorbeeld van @Adoptive illustreert in ieder geval hoe je een en ander dynamisch(er) kunt opzetten. De crux hierbij is dat je array-haken ( [] ) gebruikt in de waarden van de name-eigenschap. Dit hield volgens mij vervolgens wel in dat de structuur van het $_FILES array enigszins verandert.

Overigens staat er aan het einde van dat artikel ook een linkje naar een (opzet van een) artikel over uploads via AJAX.

Reageren