যদি isset $ _POST


105

আমার একটি পৃষ্ঠায় একটি ফর্ম রয়েছে যা অন্য পৃষ্ঠায় জমা দেয়। সেখানে, এটি ইনপুট মেল পূরণ করা হয়েছে কিনা তা পরীক্ষা করে। যদি তা হয় তবে কিছু করুন এবং যদি তা পূরণ না হয় তবে অন্য কিছু করুন। আমি কেন বুঝতে পারি না যে কেন এটি সর্বদা বলে যে এটি সেট করা আছে, এমনকি যদি আমি খালি ফর্মটি পাঠাই। কি অনুপস্থিত বা ভুল?

পদক্ষেপ 2.php:

<form name="new user" method="post" action="step2_check.php"> 
    <input type="text" name="mail"/> <br />
    <input type="password" name="password"/><br />
    <input type="submit"  value="continue"/>
</form>

পদক্ষেপ 2_চেক করুন:

if (isset($_POST["mail"])) {
    echo "Yes, mail is set";    
} else {    
    echo "N0, mail is not set";
}

6
আপনার ফর্মটিতে উপস্থিত সমস্ত পাঠ্যের মতো ইনপুট এবং টেক্সারিয়াস তাদের মানগুলি খালি স্ট্রিং হলেও সার্ভারে জমা দেওয়া হবে।
হাইপজানশন

উত্তর:


228

বেশিরভাগ ফর্ম ইনপুটগুলি সর্বদা সেট করা থাকে, এমনকি পূরণ না করলেও আপনাকে অবশ্যই শূন্যতার জন্য পরীক্ষা করতে হবে।

যেহেতু !empty()উভয়ের জন্য ইতিমধ্যে চেক রয়েছে তাই আপনি এটি ব্যবহার করতে পারেন:

if (!empty($_POST["mail"])) {
    echo "Yes, mail is set";    
} else {  
    echo "No, mail is not set";
}

10
এই তুলনা টেবিলটি এই php.net/manual/en/tyype.comparisons.php
একটি তারকা

4
মাইনর বিষয় ... আমার মনে হয় এটা এড়ানো করা বাঞ্ছনীয় !ভালো ক্ষেত্রেই অপারেটর (সহজ পড়া, ত্রুটি, ইত্যাদি কম সুযোগ) এবং যুক্তিবিজ্ঞান বিপরীত ...if (empty()) {/* No */} else {/* Yes */}
MrWhite

25

!emptyপরিবর্তে ব্যবহার করুন isset। isset সত্য হিসাবে প্রত্যাশা $_POSTকারণ $_POSTঅ্যারে সুপারগ্লোবাল এবং সর্বদা বিদ্যমান (সেট)।

বা আরও ভাল ব্যবহার $_SERVER['REQUEST_METHOD'] == 'POST'


4
আপনার দু'টি ব্যবহার issetএবং !emptyত্রুটি রোধের জন্য উল্লেখ করা উচিত । সম্পাদনা: ওফস, এটি স্পষ্টতই প্রতিদিন শিখতে থাকে তারপরে রেফ
তৌকি

4
আমি চেষ্টা করেছি এবং উভয়ই ভাল কাজ করে। কেন $ _SERVER ['REQUEST_METHOD'] == 'পোস্ট' ভাল? এটা ঠিক কি করে? এটি কোনও নির্দিষ্ট ইনপুটকে বোঝাতে পারে বা এটি ফর্মের পক্ষে জেনেরিক?
এনআরসি

4
$_SERVER['REQUEST_METHOD']ব্যবহারকারীরা ফর্ম জমা দিয়েছেন তা নিশ্চিত করে। $_POSTএমনকি এই ক্ষেত্রে খালি থাকতে পারে। এই ফর্মটি বিবেচনা করুন <form method="post"></form>:, এটি জমা দেওয়ার ফলে ক্রিয়াতে কিছুই প্রেরণ হবে না, তবে অনুরোধের ধরণ হবে post। অথবা এটা গুটিয়ে যাওয়া করা সম্ভব: curl -X POST http://example.com/processor.php। যদি প্রসেসরে কোডের মতো কোড থাকে তবে echo $_SERVER['REQUEST_METHOD']. ' '.var_export(empty($_POST),1);আপনি দেখতে পাবেনPOST true
Nemoden

5

Php.net থেকে , isset

TR উপস্থিত থাকে যদি var উপস্থিত থাকে এবং মানটি নুয়াল, FALSE ব্যতীত অন্য কোনও মান থাকে।

খালি স্থান সেট হিসাবে বিবেচনা করা হয়। সমস্ত নাল বিকল্প চেক করার জন্য আপনাকে খালি () ব্যবহার করতে হবে।


3

আপনি যদি ফর্মটি খালি প্রেরণ করেন তবে $ _POST ['মেল'] এখনও প্রেরণ করা হবে তবে মানটি শূন্য। ক্ষেত্রটি খালি কিনা তা পরীক্ষা করার জন্য আপনাকে চেক করা দরকার

if(isset($_POST["mail"]) && trim($_POST["mail"]) != "") { .. }

আমি কোডটি পেস্ট করেছি এবং আমার মনে হয় এটি কার্যকর হয় না? আপনি কি এটি পরীক্ষা করেছেন?
এনআরসি

2

পাঠ্য ইনপুট ফর্ম নিম্নলিখিত বৈশিষ্ট্য যোগ করুন required="required"। যদি ফর্মটি পূরণ না করা হয় তবে এটি ব্যবহারকারীকে ফর্মটি জমা দেওয়ার অনুমতি দেবে না।

আপনার নতুন কোডটি হবে:

<form name="new user" method="post" action="step2_check.php"> 
<input type="text" name="mail" required="required"/> <br />
<input type="password" name="password" required="required"/><br />
<input type="submit"  value="continue"/>
if (isset($_POST["mail"])) {
    echo "Yes, mail is set";    
}

2

আপনি কেবল ব্যবহার করতে পারেন:

if($_POST['username'] and $_POST['password']){
  $username = $_POST['username'];
  $password = $_POST['password'];
}

বিকল্পভাবে, খালি ব্যবহার করুন ()

if(!empty($_POST['username']) and !empty($_POST['password'])){
  $username = $_POST['username'];
  $password = $_POST['password'];
}

সঙ্গে অনুযায়ী পিএইচপি টাইপ তুলনা টেবিল আপনি একেবারে সঠিক। একটি সাধারণ বুলিয়ান খালি স্ট্রিংটি পরীক্ষা করতে খালি ফাংশনটির কাজ করে।
viery365

আমি জানি এটি পুরানো উত্তর তবে প্রথম পদ্ধতিটি অনির্ধারিত সূচক বিজ্ঞপ্তির কারণ হতে পারে।
ICE

4
@ আইসিকে ভেরিয়েবলগুলি @, যেমন: এর সাথে পূর্ববর্তী করে সহজেই বাইপাস করা যায় @$_POST['username']। যে লক্ষ্য করার জন্য আপনাকে ধন্যবাদ।
পেড্রো লোবিটো

2

!empty()পরিবর্তে ব্যবহার করুন isset()। কারণ isset()আপনার ক্ষেত্রে সর্বদা সত্য ফিরে আসবে।

if (!empty($_POST["mail"])) {
    echo "Yes, mail is entered";    
} else {  
    echo "No, mail is not entered";
}

1

আপনি এটি ব্যবহার করতে পারেন:

if (isset($_POST['mail']) && ($_POST['mail'] !=0)) { echo "Yes, mail is set"; } else { echo "No, mail is not set"; }


1
<?php
    if(isset($_POST['mail']) && $_POST['mail']!='') {
        echo "Yes, mail is set";
    }else{
        echo "N0, mail is not set";
    }
?>

4
আপনার কোডটি কেন ওপি-র প্রশ্নের উত্তর দেয় তা আপনার ব্যাখ্যা করা উচিত।
মার্কাস

1

আসুন ভাবুন এটি ধাপ 2.php এ আপনার এইচটিএমএল ফর্ম

পদক্ষেপ 2.php

<form name="new user" method="post" action="step2_check.php"> 
    <input type="text" name="mail"/> <br />
    <input type="password" name="password"/><br />
    <input type="submit"  value="continue"/>
</form>

আমার মনে হয় আপনার এটি আপনার ডাটাবেসের জন্য প্রয়োজন, যাতে আপনি আপনার এইচটিএমএল ফর্ম মানটি পিএইচপি ভেরিয়েবলের জন্য বরাদ্দ করতে পারেন, এখন আপনি রিয়েল এস্কেপ স্ট্রিং ব্যবহার করতে পারেন এবং নীচে আপনার হতে হবে

পদক্ষেপ 2_check.php

if(isset($_POST['mail']) && !empty($_POST['mail']))
{
$mail = mysqli_real_escape_string($db, $_POST['mail']);
}

যেখানে Dat db হ'ল আপনার ডাটাবেস সংযোগ।


1

প্রথমে ফোরাম জমা দেওয়া হয়েছে কিনা তা দেখুন, ক্ষেত্রটি। হ্যাকারদের রোধ করতে আপনার ক্ষেত্রটি স্যানিটাইজ করা উচিত।

form name="new user" method="post" action="step2_check.php"> 
    <input type="text" name="mail"/> <br />
    <input type="password" name="password"/><br />
    <input type="submit"  id="SubmitForm" name= "SubmitForm" value="continue"/>
</form>

পদক্ষেপ 2_চেক করুন:


if (isset($_POST["SubmitForm"]))
   {
   $Email =  sanitize_text_field(stripslashes($_POST["SubmitForm"]));
   if(!empty($Email))
     echo "Yes, mail is set"; 
   else
     echo "N0, mail is not set";
   } 
}


0

পোস্ট করা প্রশ্নের উত্তর দিতে: ইসসেট এবং খালি একসাথে তিনটি শর্ত দেয়। এটি জাভাস্ক্রিপ্ট দ্বারা একটি এজাক্স কমান্ডের সাহায্যেও ব্যবহার করা যেতে পারে।

$errMess="Didn't test";   // This message should not show
if(isset($_POST["foo"])){ // does it exist or not
    $foo = $_POST["foo"]; // save $foo from POST made by HTTP request
    if(empty($foo)){      // exist but it's null
        $errMess="Empty"; // #1 Nothing in $foo it's emtpy

    } else {              // exist and has data
        $errMess="None";  // #2 Something in $foo use it now
      }
} else {                  // couldn't find ?foo=dataHere
     $errMess="Missing";  // #3 There's no foo in request data
  }

echo "Was there a problem: ".$errMess."!";

0

আপনি এটি চেষ্টা করতে পারেন:

if (isset($_POST["mail"]) !== false) {
    echo "Yes, mail is set";    
}else{  
    echo "N0, mail is not set";
}

আপনার নিজের উত্তরটি ব্যাখ্যা করা দরকার। এসও কেবলমাত্র প্রশ্নের উত্তর নয়, মানুষকে শিক্ষিত করার জন্য উপস্থিত রয়েছে
মাচাভিটি

0
<form name="new user" method="post" action="step2_check.php"> 
  <input type="text" name="mail" required="required"/> <br />
  <input type="password" name="password" required="required"/><br />
  <input type="submit"  value="continue"/>
</form>

<?php
if (!empty($_POST["mail"])) {
    echo "Yes, mail is set";    
}else{  
    echo "N0, mail is not set";
}
?>

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.