Foto uploaden en read permissies zetten
blindact - 31/05/2005 16:58
Nieuw lid
Hallo
Ik heb een uploadscriptje die probleemloos werkt om een jpg file te uploaden naar mijn map uploads.
Maar iedere jpg dat ik upload krijgt geen read en write rechten.
Ik moet dat handmatig instellen voor ik ze op mijn webruimte kan bekijken.
Kan ik in mijn script verwerken dat het geuploade bestand direct de read rechten krijgt?
Dank
12 antwoorden
Gesponsorde links
Legolas - 31/05/2005 16:59
Onbekend
Met de functie chmod()
Zie het overzicht
gijs - 31/05/2005 17:19
HTML beginner
Met ws_ftp pro kan het ook, dan doe je rechtermuisknop op het bestand en dan 'properties', daar kan je het ook instellen.
nemesiskoen - 31/05/2005 17:21
PHP expert
@gijs... lees dit eens:
Citaat:
Ik moet dat handmatig instellen voor ik ze op mijn webruimte kan bekijken.
Dat is precies wat jij beschrijft. Hij wil dit voorkomen en jij zegt dat hij het ook zo kan doen:s!!
blindact - 31/05/2005 17:28
Nieuw lid
Met de functie chmod wil het niet werken. Het is op een IIS server met windows 2003
Dit is mijn script:
<?php
include "config.php";
?>
<html>
<head>
<title>Showroom aanvullen</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body bgcolor="#FFFFFF" text="<?php echo "$font" ?>" link="<?php echo "$font" ?>" vlink="<?php echo "$font" ?>" alink="<?php echo "$font" ?>">
<div align="center">
<form method="post" action="<?php $PHP_SELF ?>" enctype="multipart/form-data">
<table width="80%" border="0" cellpadding="0" cellspacing="5" background="images/bg.jpg">
<tr>
<td><div align="center">
<table width="100%" border="0" cellpadding="0" cellspacing="5" bgcolor="336699">
<tr>
<td><div align="center"><strong><font color="#FFFFFF" size="3" face="Arial, Helvetica, sans-serif">::Artikel
Aanvullen::</font></strong></div></td>
</tr>
</table>
</div></td>
</tr>
<tr>
<td valign="top" background="images/bg.jpg"> <div align="left"></div>
<table width="100%" height="217" border="0" cellpadding="0" cellspacing="5">
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="5">
<tr>
<td width="27%">Artikel</td>
<td width="73%"><select name="artikel">
<option>kies</option>
<option>kledij</option>
<option>produkten</option>
<option>geboortelijsten</option>
</select></td>
</tr>
<tr>
<td>Titel</td>
<td><input type="text" name="titel"></td>
</tr>
<tr>
<td>Omschrijving</td>
<td><textarea name="omschrijving" cols="50" rows="6" id="omschrijving"></textarea></td>
</tr>
<tr>
<td>Prijs:</td>
<td><input type="text" name="prijs"></td>
</tr>
<tr>
<td>Foto</td>
<td><input type="file" name="foto"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" value="Toevoegen"></td>
</tr>
</table></td>
</tr>
</table></form>
<?
if ($_POST ['submit'])
{
$artikel= $_POST['artikel'];
$omschrijving= $_POST['omschrijving'];
}
if($artikel== "kies") $error="Je moet het artikel selecteren";
elseif($omschrijving== "") $error="Je moet de omschrijving invullen!";
if ($error== "")
{
//foto uploaden
$maxgrootte = 250; //grootte in kb's
$uploadmap ="../uploads/";
$newmaxgrootte = $maxgrootte*1024;
if(is_uploaded_file($foto)) { // is het bestand eengeüpload bestand?
$bestand_name = $_FILES['foto']['name']; //naamvan het geuploade bestand
$bestand_type = $_FILES['foto']['type'];
//MIME-header van het geuploade bestand (bijvoorbeeldimage/pjpeg)
$bestand_size = $_FILES['foto']['size'];
//grootte in bytes van het geuploade bestand
if ($bestand_size > $newmaxgrootte){
$tegroot = round($bestand_size/1024);
echo "Het bestand is groter dan ".$maxgrootte."kb
(namelijk ".$tegroot."kb), wat niet toegstaan is.<br>";
exit;
}
if (file_exists($uploadmap.$bestand_name)){
echo "Het bestand ".$bestand_name." bestaat al!<br>Hernoem het bestand op je harde schijf en probeer dan nog eens te uploaden.<br>";
exit;
}
move_uploaded_file($foto,$uploadmap.$bestand_name);
$nwbestandgrootte = round($bestand_size/1024);
echo "Bestand ".$bestand_name." van het type ".$bestand_type." en ".$nwbestandgrootte."KB is met succes ge-upload!<br>";
}
else {
echo "Er is geen foto upgeload.<br>";
}
//einde foto uploaden
$query = "INSERT INTO babyshop (artikel,titel,omschrijving,prijs,foto) VALUES ('$artikel','$titel','$omschrijving','$prijs','$bestand_name')";
mysql_query($query) or die (mysql_error());
}
?>
</div>
</body>
</html>
<?php
include "config.php" ;
?>
<html>
<head>
<title>Showroom aanvullen</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body bgcolor="#FFFFFF" text="
<?php echo "$font " ?> " link="
<?php echo "$font " ?> " vlink="
<?php echo "$font " ?> " alink="
<?php echo "$font " ?> ">
<div align="center">
<form method="post" action="<?php $PHP_SELF ?> " enctype="multipart/form-data">
<table width="80%" border="0" cellpadding="0" cellspacing="5" background="images/bg.jpg">
<tr>
<td><div align="center">
<table width="100%" border="0" cellpadding="0" cellspacing="5" bgcolor="336699">
<tr>
<td><div align="center"><strong><font color="#FFFFFF" size="3" face="Arial, Helvetica, sans-serif">::Artikel
Aanvullen::</font></strong></div></td>
</tr>
</table>
</div></td>
</tr>
<tr>
<td valign="top" background="images/bg.jpg"> <div align="left"></div>
<table width="100%" height="217" border="0" cellpadding="0" cellspacing="5">
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="5">
<tr>
<td width="27%">Artikel</td>
<td width="73%"><select name="artikel">
<option>kies</option>
<option>kledij</option>
<option>produkten</option>
<option>geboortelijsten</option>
</select></td>
</tr>
<tr>
<td>Titel</td>
<td><input type="text" name="titel"></td>
</tr>
<tr>
<td>Omschrijving</td>
<td><textarea name="omschrijving" cols="50" rows="6" id="omschrijving"></textarea></td>
</tr>
<tr>
<td>Prijs:</td>
<td><input type="text" name="prijs"></td>
</tr>
<tr>
<td>Foto</td>
<td><input type="file" name="foto"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" value="Toevoegen"></td>
</tr>
</table></td>
</tr>
</table></form>
<?
if ( $_POST [ 'submit' ] )
{
$artikel = $_POST [ 'artikel' ] ;
$omschrijving = $_POST [ 'omschrijving' ] ;
}
if ( $artikel == "kies" ) $error = "Je moet het artikel selecteren" ;
elseif ( $omschrijving == "" ) $error = "Je moet de omschrijving invullen!" ;
if ( $error == "" )
{
//foto uploaden
$maxgrootte = 250 ; //grootte in kb's
$uploadmap = "../uploads/" ;
$newmaxgrootte = $maxgrootte * 1024 ;
$bestand_name = $_FILES [ 'foto' ] [ 'name' ] ; //naamvan het geuploade bestand
$bestand_type = $_FILES [ 'foto' ] [ 'type' ] ;
//MIME-header van het geuploade bestand (bijvoorbeeldimage/pjpeg)
$bestand_size = $_FILES [ 'foto' ] [ 'size' ] ;
//grootte in bytes van het geuploade bestand
if ( $bestand_size > $newmaxgrootte ) {
$tegroot = round ( $bestand_size / 1024 ) ;
echo "Het bestand is groter dan " . $maxgrootte . "kb
(namelijk " . $tegroot . "kb), wat niet toegstaan is.<br>" ;
}
echo "Het bestand " . $bestand_name . " bestaat al!<br>Hernoem het bestand op je harde schijf en probeer dan nog eens te uploaden.<br>" ;
}
$nwbestandgrootte = round ( $bestand_size / 1024 ) ;
echo "Bestand " . $bestand_name . " van het type " . $bestand_type . " en " . $nwbestandgrootte . "KB is met succes ge-upload!<br>" ;
}
else {
echo "Er is geen foto upgeload.<br>" ;
}
//einde foto uploaden
$query = "INSERT INTO babyshop (artikel,titel,omschrijving,prijs,foto) VALUES ('$artikel ','$titel ','$omschrijving ','$prijs ','$bestand_name ')" ;
}
?>
</div>
</body>
</html>
Ontani - 31/05/2005 17:32 (laatste wijziging 31/05/2005 17:35)
-1
<?
$old_umask = umask(0);
chmod("filename", 0755);
?>
uitleg bij umask:
Citaat:
For example, umask = 0011 and permission = 0775
The inverse of 0011 = 0766
0775 AND 0766
= 111.111.101 AND 111.110.110
= 111.110.100
= 0764
blindact - 31/05/2005 20:31
Nieuw lid
En waar zou ik dat het beste plaatsen
ikkedikke - 31/05/2005 20:37
PHP expert
regel 111?
chmod($uploadmap.$bestand_name,0764); //0764: zoals ik uit die post van ontari begrijp
Ontani - 31/05/2005 21:17
-1
<?php
include "config.php";
?>
<html>
<head>
<title>Showroom aanvullen</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body bgcolor="#FFFFFF" text="<?php echo "$font" ?>" link="<?php echo "$font" ?>" vlink="<?php echo "$font" ?>" alink="<?php echo "$font" ?>">
<div align="center">
<form method="post" action="<?php $PHP_SELF ?>" enctype="multipart/form-data">
<table width="80%" border="0" cellpadding="0" cellspacing="5" background="images/bg.jpg">
<tr>
<td><div align="center">
<table width="100%" border="0" cellpadding="0" cellspacing="5" bgcolor="336699">
<tr>
<td><div align="center"><strong><font color="#FFFFFF" size="3" face="Arial, Helvetica, sans-serif">::Artikel
Aanvullen::</font></strong></div></td>
</tr>
</table>
</div></td>
</tr>
<tr>
<td valign="top" background="images/bg.jpg"> <div align="left"></div>
<table width="100%" height="217" border="0" cellpadding="0" cellspacing="5">
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="5">
<tr>
<td width="27%">Artikel</td>
<td width="73%"><select name="artikel">
<option>kies</option>
<option>kledij</option>
<option>produkten</option>
<option>geboortelijsten</option>
</select></td>
</tr>
<tr>
<td>Titel</td>
<td><input type="text" name="titel"></td>
</tr>
<tr>
<td>Omschrijving</td>
<td><textarea name="omschrijving" cols="50" rows="6" id="omschrijving"></textarea></td>
</tr>
<tr>
<td>Prijs:</td>
<td><input type="text" name="prijs"></td>
</tr>
<tr>
<td>Foto</td>
<td><input type="file" name="foto"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" value="Toevoegen"></td>
</tr>
</table></td>
</tr>
</table></form>
<?
if ($_POST ['submit'])
{
$artikel= $_POST['artikel'];
$omschrijving= $_POST['omschrijving'];
}
if($artikel== "kies") $error="Je moet het artikel selecteren";
elseif($omschrijving== "") $error="Je moet de omschrijving invullen!";
if ($error== "")
{
//foto uploaden
$maxgrootte = 250; //grootte in kb's
$uploadmap ="../uploads/";
$newmaxgrootte = $maxgrootte*1024;
if(is_uploaded_file($foto)) { // is het bestand eengeüpload bestand?
$bestand_name = $_FILES['foto']['name']; //naamvan het geuploade bestand
$bestand_type = $_FILES['foto']['type'];
//MIME-header van het geuploade bestand (bijvoorbeeldimage/pjpeg)
$bestand_size = $_FILES['foto']['size'];
//grootte in bytes van het geuploade bestand
if ($bestand_size > $newmaxgrootte){
$tegroot = round($bestand_size/1024);
echo "Het bestand is groter dan ".$maxgrootte."kb
(namelijk ".$tegroot."kb), wat niet toegstaan is.<br>";
exit;
}
if (file_exists($uploadmap.$bestand_name)){
echo "Het bestand ".$bestand_name." bestaat al!<br>Hernoem het bestand op je harde schijf en probeer dan nog eens te uploaden.<br>";
exit;
}
move_uploaded_file($foto,$uploadmap.$bestand_name);
$nwbestandgrootte = round($bestand_size/1024);
echo "Bestand ".$bestand_name." van het type ".$bestand_type." en ".$nwbestandgrootte."KB is met succes ge-upload!<br>";
$old_umask = umask(0);
chmod($uploadmap.$bestand_name, 0755);
}
else {
echo "Er is geen foto upgeload.<br>";
}
//einde foto uploaden
$query = "INSERT INTO babyshop (artikel,titel,omschrijving,prijs,foto) VALUES ('$artikel','$titel','$omschrijving','$prijs','$bestand_name')";
mysql_query($query) or die (mysql_error());
}
?>
</div>
</body>
</html>
<?php
include "config.php" ;
?>
<html>
<head>
<title>Showroom aanvullen</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body bgcolor="#FFFFFF" text="
<?php echo "$font " ?> " link="
<?php echo "$font " ?> " vlink="
<?php echo "$font " ?> " alink="
<?php echo "$font " ?> ">
<div align="center">
<form method="post" action="<?php $PHP_SELF ?> " enctype="multipart/form-data">
<table width="80%" border="0" cellpadding="0" cellspacing="5" background="images/bg.jpg">
<tr>
<td><div align="center">
<table width="100%" border="0" cellpadding="0" cellspacing="5" bgcolor="336699">
<tr>
<td><div align="center"><strong><font color="#FFFFFF" size="3" face="Arial, Helvetica, sans-serif">::Artikel
Aanvullen::</font></strong></div></td>
</tr>
</table>
</div></td>
</tr>
<tr>
<td valign="top" background="images/bg.jpg"> <div align="left"></div>
<table width="100%" height="217" border="0" cellpadding="0" cellspacing="5">
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="5">
<tr>
<td width="27%">Artikel</td>
<td width="73%"><select name="artikel">
<option>kies</option>
<option>kledij</option>
<option>produkten</option>
<option>geboortelijsten</option>
</select></td>
</tr>
<tr>
<td>Titel</td>
<td><input type="text" name="titel"></td>
</tr>
<tr>
<td>Omschrijving</td>
<td><textarea name="omschrijving" cols="50" rows="6" id="omschrijving"></textarea></td>
</tr>
<tr>
<td>Prijs:</td>
<td><input type="text" name="prijs"></td>
</tr>
<tr>
<td>Foto</td>
<td><input type="file" name="foto"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" value="Toevoegen"></td>
</tr>
</table></td>
</tr>
</table></form>
<?
if ( $_POST [ 'submit' ] )
{
$artikel = $_POST [ 'artikel' ] ;
$omschrijving = $_POST [ 'omschrijving' ] ;
}
if ( $artikel == "kies" ) $error = "Je moet het artikel selecteren" ;
elseif ( $omschrijving == "" ) $error = "Je moet de omschrijving invullen!" ;
if ( $error == "" )
{
//foto uploaden
$maxgrootte = 250 ; //grootte in kb's
$uploadmap = "../uploads/" ;
$newmaxgrootte = $maxgrootte * 1024 ;
$bestand_name = $_FILES [ 'foto' ] [ 'name' ] ; //naamvan het geuploade bestand
$bestand_type = $_FILES [ 'foto' ] [ 'type' ] ;
//MIME-header van het geuploade bestand (bijvoorbeeldimage/pjpeg)
$bestand_size = $_FILES [ 'foto' ] [ 'size' ] ;
//grootte in bytes van het geuploade bestand
if ( $bestand_size > $newmaxgrootte ) {
$tegroot = round ( $bestand_size / 1024 ) ;
echo "Het bestand is groter dan " . $maxgrootte . "kb
(namelijk " . $tegroot . "kb), wat niet toegstaan is.<br>" ;
}
echo "Het bestand " . $bestand_name . " bestaat al!<br>Hernoem het bestand op je harde schijf en probeer dan nog eens te uploaden.<br>" ;
}
$nwbestandgrootte = round ( $bestand_size / 1024 ) ;
echo "Bestand " . $bestand_name . " van het type " . $bestand_type . " en " . $nwbestandgrootte . "KB is met succes ge-upload!<br>" ; chmod ( $uploadmap . $bestand_name , 0755 ) ;
}
else {
echo "Er is geen foto upgeload.<br>" ;
}
//einde foto uploaden
$query = "INSERT INTO babyshop (artikel,titel,omschrijving,prijs,foto) VALUES ('$artikel ','$titel ','$omschrijving ','$prijs ','$bestand_name ')" ;
}
?>
</div>
</body>
</html>
blindact - 31/05/2005 21:44
Nieuw lid
Dank u wel ,
nu marcheert het probleemloos.
Hoe komt het eigenlijk dat dit script op andere hosting van me werkt zonder die chmod erop?
xSc - 01/06/2005 10:21
Onbekend
Je doet, zo denk ik, iets fout. Een jpg hoef je niet te chmodden.
Laat met PHP (mkdir()) een directory maken.
Chmod (chmod()) de dir naar bijv. 0700.
Je hoeft de rechten dus nooit te wijzigen. Stel dat je via HTTP een bestand uploadt naar die map, dan is de gebruiker PHP.
Wanneer je geen read/write rechten hebt, houdt in dat de eigenaar van het bestand (de user, die het geupload heeft) anders is dan degene die het plaatje leest / overschrijft.
Gesponsorde links
Dit onderwerp is gesloten .