۱۷ مهدی
مشکل کار نکردن شرط زمان استفاده از $_FILES
جامعه پی اچ پی ایجاد شده در ۲۹ فروردین ۱۴۰۱

سلام من در فرم زیر وقتی با آرایه سوپر گلوبال پست این فایل داخل فرم رو ارسال میکنم به درستی کار میکنه:

<body>
    <form action="upload.php" method="POST">
        <input type="file" name="file"><br><br>
        <input type="submit" name="submit" value="send">
    form>
body>

این هم صفحه uploaded.php :

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($_POST['submit'] == 'send') {
        if (isset($_POST['file']) && !empty($_POST['file'])) {
            echo '

فایل شما با موفقیت آپلود شد

'
;         } else {             echo '

لطفا فایل مورد نظر را انتخاب نمایید

'
;                     }     } }

اما وقتی برای تگ فرم همونطور که آقای صالحی توی ویدیو فرمودند مقدار enctype=multipart/form-data رو قرار میدم و از آرایه سوپر گلوبال فایل استفاده میکنم مثل زیر واسه هر دوتا میگه فایل مورد نظر با موفقیت آ|بود شد دلیلش چیه؟

<body>
    <form action="upload.php" method="POST" enctype="multipart/form-data">
        <input type="file" name="file"><br><br>
        <input type="submit" name="submit" value="send">
    form>
body>

uploaded.php:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($_POST['submit'] == 'send') {
        if (isset($_FILES['file']) && !empty($_FILES['file'])) {
            echo '

فایل شما با موفقیت آپلود شد

'
;         } else {             echo '

لطفا فایل مورد نظر را انتخاب نمایید

'
;                     }     } }

یعنی هم زمانی که خالی ارسال میکنم اینو میگه و هم زمانی که فایلی انتخاب میکنم

مهدی ۲۹ فروردین ۱۴۰۱، ۰۹:۵۶

سلام دوست عزیز

این مقدار رو به تگ فرم اضافه کنید

enctype="multipart/form-data"

به شکل زیر

    <form action="upload.php" method="POST" enctype="multipart/form-data">
        <input type="file" name="file"><br><br>
        <input type="submit" name="submit" value="send">
   form>
محمد گازری ۲۹ فروردین ۱۴۰۱، ۱۰:۰۰

قرار دادم توی توضیحات هم اشاره کردم

مهدی ۲۹ فروردین ۱۴۰۱، ۱۰:۰۱

از چه سیستم عاملی استفاده میکنید؟

محمد گازری ۲۹ فروردین ۱۴۰۱، ۱۰:۰۳

ویندوز 7

مهدی ۲۹ فروردین ۱۴۰۱، ۱۰:۰۴

به این شکل باید بنویسید

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($_POST['submit'] === 'send') {
        if (isset($_FILES['file']) && !empty($_FILES['file'])) {
            echo 'فایل شما با موفقیت آپلود شد';
        } else {
            echo 'لطفا فایل مورد نظر را انتخاب نمایید';
        }
    }
}
محمد گازری ۲۹ فروردین ۱۴۰۱، ۱۰:۱۴

اگر همچنان موفق نشدید کدتون رو زیپ کنید و برام پیوست کنید بررسی کنم

در غیر این صورت تاپیک رو به حالت حل شده در بیارید

محمد گازری ۲۹ فروردین ۱۴۰۱، ۱۰:۲۱

خیر باز هم کار نکرد وقتی فایلی انتخاب نمیکنم هم میگه فایل آپلود شد

مهدی ۲۹ فروردین ۱۴۰۱، ۱۰:۲۲

مشکلی نیست، کدتون رو پیوست کنید

محمد گازری ۲۹ فروردین ۱۴۰۱، ۱۰:۲۳

991e-image.png


41c7-image.png

مهدی ۲۹ فروردین ۱۴۰۱، ۱۰:۲۷

بررسی میکنم بهتون در همین تاپیک اطلاع میدم

محمد گازری ۲۹ فروردین ۱۴۰۱، ۱۰:۳۰

درمورد حل مشکلتون

ببینید شما حتی اگر فایلی ارسال نکنید $_FILES['file'] همیشه مقداری از آرایه خالی با error 4 برمیگردونه میتونید ازش یه print_r بگیرید

Array
(
    [name] => 
    [full_path] => 
    [type] => 
    [tmp_name] => 
    [error] => 4
    [size] => 0
)

برای رفع این مورد میتونید از یکی از کلید‌ها به شکل زیر عمل کنید

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($_POST['submit'] === 'send') {
        if (isset($_FILES['file']['name']) && !empty($_FILES['file']['name'])) {
            echo 'فایل شما با موفقیت آپلود شد';
        } else {
            echo 'لطفا فایل مورد نظر را انتخاب نمایید';
        }
    }
}
محمد گازری ۲۹ فروردین ۱۴۰۱، ۱۱:۰۶

سلام ببخشید یه سوال دیگه هم داشتم من توی هر د و فایل زیر سشن رو استارت کردم ولی میگه سشن رو نمیشناسه وقتی صفحه ایندکس رو باز میکنم, دلیلش چیه؟

ea6e-image.png

b83e-image.png

مهدی ۳۰ فروردین ۱۴۰۱، ۰۹:۲۵

این شرطتتون رو

&& $_SESSION['msg']

به این تغییر بدید

&& !empty($_SESSION['msg'])
محمد گازری ۳۰ فروردین ۱۴۰۱، ۰۹:۴۴

کلا سشن رو نمیشناسه یعنی حتی اگه به جای شرط, اکو بکنم:

echo $_SESSION['msg'];
مهدی ۳۰ فروردین ۱۴۰۱، ۰۹:۵۱

مشکلی نیست

مجدد کدتون رو زیپ کنید و قرار بدین تا در اولین فرصت چک کنم!

چون تو عکس سخته دیباگ کردن!

بهترین پاسخ
محمد گازری ۳۰ فروردین ۱۴۰۱، ۰۹:۵۵

متوجه شدم به خاطر اون اِلس هست, ممنونم این تاپیک رو یبندم

مهدی ۳۰ فروردین ۱۴۰۱، ۱۰:۰۴