ارور کد اپلود (عکس)
سلام یه کد اپلود نوشتم به صورت کامل هم کار میکنه
ولی سه تا اررو میده به این صورت :
| ( ! ) Strict standards: Only variables should be passed by reference in C:\dev\testham\send.php on line 23 | ||||
|---|---|---|---|---|
| Call Stack | ||||
| # | Time | Memory | Function | Location |
| 1 | 0.0010 | 148720 | {main}( ) | ..\send.php:0 |
اینم کدم :
foreach($_FILES as $photo) {
$extension = end(explode('.', $photo['name'])); // ********* line 23
$photo['name'] = str_replace('.', '-', $photo['name']);
$photo['name'] = str_replace('-' . $extension, '.' . $extension, $photo['name']);
if (in_array($extension, array('jpg', 'jpeg', 'jpe', 'png', 'gif'))) {
if ($photo['error'] == 0 && $photo['size'] <= 2097152) {
move_uploaded_file($photo['tmp_name'], 'uploaded/' . $photo['name']);
}
}
}
حالا برای اینکه سوالی پیش نیاد کد فرمم رو هم میزارم :
<form action="/send.php/" enctype="multipart/form-data" method="post">
<table>
<tr><th>username :</th><td><input name="" type="text" value="" /></td></tr>
<tr><th>password :</th><td><input name="" type="password" value="" /></td></tr>
<tr><th>gender :</th><td><label><input name="gender" type="radio" value="m" />Male</label><label><input name="gender" type="radio" value="f" />Female</label></td></tr>
<tr><th>Favorite Language</th><td><lable><input name="php" type="checkbox" value="true" />PHP </lable><lable><input name="aspx" type="checkbox" value="true" />ASP.NET </lable><lable><input name="jsp" type="checkbox" value="true" />JSP </lable></td></tr>
<tr><th>image1 :</th><td><input name="photo1" type="file" /></td></tr>
<tr><th>image2 :</th><td><input name="photo2" type="file" /></td></tr>
<tr><th>image3 :</th><td><input name="photo3" type="file" /></td></tr>
<input name="MAX_FILE_SIZE" type="hidden" value="2097152" />
</table>
<input type="submit" value="send"/>
</form>
به نظرتون مشکل از کجاست؟؟؟
سلام. اول explode کن و در یک متغیر بریزش و بعد اون متغیرو داخل end بذار.
تابع end باید بهش متغیر بدیم چون این تابع یک آرایه بصورت اشاره گر میگیره.
در مورد Passing by Reference هم این لینکو ببینید.
اگر میخواین به همون شکل داخل end از explode استفاده کنید , این کدو باید به برنامتون اضافه کنید:
error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE);
(تمام خطاها بجز E_STRICT و E_NOTICE)
اما برای آپلود کردن چند فایل میتونید از تگ زیر استفاده کنید:(جایگزین اون سه تا تگ photo در کدتون)
<input name='uploads[]' type="file" multiple>
و کد آپلود با استفاده از تگ خط بالایی رو به این شکل واستون نوشتم:
foreach($_FILES['uploads']['name'] as $key => $photo)
{
$exp = explode('.', $photo);
$extension = end($exp);
$photo = str_replace('.', '-', $photo);
if (in_array(strtolower($extension), array('jpg', 'jpeg', 'png', 'gif')))
{
if ($_FILES['uploads']['error'][$key] == 0 && $_FILES['uploads']['size'][$key] <= 2097152)
{
move_uploaded_file($_FILES['uploads']['tmp_name'][$key], 'uploaded/' . $photo . '.' . $extension);
}
}
}
نکته امنیتی: نام فایل های آپلودی رو با استفاده از salt و pepper هش(در مطالب قبلی اشاره کردم) کن.
**البته برای آپلود تصاویرتون از تابعی که در این لینک قبلا گذاشتم استفاده کنید.**
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .