رفتن به مطلب

یک سوال ساده در مورد 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>

لینک به ارسال

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


<?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.";
}

لینک به ارسال

خیلی ممنونم .

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

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

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

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

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

لینک به ارسال

1 : بله درسته

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

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

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

لینک به ارسال

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

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


if (empty($var))

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

لینک به ارسال
  • 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
لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...