نمایش نتایج 1 تا 21 از 21

نام تاپیک: ساخت یک فرم ساده و خطای Undefined index

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    مشهد
    پست
    84

    ساخت یک فرم ساده و خطای Undefined index

    سلام عرض ادب و خسته نباشید یک فرم ساده طراحی کردم در خط 26 و 27 خطا دریافت می کنم این دو سطر مربوط میشن به کد های
    $username =  $_POST['username'];
    $password = $_POST['password'];

    و این خطا رو میدن
    Notice: Undefined index: username in  C:\wamp\www\php10\tamrin_19.php on line 26

    Notice: Undefined index: password in C:\wamp\www\php10\tamrin_19.php on line 27

    و کل کد هایی که من برای این فرم نوشتم هم در زیر قرار دادم لطفا در صورت امکان راهنمایی بفرمایید این خطا به چه علت رخ داده و برای حل این مشکل باید چه کرد با تشکر.

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <meta http-equiv="Expires" content="Fri, Jan 01 1900 00:00:00 GMT">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Cache-Control" content="no-cache">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta http-equiv="Lang" content="en">
    <meta name="author" content="">
    <meta http-equiv="Reply-to" content="@.com">
    <meta name="generator" content="PhpED 5.8">
    <meta name="description" content="">
    <meta name="keywords" content="">
    <meta name="creation-date" content="01/01/2009">
    <meta name="revisit-after" content="15 days">
    <title>Untitled</title>
    <link rel="stylesheet" type="text/css" href="my.css">
    </head>
    <body>
    <form name="loginform" method="post">
    نام کاربری : <input name="username" type="text" /><br />
    رمز ورود : <input name="password" type="password" /><br />
    <input type="submit" name="submit" value="submit" />
    </form>
    <?php
    $username = $_POST['username'];
    $password = $_POST['password'];
    /*
    var_dump(!empty($username));
    var_dump(!empty($password));
    var_dump(isset($username));
    var_dump(isset($password));
    */
    if (!empty($password) AND !empty($username))
    {

    echo 'نام کاربری وارد شده = '.$username;
    echo '<hr />';
    echo 'رمز ورود وارد شده برابر است با = '.$password;
    }
    elseif (isset($password) OR isset($username))
    {

    echo 'لطفا فیلدهای مورد اشاره را تکمیل نمایید';
    }
    ?>
    </body>
    </html>



    ارادتمند : مسلم فلاح نیت

  2. #2
    کاربر دائمی آواتار AliRezaPro
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    PE Header
    پست
    1,054

    نقل قول: ساخت یک فرم ساده و خطای Undefined index

    باید شرط بزارید که بعد از پست بک شدن شما به مقدار دسترسی داشته باشی
    if(isset($_POST['username']))
    {
    echo $_POST['username'];
    }

  3. #3
    کاربر دائمی آواتار ابوذر محمودی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تربت حیدریه
    پست
    476

    نقل قول: ساخت یک فرم ساده و خطای Undefined index

    <?php
    if(isset($_POST["submit"]))
    {
    $username = $_POST['username'];
    $password = $_POST['password'];
    /*
    var_dump(!empty($username));
    var_dump(!empty($password));
    var_dump(isset($username));
    var_dump(isset($password));
    */
    if (!empty($password) AND !empty($username))
    {

    echo 'نام کاربری وارد شده = '.$username;
    echo '<hr />';
    echo 'رمز ورود وارد شده برابر است با = '.$password;
    }
    elseif (isset($password) OR isset($username))
    {

    echo 'لطفا فیلدهای مورد اشاره را تکمیل نمایید';
    }
    }
    ?>

  4. #4
    کاربر دائمی آواتار ابوذر محمودی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تربت حیدریه
    پست
    476

    نقل قول: ساخت یک فرم ساده و خطای Undefined index

    $username و پسوردتون با اطلاعات ارسالی توسط متد پست مقدار دهی میشن ، یعنی تا اطلاعاتو نفرستی مقدار دهی نمیشن ، واسه همین پیغام میده چون هیچی بهش ارسال نشده.
    شما باید قبلش با isset تست کنی ببینی مقداردهی شدن یا نه.

  5. #5
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    مشهد
    پست
    84

    نقل قول: ساخت یک فرم ساده و خطای Undefined index

    isset نگاه نمی کنه ببینه مقدار دارن یا نه شما زمانی که داخل فرم از سابمیت برای ارسال مقادیر استفاده کرده باشی حتی اگر شرطی مبنی بر ست شدن هم گذاشته باشی باز هم عملی که در براکت ها نوشته شده انجام میشن چون با فشردن دکمه فرم اون متغیر ها ست میشن به خودی خود هر چند مقدار خالی داشته باشه اگر اشتباه گفتم بگید تا بدونم با تشکر.
    ارادتمند : مسلم فلاح نیت

  6. #6
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    مشهد
    پست
    84

    نقل قول: ساخت یک فرم ساده و خطای Undefined index

    البته این طوری هم میشه

    if (isset($_POST['btnsubmit']) AND !empty($_POST['username']) AND !empty($_POST['password']))
    {
    echo 'نام کاربری وارد شده = '.$_POST['username'].'<hr />'.'رمز ورود وارد شده برابر است با = '.$_POST['password'];
    }
    elseif(isset($_POST['btnsubmit']))
    {
    echo 'لطفا فیلدهای مورد اشاره را تکمیل نمایید';
    }


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

  7. #7

    نقل قول: ساخت یک فرم ساده و خطای Undefined index

    البته یک نکته دیگه هم بد نیست گفته بشه:
    empty اگه مقدار صفر یا false یا رشته خالی ارسال بشه، باز هم خالی درنظر میگیره و true بر میگردونه. بهتره اینطوری بنویسید:

    if(isset($_POST['btnsubmit']) && $_POST['btnsubmit'] !== '') {
    // Do your stuff
    }

    موفق باشید.

  8. #8

    نقل قول: ساخت یک فرم ساده و خطای Undefined index

    البته من برای راحتی کارم، تابع زیر رو نوشتم که توی پروژه های خودم ازش استفاده میکنم:

    <?php
    function Posted() {
    $result = true;
    $values = func_get_args();
    if(count($values) == 0) {
    return false;
    }
    else {
    foreach($values as $value) {
    if(!isset($_POST[$value]) || $_POST[$value] === '') {
    $result = false;
    break;
    }
    }
    }
    return $result;
    }
    ?>

    مثال از نحوه استفاده:

    if(Posted('username', 'password')) {
    // do your stuff here
    }

  9. #9
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    مشهد
    پست
    84

    نقل قول: ساخت یک فرم ساده و خطای Undefined index

    سلام عرض ادب و خسته نباشید جناب شهرکی میشه در مورد این func_get_args() فانکشن بگید کارش چی هست با تشکر.
    ارادتمند : مسلم فلاح نیت

  10. #10
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    مشهد
    پست
    84

    نقل قول: ساخت یک فرم ساده و خطای Undefined index

    نقل قول نوشته شده توسط MMSHFE مشاهده تاپیک
    البته یک نکته دیگه هم بد نیست گفته بشه:
    empty اگه مقدار صفر یا false یا رشته خالی ارسال بشه، باز هم خالی درنظر میگیره و true بر میگردونه. بهتره اینطوری بنویسید:

    if(isset($_POST['btnsubmit']) && $_POST['btnsubmit'] !== '') {
    // Do your stuff
    }

    موفق باشید.

    !empty چی جناب شهرکی !empty هم همین کاری که شما عرض کردین رو می کنه درسته به نظرتون بهینه تر نیست یعنی کوتاه تر نیست البته جسارت نباشه منتظر پاسخ شماهستم با تشکر.
    ارادتمند : مسلم فلاح نیت

  11. #11
    کاربر دائمی آواتار cpuram
    تاریخ عضویت
    اسفند 1389
    محل زندگی
    آمل
    پست
    671

    نقل قول: ساخت یک فرم ساده و خطای Undefined index

    استفاده از NULL از '' خالی نیست؟

  12. #12
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    مشهد
    پست
    84

    نقل قول: ساخت یک فرم ساده و خطای Undefined index

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

  13. #13

    نقل قول: ساخت یک فرم ساده و خطای Undefined index

    نقل قول نوشته شده توسط moslem_f مشاهده تاپیک
    !empty چی جناب شهرکی !empty هم همین کاری که شما عرض کردین رو می کنه درسته به نظرتون بهینه تر نیست یعنی کوتاه تر نیست البته جسارت نباشه منتظر پاسخ شماهستم با تشکر.
    ارادتمند : مسلم فلاح نیت
    نه empty این کاری که من کردم رو انجام نمیده. شما اگه توی یک فیلد فرم، عدد 0 بگذارین و فرم رو submit کنید، خواهید دید که empty نتیجه true میده (میگه این عنصر خالیه) درحالی که واقعاً خالی نیست.

  14. #14

    نقل قول: ساخت یک فرم ساده و خطای Undefined index

    نقل قول نوشته شده توسط moslem_f مشاهده تاپیک
    سلام عرض ادب و خسته نباشید جناب شهرکی میشه در مورد این func_get_args() فانکشن بگید کارش چی هست با تشکر.
    ارادتمند : مسلم فلاح نیت
    پارامترهایی که برای یک تابع ارسال شدن رو بصورت آرایه برمیگردونه. با کمک این تابع، میشه حالت Function Overload رو در PHP شبیه سازی کرد.

  15. #15

    نقل قول: ساخت یک فرم ساده و خطای Undefined index

    نقل قول نوشته شده توسط cpuram مشاهده تاپیک
    استفاده از NULL از '' خالی نیست؟
    وقتی از === استفاده میکنیم، NULL با '' فرق میکنه. '' یعنی یک رشته خالی، NULL یعنی هیچی. اگه بخوام با مثال بگم، '' یعنی یک بشقاب داریم که توش هیچی نیست، NULL یعنی همون بشقاب رو هم نداریم.

  16. #16
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    مشهد
    پست
    84

    نقل قول: ساخت یک فرم ساده و خطای Undefined index

    نقل قول نوشته شده توسط MMSHFE مشاهده تاپیک
    پارامترهایی که برای یک تابع ارسال شدن رو بصورت آرایه برمیگردونه. با کمک این تابع، میشه حالت Function Overload رو در PHP شبیه سازی کرد.
    ممنونم جناب شهرکی اما متاسفانه من تازه وارد هستم و نمیدونم Function Overload چی هست در مورد کدی که شما فرمودین بهتر نیست این طوری نوشته بشه چون به نظرم کوتاه تره یعنی بهینه تره چون اگر بخوایم چک کنیم این variable ست شده بعد مقدار مخالف خالی باشه کاربر اجازه ارسال داشته باشه دو یا چندین باکس داشته باشیم طولانی میشه به نظر شما این کدی که من دادم بهتره یا مشکل داره ؟

    if(!empty($_POST['username']) AND !empty($_POST['password']))


    if(isset($_POST['btnsubmit']) && $_POST['btnsubmit'] !== '') {    // Do your stuff}

    وقتی من می خوام دو تا باکس یا چندین باکس رو چک کنم که کاربر خالی دکمه ثابمیت رو فشار نداده باشه برای ارسال اطلاعات آیا روش شما طولانی تر از این کد نیست

    در مورد این هم
    <?php    function Posted() {        $result = true;        $values = func_get_args();        if(count($values) == 0) {            return false;        }        else {            foreach($values as $value) {                if(!isset($_POST[$value]) || $_POST[$value] === '') {                    $result = false;                    break;                }            }        }        return $result;    }




    if(Posted('username', 'password')) { // do your stuff here}
    ?>



    کمی نیاز به توضیح دارم خواهش می کنم در صورت امکان بگید اولین متغیر بابت چی قرار داده شده که یک مقدار بولین گرفته و این که تو شرط گفتین اگر مقدار variable valuses برابر با 0 بود return کن false آیا این false return کردن برابر با همون پیغام خطا در ورود اطلاعات خطا در خالی بودن باکس ها محسوب میشه یا خیر ؟ بعد هم یه حلقه foreach قرار داده شده برای پیشمایش آرایه که values رو فرمودین پارماتر های تابع رو بر می گردونه و زمانی که ما تابعمون آرگونان نداره با این function که دادین func_get_args() این پارامتر های مارو به عنوان آرگومان در نظر می گیره و میاره داخل variable values و foreach values as value خب مقادیر رو در هر بار چرخش میریزه داخل variable value و داخل $_POST[$value] نقش ===' ' چیه و همچنین متغیر $result = false; که مقدار بولین گرفته و همچین break; ممنون میشم توضیح بیشتری بدین تا ما تازه وارد ها از اساتید بزرگی چون شما استفاده ببریم با تشکر.
    ارادتمند : مسلم فلاح نیت

    در مورد این دوست عزیزمون هم متوجه منظورشون نشدم یعنی چی استفاده از NULL از '' خالی نیست؟میشه بیشتر توضیح بدین چون اصلا متوجه نشدم چیه منظورشون و ذهنمو بد جور در گیر کرده

  17. #17

    نقل قول: ساخت یک فرم ساده و خطای Undefined index

    ببینید، هر کدی که کوتاهتر بود، الزاماً بهینه تر نیست. مثلاً اگه توی کادر پسورد الآن شما صفر وارد کنید و فرم رو submit کنید، empty نتیجه true میده و انگار که چیزی ارسال نشده و این یک خطا هست چون شاید یکی دوست داشته باشه رمزش رو صفر بگذاره (فقط درمورد رمز نیست، همه فیلدها این خاصیت رو دارن - مثل مبلغ اعتبار اولیه). ضمناً شما یکبار تابع رو مینویسین و میتونید توی یک فایل جداگانه بگذارین و با ضمیمه کردن اون فایل، هزاران بار توی پروژه ازش استفاده کنید. یعنی اون چیزی که مدام توی کد داره تکرار میشه، این بخش هست:
    if(Posted('username', 'password')) {

    حالا کد بالایی کوتاهتره یا کد شما؟
    if(!empty($_POST['username']) && !empty($_POST['password'])) {

    نکته: احتمال خطاهایی که empty ممکنه پیش بیاره و قبلاً توضیح دادم رو نادیده بگیرین و فقط بگین کدوم خلاصه تره؟

  18. #18

    نقل قول: ساخت یک فرم ساده و خطای Undefined index

    اما درمورد این تابع:

    <?php
    function Posted() {
    $result = true;
    $values = func_get_args();
    if(count($values) == 0) {
    return false;
    }
    else {
    foreach($values as $value) {
    if(!isset($_POST[$value]) || $_POST[$value] === '') {
    $result = false;
    break;
    }
    }
    }
    return $result;
    }
    ?>

    این تابع ابتدا پارامترهایی که براش ارسال شدن رو با func_get_args بصورت آرایه در میاره. حالا اگه تعداد خونه های این آرایه صفر بود (هیچ پارامتری ارسال نشده باشه)، false برمیگردونه و از تابع میره بیرون. اما اگه اینطور نباشه، تمام مقادیر آرایه رو یکی یکی چک میکنه که با روش post ارسال شده باشن و ضمناً خالی هم نباشن (دقیقاً یک رشته خالی نباشن و بخاطر استفاده از === بین صفر و false و '' فرق میگذاره). حالا اگه هرکدوم از مقادیری که توسط پارامتر به تابع گفته شده، با post ارسال نشده باشه یا خالی ارسال شده باشه، result$ میشه false و با ;break از حلقه foreach میاد بیرون چون دیگه دلیلی نداره بقیه رو چک کنیم و همین یکی که ارسال نشده یا خالی ارسال شده، برای عدم اعتبار فرم کافیه. در پایان هم result$ برگردونده میشه.
    الآن از این تابع میشه اینطوری استفاده کرد (چند مثال) :

    if(Posted('username', 'password')) { // code }
    if(Posted('username', 'password', 'name', 'family')) { // code }
    if(Posted('choice')) { // code }
    if(Posted()) { // code }

    میبینید که این تابع دیگه به تعداد پارامتر وابسته نیست و برحسب تعداد پارامتر، میتونیم کاربردهای مختلفی ازش بگیریم (مثل همون وضعیت اول که اگه بدون پارامتر صداش زدیم، فوری بیاد بیرون و false برگردونه). به این وضعیت که یک تابع، برحسب پارامترهای ورودی خودش، بتونه پیاده سازیها و نتایج متفاوتی داشته باشه، میگن Function Overloading یعنی سربارگذاری تابع

  19. #19
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    مشهد
    پست
    84

    نقل قول: ساخت یک فرم ساده و خطای Undefined index

    نقل قول نوشته شده توسط MMSHFE مشاهده تاپیک
    ببینید، هر کدی که کوتاهتر بود، الزاماً بهینه تر نیست. مثلاً اگه توی کادر پسورد الآن شما صفر وارد کنید و فرم رو submit کنید، empty نتیجه true میده و انگار که چیزی ارسال نشده و این یک خطا هست چون شاید یکی دوست داشته باشه رمزش رو صفر بگذاره (فقط درمورد رمز نیست، همه فیلدها این خاصیت رو دارن - مثل مبلغ اعتبار اولیه). ضمناً شما یکبار تابع رو مینویسین و میتونید توی یک فایل جداگانه بگذارین و با ضمیمه کردن اون فایل، هزاران بار توی پروژه ازش استفاده کنید. یعنی اون چیزی که مدام توی کد داره تکرار میشه، این بخش هست:
    if(Posted('username', 'password')) {

    حالا کد بالایی کوتاهتره یا کد شما؟
    if(!empty($_POST['username']) && !empty($_POST['password'])) {

    نکته: احتمال خطاهایی که empty ممکنه پیش بیاره و قبلاً توضیح دادم رو نادیده بگیرین و فقط بگین کدوم خلاصه تره؟

    خب استاد اولی بهینه تره دیگه :D ! الان تازه متوجه منظور شما شدم وقتی رفتم و 0 رو در فیلد وارد کردم دیدم بله از true به true تلقی شد باز هم تازه فهمیدم شما چی عرض می کردین اما هنوز در مورد فانشکنه مشکل دارم باید روش فکر بیشتری بکنم ممنونم و این که الان چرا شما برای فراخانی فانکشن داخل شرط فراخانی کردینش ؟ با تشکر.
    این هم برام قابل درک نیست
    $_POST[$value] === ''

    ارادتمند : مسلم فلاح نیت
    آخرین ویرایش به وسیله moslem_f : دوشنبه 24 تیر 1392 در 13:25 عصر

  20. #20
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    مشهد
    پست
    84

    نقل قول: ساخت یک فرم ساده و خطای Undefined index

    فکر می کنم دلیلش این بوده اگر این فانکشن وجود داشت کد های داخل براکت های شرط رو اجرا کن یا اگر فرمی وجود داشت که چنین نام هایی داشت که با متود پست بود فرم یا اشتباه عرض می کنم ؟

  21. #21

    نقل قول: ساخت یک فرم ساده و خطای Undefined index

    نه بحث وجود داشتن تابع نیست. بحث اینه که این تابع، یکسری پارامتر میگیره و اگه به شکل صحیح ارسال شده باشن (با روش post)، نتیجه true و درغیر اینصورت نتیجه false میده و بخاطر همین، از خود تابع بعنوان شرط استفاده کردیم یعنی اگه نتیجه این تابع با پارامترهایی که گفتیم، true بود، دستورات پردازش فرم اجرا بشه و درغیر اینصورت، اگه خواستیم، پیغام خطای مناسب رو نشون بدیم. اون === هم یعنی اگه دقیقاً یک رشته خالی وارد شده باشه. توی PHP وقتی میگیم == فقط مقدار رو چک میکنه و از نظر این عملگر، 0 با 0.0 و false و '' و null یکیه ولی وقتی میگیم === اونوقت این مقادیر با هم فرق دارن چون درسته هم معادل صفر هستن ولی نوعشون فرق میکنه و از اونجا که عملگر === علاوه بر مقدار، نوع متغیرها رو هم بررسی میکنه، درنتیجه فقط وقتی نتیجه true میده که دقیقاً یک رشته خالی وارد شده باشه.

تاپیک های مشابه

  1. ساخت یک فرم loading ابتدای برنامه ( thread )
    نوشته شده توسط once4ever در بخش C#‎‎
    پاسخ: 17
    آخرین پست: یک شنبه 07 آذر 1389, 08:50 صبح
  2. handle کردن یک فرم ساده با php
    نوشته شده توسط abnoos2 در بخش PHP
    پاسخ: 7
    آخرین پست: دوشنبه 18 اردیبهشت 1385, 14:36 عصر
  3. آموزش ساخت یک بازی ساده توسط KGE
    نوشته شده توسط kochol در بخش طراحی و ساخت بازی‌های کامپیوتری
    پاسخ: 0
    آخرین پست: یک شنبه 08 آبان 1384, 14:53 عصر
  4. طرز ساخت یک فرم ارسال نظر و یا ...
    نوشته شده توسط ParvanehDesigner در بخش PHP
    پاسخ: 1
    آخرین پست: یک شنبه 20 دی 1383, 22:29 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •