HamedR
کاربر عضو
سلام به همه دوستان
امروز میخوام بهتون یاد بدم که چطوری یه آپلود سنتر ساده با php بسازین.
سطح این آموزش مبتدی هست . و سعی شده طوری نوشته بشه که اونایی که تازه دارن php یاد میگیرین هم ازش سردربیارن.
سعی کردم تا اونجایی که امکان داره ساده توضیح بدم و از اصطلاحات تخصصی استفاده نکنم. دوستانی که یه کم کهنه کار هستن به بزرگی خودشون ببخشن.
خب بریم سراغ آموزش ،
برنامه هایی مورد نیز:
- ویرایشگر ساده متن مثل notepad++ (میتونین از نرم افزارهای طراحی وب مثل dreamweaver یا aptana studio و... هم استفاده کنید)
- یه برنامه وب سرور هم میخوام(نترسین همون لوکال هاست خودمون :دی). من از Xampp استفاده میکنم.
اول یه فایل با نام index.php باز کنین.
اینا رو توش کپی کنید. (اگه از نرم افزار های طراحی وب استفاده میکنین. بطور پیشفرض همونجا هستن. دیگه لازم نیست بنویسیدشون)
کد:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>آموزش ساخت آپلود سنتر ساده</title>
</head>
<body>
</body>
</html>
حالا کد زیر رو بین تگ head قرار بدین.
کد:
<link href="style.css" type="text/css" rel="stylesheet" />
از الان هرچی که قرار بنویسیم بین تگ body نوشته میشه.
یه div ایجاد میکنیم. من بهش id=”upload” هم دادم (واسه اینکه بعدا بهش استایل بدم)
یه تگ form باز میکنیم (اونایی که نمیدونن تگ form چیه و به چه در میخوره بهتره اول برن تگهای html رو یاد بگیرن).
> <form آدرس action رو وارد میکنیم(همون جاییه که فایل آپلود شده ما اونجا ارسال میشه. دقت کنین که پوشه نیستا ، یه فایل php که بعد از اینکه ما فایل رو آپلود کردیم ، اطلاعاتش اونجا به نمایش در میاد. مثلا میگه اسم فایل چیه ، حجمش چقدره و... (حالا میرسیم اونجا ، خودتون میبینید). اسمش رو گذاشتم up-file.php . شما هم بعد از اینکه اسم رو وارد کردین ، با همون نام یه فایل ایجاد کنید.(توی همون پوشه ای که index.php و style.css رو ساختین.)
method ارسالی رو هم گذاشتم روی post. (method نوع ارسال داده رو مشخص میکنه . get یا post .( مقدارهای ارسالی از طریق get در url نمایش داده میشه ، get یه سری محدودیتهایی هم داره .امنیت post بیشتر از get هست و.. بقیش رو خودتون برین تحقیق کنین ) (البته برای ساخت آپلودسنتر متد رو باید روی Post بزارین)
Enctype هم نوع داده ارسالی به سرور رو مشخص میکنه . چون میخوایم یه آپلود سنتر بسازیم باید بزاریمش روی multipart/form-data.
چیزی که توی این قسمت توضیح دادم
کد:
<form action="up-file.php" method="post" enctype="multipart/form-data" >
بعد از اون باید یه تگ input با type ، file باز کنیم که باهاش بتونیم فایلی رو که میخوایم آپلود رو از کامپیوتر انتخاب کنیم. سایز و اندازش هم بستگی به خودتون داره
مقدار Name رو حتما file بزارین.
مقدار Type هم file باید باشه. چون میخوایم فایل رو از کامپیوتر انتخاب کنیم.
این شکلی :
کد:
<input type="file" name="file" />
Value اسم دکمه رو مشخص میکنه . من اسمش رو گذاشتم : "آپلود کن" . (شما هم هرچی دلتون میخواد بزارین :دی)
اینطوری:
کد:
<input type="submit" name="submit" value="آپلود کن" />
کد:
<div id="upload">
<form action="up-file.php" method="post" enctype="multipart/form-data" >
<label id="label" for="file"> انتخاب مسیر: </label>
<input height="5px" size="30" name="file" type="file" id="file" /><br />
<input id="submit" type="submit" name="submit" value="آپلود کن" />
</form>
</div>
الان میریم فایل up-file.php رو باز میکنیم.
از این به بعد کار اصلیمون با php شروع میشه. (یه جوری گفتم خودمم ترسیدم !!! ولی ناراحت نباشین ، قبلا هم گفتم که سطح مبتدی ، زیاد سخت نیست)
بازم این کدها رو باید کپی ، پست کنین (امان از دست این کدها!!!) توی فایل up-file.php . (مثل index.php)
کد:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>فایل آپلود شد</title>
<link href="style.css" type="text/css" rel="stylesheet" />
</head>
<body>
</body>
</html>
متغیر رو با $ تعریف میکنن.
ما میخوایم با استفاده از متغیرها از نوشتن اضافی یه سری کدها جلوگیری کنیم.(یعنی برای هر کد یه متغیر تعریف میکنیم. بعد هر جا به اون کد نیاز داشتم از متغیر استفاده میکنیم. (جلوتر باهاش آشنا میشیم.)
دقت کنین که کدهای php باید بین <?php ?> قرار بگیرن.
اول از همه یه متغیر میسازیم با اسم : $file_error (این اسم دلخواه هستش. البته نام انتخابی باید طبق قوانین نام گذاری متغیر باشه. یعنی یه سری محدودیت هایی داره. اگه نمیدونین بهتره یه جستجوی بکنید.)
بریم متغیرمون رو بسازیم:
کد:
$file_error = $_FILES["file"]["error"];
با استفاده از $_FILES میتونیم فایل هامون رو از کامپیوتر به روی سرور آپلود کنیم.
اما کدی که مقابل متغیر نوشته شده چیه ؟ این کد خطا ها رو بررسی میکنه
به چه دردی میخوره ؟ اینو بعدا داخل یه شرط قرار میدیم ، اونجا کد کامل میشه . بطور کامل هم همونجا توضیح دادم.
بریم یه متغیر دیگه بسازیم :
کد:
$file_name = $_FILES["file"]["name"];
یه متغیر دیگه :
کد:
$file_type = $_FILES["file"]["type"];
بازم یه متغیر دیگه (این دیگه آخریشه ، قول میدم!!)
کد:
$file_size = ($_FILES["file"]["size"] /1024);
کد هایی که تا اینجا نوشتیم:
کد:
<?php
$file_error = $_FILES["file"]["error"];
$file_name = $_FILES["file"]["name"];
$file_type = $_FILES["file"]["type"];
$file_size = ($_FILES["file"]["size"] /1024);
شکل کلی کدها شرطی اینطوری :
کد:
If( شرط مورد نظر )
{
ادامه کد
}
Else
{
در غیر اینصورت ...
{
{
ادامه کد
}
Else
{
در غیر اینصورت ...
{
و اما کد اصلیمون :
کد:
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/png")))
{
الان باید یه دستور شرط if بنویسیم که بررسی کنه ببینه خطایی وجود داره یا نه (به قول گفتنی ببینه موشکیلی هست یا نه. اگه موشکیلی داشت خطا رو نشون بده. :دی) . (این همون شرطی هست که در بخش توضیحات متغییر $file_error راجعش گفته بودم)
کد:
if ($file_error >0)
{
echo "خطا : " . $file_error . "<br />";
}
حالا بعد از دستور if باید یه شرط دیگه هم بزاریم که بگه اگه if برقرار نبود، (ادامه کد). این کار رو با else انجام میدیم.
کد:
else
{
echo "<table id=\"table\" border=\"1px\"><tr><td> نام فایل:</td>" ."<td>". $file_name ."</td></tr>" ."<br />";
echo "<tr><td> نوع فایل: </td>"."<td>" . $file_type ."</td></tr>". "<br />";
echo "<tr><td>حجم: </td>"."<td>" . (int)$file_size . "کیلوبایت" ."</td></tr>". "</table><br />";
شاید این کدی که نوشتم در نگاه اول یه کم گیج کننده باشه. اما در باطن اینطوری نیست(موجود بی آزاری هست!!)
نکته مهمی که هست اینه که باید بدونین برای اینکه دابل کوتشین های(") php با html قاطی نشن باید چیکار کرد. جوابش خیلی راحته ، فقط باید قبل از دابل کوتشین html از \ استفاده کرد.
مثلا وقتی توی html مینوشتیم :
کد:
<table id=”table” border=”1px”>
الان باید توی php این شکلی بنویسیم:
echo "<table id=\"table\" border=\"1px\">
راستی توی php برای اینکه دو رشته رو به هم متصل کنن از . (نقطه) استفاده میکنن.
حالا بریم کدها رو بررسی کنیم:
ساده شده ی کد قبلی این هستش : (کد های html رو برای راحتی حذف کردم. اونایی که از اون کد سر در میارن از اون استفاده کنن . تنبلی هم نکنین)
کد:
else
{
echo "نام فایل:”. $file_name ."<br />";
echo " نوع فایل: " . $file_type . "<br />";
echo " حجم: " . (int)$file_size . "کیلوبایت" . "<br />";
الان که به اینجا رسیدیم فکر کنم قدر متغیر ها رو دونسته باشین. چون اگه متغیرها نبودن شما باید اون کدها رو مینوشتین. (حالا جلوتر بازم از همین متغیرها استفاده میکنیم).
در ادامه else باید به شرطی بزاریم که بگه اگه فایلی با چنین اسمی قبلا آپلود شده و در فولدر وجود داشت (یعنی اسمشون تکراری بود) یه پیغام بده و بگه که : "یه فایلی با این نام موجود هست"
کد:
if (file_exists("upload/" . $file_name))
{
echo $file_name . " فایلی با این نام موجود است. " . "<br />";
}
کد:
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $file_name);
echo "ذخیره شده در آدرس:" . "upload/" . $file_name . "<br />";
}
الان باید به دستورات شرطی مون خاتمه بدیم و php ببندیم:
کد:
}
}
else
{
echo "فایل پشتیبانی نشد";
}
?>
حالا میخوایم بریم سراغ html و یه کاری کنیم که عکس آپلود شده مون نشون داده بشه.
همچنین آدرس مکان آپلود شده هم نشون بده.
به راحتی با استفاده از تگهای img و input این کار رو انجام میدیم. فقط باید یادتون باشه که چون php رو در قسمت بالا بستیم الان ، دوباره باید باز و بسته کنیم.
کد:
<img width="200" height="200" src="upload/<?php echo $file_name ?>" /> <br /><br />
<label>آدرس عکس: </label>
<input size="40" value="http://localhost/upload/<?php echo $file_name ?>" />
بجای
لینک ها تنها برای اعضای سایت قابل نمایش است.
هم آدرس رو وارد کنید. (اگه روی لوکال هاست دارین تست میکنین که لازم نیست عوض کنین. اگه روی هاست دارین تست میکنین ، آدرس سایتتون رو وارد کنید.)خب همین جا آموزشمون به پایان رسید. امیدوارم که خوشتون اومده باشه و زیاد خسته نشده باشین.
فایل استایل رو هم توضیح ندادم چون یه کار سلیقه ای هست. و همچنین آموزشی طولانی تر میشد.
اما کل فایل رو براتون ضمیمه کردم.که استایل هم توش موجوده.)
لینک ها تنها برای اعضای سایت قابل نمایش است.
لینک ها تنها برای اعضای سایت قابل نمایش است.
تصویر نهایی
پ.ن 1 : آموزش اضافه کردن نام تصادفی (رندم) به اول فایل جهت جلوگیری از تکراری شدن را در
لینک ها تنها برای اعضای سایت قابل نمایش است.
مشاهده و دانلود کنید.
لینک ها تنها برای اعضای سایت قابل نمایش است.
لینک ها تنها برای اعضای سایت قابل نمایش است.
لینک ها تنها برای اعضای سایت قابل نمایش است.
آخرین ویرایش توسط مدیر: