رفتن به مطلب

یک سوال ساده در مورد isset


پست های پیشنهاد شده

سلام دوستان.

اگه یک trxtfield رو خالی رها کنیم , آیا اینطور اعتبار سنجی نادرسته ؟


$f=$_POST['tfname'];
if(isset($f)=='')
echo 'no set';
else
echo 'set';

من اینو تست کردم , با اینکه فیلد رو خالی گذاشتم اما set رو چاپ میکنه . یک var_dump گرفتم که خروجی یک string خالی رو نشون میده .


echo var_dump($f);//string(0) ""

این هم جواب نداد :


$f=$_POST['tfname'];
if(!(isset($f)))
echo 'no set';
else
echo 'set';

کجای کد من اشتباهه ؟

چرا isset یک رشته ی خالی رو برمیگردونه ؟

برای اعتبار سنجی استفاده از isset نادرسته ؟

البته empty جواب میده ولی میخوام بدونم چرا isset نتیجه نمیده ؟

تشکر

لینک به ارسال

متد isset درواقع null رو هم حساب میکنه, برای اینکار از isset استفاده نمیشه ,چیزی که وجود داشته باشه اما میخواید اعتبار سنجی کنید از empty استفاده کنید .اما مثلا برای سابمیت یا سشن یا وجود نداره و یا داره که اونو با isset بررسی میکنید اما دراین مواقع از empty استفاده کنید


<body>


<?php
if (isset($_POST['submit'])) {
if (!empty($_POST['txtName'])) {
echo "ok";
} else {
echo "no";
}
}

?>

</body>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST">
<input type="text" name="txtName" />
<input type="submit" name="submit" />

</form>

  • امتیاز 3
لینک به ارسال

این کد رو ببینید متوجه منظور بنده میشید


<?php

$var = '';

// This will evaluate to TRUE so the text will be printed.
if (isset($var)) {
echo "This var is set so I will print.";
}

  • امتیاز 3
لینک به ارسال

خیلی ممنونم .

رشته ی تهی و null ( یعنی textfield هایی که پر نشدند ) یعنی موجودند و isset اونها true میشه .

اما session و cookie و submit اگر مقدار دهی نشده باشند یا در مورد سابمیت کلیک اتفاق نیفتاده باشه حتی null هم نیست و isset اونها false میشه .

این نتیجه گیری درسته ؟

و در مورد checkbox و radio boton ؟...

و تفاوت null با رشته ی تهی چیه ؟ null خودش یک نوع داده ای هست ؟

لینک به ارسال

1 : بله درسته

2 : کنترل ها , هیچ فرقی نمیکنه

3 : ببینید شما وقتی یک متغیر درست میکنید و اونو مقدار دهی نمیکنید مثل این میمونه که یه سطل دارید اما توش آب نربختبد اما سطل وجود داره

وقتی صفحه ایی سابمیت نشه , سشنی درست نشه مثل این میمونه که اصلا وجود نداشتند , استدلال بسیار ساده ایی داره , ایشالله متوجه منظور شده باشید

  • امتیاز 3
لینک به ارسال

d; یک توضیح در کنار توضیحات دوستمون :

وقتی فرمی چه با متد get چه post سابمیت می شه در واقع هر فیلدی که نامی در اون فرم داره به اکشن فرم ارسال می شه در نتیجه تکست فیلدی که پر نشده با مقدار خالی بخاطر نامش ارسال می شه پس isset جواب true رو برمی گردونه ولی


if (empty($var))

در ادامه isset شرط مناسب برای اجرای اکشن در صورت پر بودنه (در این شکل در حالت else و با استفاده از ! هم در حالت true)

  • امتیاز 4
لینک به ارسال
  • 2 هفته بعد...

checkbox و radio رو چک کردم , اینا اگه انتخاب نشن isset شون برابر false هست .

من به این نتیجه رسیدم :

textfield,textarea , باید با empty چک بشن .

checkbox , radi , submit میتونن با isset چک بشن .

select : با هیچ کدوم جواب نداد . (نه isset و نه empty )


if(isset($_POST['select'])!='' and !empty($_POST['select']))
{
echo 'true';

}
else
echo 'empty';

در هر صورت true چاپ میکنه.

ویرایش شده توسط pary_daryayi
لینک به ارسال

لطفا برای ارسال دیدگاه وارد شوید

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



ورود به حساب کاربری
×
×
  • اضافه کردن...