pary_daryayi

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

9 پست در این موضوع قرار دارد

سلام دوستان.

اگه یک 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)

به اشتراک گذاری این پست


لینک به پست

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

به اشتراک گذاری این پست


لینک به پست

اصلاح میکنم , در مورد select , تابع empty کار میکنه

به اشتراک گذاری این پست


لینک به پست

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

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری