Mért nem tudja átmásolni a képet (php)?
A hibaüzenet: Warning: copy(includes/avatar/1371067586.jpg) [function.copy]: failed to open stream: Permission denied in ********/includes/functions/avatar.php on line 63
A kód:
<?php
define ("MAX_SIZE","10024");
function getExtension($str) {
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}
if(isset($_POST['Submit']))
{
$image=$_FILES['image']['name'];
if ($image)
{
$filename = stripslashes($_FILES['image']['name']);
$extension = getExtension($filename);
$extension = strtolower($extension);
if (($extension != "jpg") && ($extension != "jpeg") && ($extension !=
"png") && ($extension != "gif"))
{
echo '<h1>Unknown extension!</h1>';
$errors=1;
}
else
{
$size=filesize($_FILES['image']['tmp_name']);
if ($size > MAX_SIZE*1024)
{
echo '<h1>You have exceeded the size limit!</h1>';
$errors=1;
}
$image_name=time().'.'.$extension;
$newname="includes/avatar/".$image_name;
$copied = copy($_FILES['image']['tmp_name'], $newname);
if (!$copied)
{
echo '<h1>Copy unsuccessfull!</h1>';
$errors=1;
}}}}
if(isset($_POST['Submit']) && !$errors)
{
$sql = "UPDATE `b1_users` SET `avatar` = "".$newname."" WHERE `username` = "".$_SESSION['user'].""";
$res = mysql_query($sql);
echo "<h1>File Uploaded Successfully!</h1>";
}
?>
<form name="newad" method="post" enctype="multipart/form-data"
action="">
<table>
<tr><td><input type="file" name="image"></td></tr>
<tr><td><input name="Submit" type="submit" value="Upload image">
</td></tr>
</table>
</form>
Egyrészt a kiterjesztés alapján meghatározni a fájl típusát nem gyenge biztonsági kockázatot jelent. Használd a getimagesize -t a kép valós (mime) típusának lekérdezésére. Egy avatar esetében pedig nem a képfájl hossza, hanem kiterjedése, amit korlátozni kellene.
A szerver TEMP könyvtárához nincs jogosultságod hozzáférni, így használd a copy helyett a move_uploaded_file -t.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!