🚀 تخفیف ۳۵٪ + ۳.۵ میلیون هدیه! برنامه‌نویسی رو الان شروع کن - فقط امروز!
۰ ثانیه
۰ دقیقه
۰ ساعت
۷ مهران
چرا فقط یه بلاک از if اجرا میشه ؟
جامعه پی اچ پی ایجاد شده در ۲۰ تیر ۱۴۰۲

session_start();
$msg = null;
$successMsg = false;
$errorMsg = false;
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (isset($_POST['uploadbtn']) && $_POST['uploadbtn'] == 'Upload') {
        if (isset($_FILES['uploader']) && 
            $_FILES['uploader']['size'] != 0 && 
                $_FILES['uploader']['error'] == 0) {
            echo $msg = "Ok!";
        }else{
            echo $msg = "Please upload a file!";
        }
    }
    
}

فقط Ok برای من چاپ میشه

head>
  <body>
    <form action="upload.php" method="POST" enctype="multipart/form-data">
      <div class="file-upload">
        <div class="upload-button">
          <input type="file" id="upload" name="uploader" class="hidden"/>
          <label for="upload" class="upload-icon">
            <span>Browsespan>
          label>
        div>
        <div class="file-info">
          <span id="file-name">No file chosenspan>
        div>
        <button class="upload-file-button" type="submit" name="uploadbtn" value="Upload">Uploadbutton>
      div>
    form>
    
    <script src="script.js">script>
  body>

مشکل کجاست ؟

سلام،

منظورتون رو متوجه نشدم، شما اگر فرم را سابمیت کنید و فایل را وارد کرده باشید باید بلاک if مربوط به ok اجرا شود.


محسن موحد ۲۰ تیر ۱۴۰۲، ۱۵:۰۹

نه در هر دو صورت ok اجرا میشه چه من فایل اپلود کنم چه نکنم بلاک ok اجرا میشه

مهران ۲۰ تیر ۱۴۰۲، ۱۵:۱۲

اینپوت تایپ فایل هم ایدی داره و هم نام داره میتونه ماله این باشه وقتی ایدی را میدم فقط بلاک else اجرا میشه چرا مشکل چیه ؟

مهران ۲۰ تیر ۱۴۰۲، ۱۵:۱۷

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

id ارتباطی به name نداره و در سمت سرور فقط با name سروکار دارید.

شما بعد از if اول که چک میکنید آیا POST انجام شده یا نه $_FILES رو دیباگ کنید که چه مقادیری داره:

echo 'pre>' . print_r($_FILES, true) . '/pre>';
بهترین پاسخ
محسن موحد ۲۰ تیر ۱۴۰۲، ۱۸:۴۷

سلام چک کردم و متوجه شدم که وقتی من page را بک میزنم مقدار فایل اپلود قبلی هنوز مونده توی ارایه و حتما باید روی url اینتر بزنم تا خالی بشه این یه مشکله یا طبیعی هستش ؟

مهران ۲۱ تیر ۱۴۰۲، ۰۶:۲۶

وقتی page را رفرش میکنم هنوز فایل توی ارایه مونده و برای همین Ok میده چکار کنم که خالی بشه ؟

مهران ۲۱ تیر ۱۴۰۲، ۰۶:۲۹

مشکل حل شد . مشکل از code جاوا بود که مقدار را خالی نمیکرد.

مهران ۲۱ تیر ۱۴۰۲، ۰۶:۵۴