• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل در آپلود فایل
#1
سلام
وقتی میخوام با این کد فایل آپلود کنم این پیغام را بهم میدهد فایل پیوست کردم
کد پی‌اچ‌پی:
$hostname_con1 "127.0.8/";
$database_con1 "image";
$username_con1 "root";
$password_con1 "";
$size=90000000;
$iwidth=400;
$iheight=200;
if((isset(
$_FILES['image'])&&($_FILES['image']['size']>0)))
{
$imgsize=$_FILES['image']['size'];
$imgtype=$_FILES['image']['type'];
$tmpnam=$_FILES['image']['tmp'];
if(
$imgsize>$size)
exit(
"error:large file size");
$getimgsize=getimagesize($tmpnam);
if(!
$getimgsize)
exit(
"error:invalid image file.");
list(
$width,$height)=$getimgsize;
if((
$width>$iwidth)||($height>$iheight))
exit(
"maximum width and height");
$fp=fopen($tmpnam,'r');
$imagename=fread($fp,filesize($tmpnam));
if(!
get_magic_quotes_gpc())
$imagename=addslashes($imagename);
fclose($fp);
$date=date("y-m-d h:i:s");
$con1 mysql_pconnect($hostname_con1$username_con1$password_con1) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db("$database_con1",$con1);
$query="insert into image(imgtype,img,imgsize,imgdate)values('$imgtype','$imagename','$imgsize','$date')";
mysql_query($query);
echo 
"فایل به خوبی آپلود شد.";     
}
?>[/align]
پیغام خطایی که بهم میده
[align=left]Notice: Undefined index: tmp in D:\xampp\htdocs\uplo\uplo.php on line 21

Warning: getimagesize(): Filename cannot be empty in D:\xampp\htdocs\uplo\uplo.php on line 24 


فایل‌های پیوست
.php   uplo.php (اندازه 1.51 KB / تعداد دانلود: 2)
  پاسخ
تشکر شده توسط :
#2
برای دیباگ بهتر بایستی $_FILES رو بیرون با var_dump چاپ کنی و محتویاتش رو ببینی چیاس:

برای مثال می نویسی:

var_dump($_FILES['image'])

و ببینی چیزی به نام temp ویا tmp و ... داره یا نه و اصلا فایل توسط فرم ارسال شده است یا نه
جامعه مجازی پیمانکاران و کارفرمایان
www.beestak.com
  پاسخ
تشکر شده توسط : husphp
#3
با سلام و خسته نباشید
من به عنوان یک هکر به شما توصیه می کنم که هیچ وقت عکس ها رو در درون دیتابیس ذخیره نکنید
در اعظاش می تونید از پرمیشن ها برای ورود دانلود یا آپلود فایل استفاده کنید که خیلی بهینه تر هستند
کد شما هم یک مقداری از بهینه بودن خارج هست
  پاسخ
تشکر شده توسط : husphp
#4
با سلام از اینکه به مشکل من پاسخ دادید متشکرم ببخشید چون من تازه کارم میشه یک مثال عملی استفاده از پرمیشن ها بزنید ممنون میشم.

دوستان نظرتون در مورد این کد چیه میخوام از نظر امنیتی هم مورد کاوش قرار بگیره
کد پی‌اچ‌پی:
$pic=($_FILES['image']['name']);
$target="image/";
$target=$target.basename($_FILES['image']['name']);
$image_size=$_FILES['image']['size'];
$image_type=$_FILES['image']['type'];
$path="image/".$target;
mysql_connect($hostname_coon,$username_coon,$password_coon)or die(mysql_error());
    
mysql_select_db($database_coon)or die(mysql_error());
    
mysql_query("insert into ima(photo,datetim) values('".$pic."','".date('y:m:d h:i:s')."')");
    echo 
"your file has been uploded in database.";
$ok=1;
if(
$image_size>1000000)
{
    echo
"your file is too large.<br>";
    
$ok=0;
}
if(
$image_type=($_FILES['image']['type']==".php"))
{echo 
"no,php files <br>";
$ok=0;}
if(
$ok==0)
{ echo 
"sorry your file was not uploaded";}
else
{
    if(
move_uploaded_file($_FILES['image']['tmp_name'],$target))
    {echo 
"the file".basename($_FILES['image']['name'])."has been uploded.";}
    else
    {echo 
"sory,there was a problom uploding your file.";}
    
}
?>
  پاسخ
تشکر شده توسط : defence
#5
داداش سایتت و می خوای روی هاست بیاری بالا یا روی سرور ؟
تا یک نمونه مثال بزنم
اطلاعات بیشتر در مورد مجوز ها می تونی به این لینک سر بزنی و اون ها رو بخونی
یک نمونه البته نمونه وردپرسیش
---
از لحاظ امنیتی هم باید محدودیت اپلود بزاری
هکر برای این که بتونه ترگت مورد نظرش و بزنه به راحتی می تونه بیاد و یک فایل 100 گیگی اپلود کنه و هاستت بترکه و...
بهتره محدودیت اپلود در سمت کلاینت بزاری
الان بیشتر سایت ها هم محدودیت آپلود میزارن
http://uplooder.net/
یک نمونش اینه که می تونی نگاه کنی

خوبی دیتابیس این هست که اطلاعات رو برات مرتب و جمع و جور می کنه ولی ریختن عکس ها توی دیتابیس باعث می شه که دیتابیس رو سنگین و سرعت کوئری هایی که از دیتابیس می گیری و پایین میاری
مثلا اگه بخوای عکس پروفایل یک نفر و از دیتابیس بخونی و حجمش 2 مگ باشه وقت دیتابیس و علکی یک چند دقیقه یا ثانیه ای می گیره که سرور باید در میلی ثانیه پاسخ بده در اعظاش می تونی یک پوشه درست کنی به ازای هر کاربر حدید که ثبت نام می کنه بعد عکس هاش و تو پوشه خود آپلود کنی این جوری هم از لحاظ امنیتی بهتره

---
این که بهینه ترین روش نگه داری عکس ها چگونه هست و این ها یک مقاله هست که می تونی با یک سرچ تو گوگل به هدفت برسی

موفق و پیروز باشی

زیاده روی هم زیاد کردی
اگر توابع اپلود فایل رو در یک بنویسی و مستند سازیش هم بکنی بعد ها می تونی چیزی خواستی رو بهش اضافه کنی

یک مبحث دیگه هم هست داداش و اون مبحث هم اینه که سرعت با امنیت رابطه عکس داره
هر چی سرعت بره بالا امنیت هم به همون نسبت میاد پایین و برعکس
سعی کن زیادی امنیت و سرعت در یک کفه ترازو قرار بدی
  پاسخ
تشکر شده توسط : husphp
#6
از اینکه وقت گذاشتی به سوالاتم جواب دادی ممنونم
میخوام سایتم رو روی سرور بیارم بالا در مورد آپلود عکس داخل دیتابیس جریان از این قراره که در حال طراحی سایتی هستم که کاربر بتونه عکسهاش برای آگهی در سایت بذاره روشی هم که به نظرم رسید استفاده از دیتابس برای این کار بهتره که هم عکسهای کاربر رو بگیره و هم سایر اطلاعاتش در ضمن عکسها به صورت محدود و کنترل شده میذارم آپلود بشه.
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان