chmod van uploads

Status
Niet open voor verdere reacties.

DiederikvH

Gebruiker
Lid geworden
10 nov 2002
Berichten
437
Dit is een deel van een script waarbij pestanden kunnen worden geupload. Het probleem is echter dat de geuploade bestanden een chmod 600 krijgen. En dat is nogal vervelend... Iemand een idee waar het fout zit? Dit is het stukje code:
PHP:
else if ($action == "upload_prompt" && $allow_upload && access_check($cookie_username, $cookie_password))
{
 print "<a href='$PHP_SELF?path=".htmlentities(rawurlencode($path))."'>.:Terug:.</a><br>";
 print "<form action='$PHP_SELF?action=upload' method=post enctype=multipart/form-data>";
 print "De bestanden worden geplaats in: <font color='#FF0000'>".htmlentities($home_dir.$path)."</font><br>";
 print "Selecteer de bestanden die je wilt uploaden:<br><br>";
 print "<table>";
  print "<tr><td>Bestand 1:</td><td><input type=file name=upload[] size=30></td></tr>";
  print "<tr><td>Bestand 2:</td><td><input type=file name=upload[] size=30></td></tr>";
  print "<tr><td>Bestand 3:</td><td><input type=file name=upload[] size=30></td></tr>";
  print "<tr><td>Bestand 4:</td><td><input type=file name=upload[] size=30></td></tr>";
 print "</table>";
 print "<input type=submit value=Uploaden><input type=hidden name=path value='".htmlentities(rawurlencode($path))."'>";
 print "</form>";
}
else if ($action == "upload" && $allow_upload && access_check($cookie_username, $cookie_password))
{
 $failed = false;
 $path = stripslashes(rawurldecode($path));

 print "<a href='$PHP_SELF?path=".htmlentities(rawurlencode($path))."'>.:Terug:.</a><br><br>";
 print "Bezig met uploaden...<br><br>";

 print "<table cellspacing=0 cellpadding=0>";
 for($i=0;$i<=3;$i++)
 {
  if (@move_uploaded_file($_FILES['upload']['tmp_name'][$i], $home_dir.$path.$_FILES['upload']['name'][$i]))
   print "<tr><td width='250'>Uploading ".$_FILES['upload']['name'][$i]."...</td><td width='50' align='center'>[<font color='#009900'>OK!</font>]</td></tr>";
  else if ($_FILES['upload']['name'][$i])
  {
   print "<tr><td width='250'>Uploading ".$_FILES['upload']['name'][$i]."...</td><td width='50' align='center'>[<font color='#CC0000'>ERROR!</font>]</td></tr>";
  $failed = true;
  }
 }
 print "</table><br>";

 if ($failed)
  print "<font color='#CC0000'>Sommige bestanden zijn niet gelukt.</font>";
 else
  print "<font color='#009900'>Alle bestanden zijn succesvol geupload!</font>";
}
Alvast bedankt!
 
Ik had eigenlijk stiekem gehoopt dat iemand me zou helpen om die er op de juiste manier tussen te krijgen... :eek:
 
Volgens mij moet je dat gewoon na het uploaden van je bestanden ertussen zetten, dus na:

PHP:
if (@move_uploaded_file($_FILES['upload']['tmp_name'][$i], $home_dir.$path.$_FILES['upload']['name'][$i]))
   print "<tr><td width='250'>Uploading ".$_FILES['upload']['name'][$i]."...</td><td width='50' align='center'>[<font color='#009900'>OK!</font>]</td></tr>";
zet je chmod($_FILES['upload']['name']['i'], 0rechten);

Ik weet niet of het helemaal klopt, maar volgens mij moet dit het zo ongeveer zijn.
 
Geplaatst door JJK
Ik weet niet of het helemaal klopt, maar volgens mij moet dit het zo ongeveer zijn.
Mwoa, zoiets wel :)
Eerst uploaden, daarna chmodden. Uiteraard moet 't bestand waarmee je de chmod() functie wil uitvoeren wel rechten hebben om de functie toe te passen.

@JJK: Kun je die
Code:
<b>JJK<b>
in je handtekening ff veranderen in
Code:
<b>JJK</b>
? ;)
 
Die rechten waren er wel hoor. En het lukt op deze manier:

PHP:
 for($i=0;$i<=3;$i++)
 {
  if (@move_uploaded_file($_FILES['upload']['tmp_name'][$i], $home_dir.$path.$_FILES['upload']['name'][$i]))
   print "<tr><td width='250'>Uploading ".$_FILES['upload']['name'][$i]."...</td><td width='50' align='center'>[<font color='#009900'>OK!</font>]</td></tr>";
  else if ($_FILES['upload']['name'][$i])
  {
   print "<tr><td width='250'>Uploading ".$_FILES['upload']['name'][$i]."...</td><td width='50' align='center'>[<font color='#CC0000'>ERROR!</font>]</td></tr>";
  $failed = true;
  }
 chmod($_FILES['upload']['name'][$i], 0644); 
 }
Er is wel nog een foutmelding...
  • Warning: chmod(): No such file or directory in directory op de server/index.php on line 262
Drie keer als ik maar één bestand upload, twee keer als ik twee terzelfdertijd upload, etc... Misschien moet ik dat gewoon oplossen door maar één bestant per keer te laten uploaden. Tenzij hier iemand een suggestie heeft... Of een verse fout ziet.
 
Je upload 't bestand naar $home_dir.$path, als je die variabelen ook ff in chmod() zou proppen, dan zou 't moeten werken ;)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan