🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۴ میلاد رئوف
اجرا نشدن شرط انتخاب فایل در زمان استفاده از متد files برای ارسال فایل در فرم
امیر صالحی حل شده توسط امیر صالحی

با سلام خدمت آقای صالحی

 

یه مشکلی در پروژه ی این درس وجود داره : 

زمانی که دو متد post رو در این پروژه به متد files تغییر میدیم ، شرط انتخاب فایلها دیگه برقرار نمیشه یعنی چه فایلی انتخاب بشه چه فایلی انتخاب نشه وقتی که دکمه ی ارسال رو کلیک میکنیم فرم ارسال میشه و پیام (لطفا فایل خود را انتخاب کنید) نمایش داده نمیشه

اگر متد files رو به حالت post برگردونیم این موضوع حل میشه ولی وقتی متد files رو استفاده میکنیم این مشکل پیش میاد

داخل ویدئو اشاره ای به این موضوع نشده ، لطفا بگید که چطور این مشکل رو حل کنیم ، ممنون میشم

سلام و احترام

میشه لطفا کدتون رو قرار بدید تا بررسیش کنم

امیر صالحی ۱۰ فروردین ۱۴۰۰، ۱۹:۴۰

این قسمت مربوط به فایل آپلود پروژه هستش که من بخشی از کدهاشو حذف کردم که مشکلی که گفتم واضح‌تر باشه ، الان اگر همین رو اجرا کنید قسمت else اجرا نمیشه یعنی اگر فایلی انتخاب نشه هم فرم با موفقیت ارسال میشه ولی اگر متدهای FILES رو به POST تغییر بدیم این مشکل حل میشه ، من صفحه اصلی پروژه که این صفحه متصل بهش هست هم براتون ارسال میکنم الان

<?php
session_start();
$msg = null;
if($_SERVER["REQUEST_METHOD"] == "POST"){
    if(isset($_POST["submit"]) && $_POST["submit"] == "send"){
        if(isset($_FILES["fileupload"]) && !empty($_FILES["fileupload"])){
            $msg = "فرم با موفقیت ارسال شد";
            }else{
            $msg = "لطفا فایل مورد نظر خود را انتخاب کنید";
        }
    }
}
header("location:index.php");
$_SESSION["msg"] = $msg

 

میلاد رئوف ۱۱ فروردین ۱۴۰۰، ۰۲:۳۰

این هم فایل ایندکس همین پروژه هستش :

<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div class="container">
        <?php
        if(isset($_SESSION["msg"]) && $_SESSION["msg"]):
        ?>
        <p><?php echo $_SESSION["msg"]?></p>
        <?php unset($_SESSION["msg"]) ?>
        <?php endif ?>
        <form method="POST" action="uploader.php" enctype="multipart/form-data">
            <input type="file" name="fileupload">
            <input type="submit" name="submit" value="send">
        </form>
    </div>
</body>
</html>
میلاد رئوف ۱۱ فروردین ۱۴۰۰، ۰۲:۳۳

سلام و احترام

<?php
session_start();
$msg = null;
if($_SERVER["REQUEST_METHOD"] == "POST")
{
        if(!isset($_FILES['fileupload']) || $_FILES['fileupload']['error'] == UPLOAD_ERR_NO_FILE)) 
            $msg = "لطفا فایل مورد نظر خود را انتخاب کنید";
        else
            $msg = "فرم با موفقیت ارسال شد";
}
$_SESSION["msg"] = $msg;
header("location:index.php");
exit;

کد بالا طبق نیاز شما به درستی کار میکنه

 

این شرطی که توی کد داشتید اضافه بود:

 if(isset($_POST["submit"]) && $_POST["submit"] == "send")

چون شرط بالاییش بررسی میکرد که فرم ارسال شده یا ن، منظورم این شرطه:

if($_SERVER["REQUEST_METHOD"] == "POST")

حالا توی کدی که بنده قرار دادم اول با isset بررسی کردم که چیزی set شده یا ن 

 if(!isset($_FILES['fileupload'])) 

و اگه set نشده بود بررسی کنه اصلا فایلی آپلود شده یا ن، با

 || $_FILES['fileupload']['error'] == UPLOAD_ERR_NO_FILE
بهترین پاسخ
امیر صالحی ۱۱ فروردین ۱۴۰۰، ۱۸:۰۶