/
  • اشکالات کد برنامه من در کجاست

  • ارسال پاسخ   امتیاز موضوع:
    • 2 رأی - میانگین امیتازات: 3.5
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی اشکالات کد برنامه من در کجاست
    نویسنده پیام
    kavoshgar63 آفلاین
    عضو
    ***

    ارسال‌ها: 54
    تاریخ عضویت: ۱۳۸۷ اسفند ۹
    اعتبار: 1
    تشکرها : 19
    ( 4 تشکر در 4 ارسال )
    ارسال: #1
    اشکالات کد برنامه من در کجاست
    این کل کد برنامه منه البته توی صفحه ثبت نام.
    که شاید یه جنبه آموزشی هم برای مبتدی ها داشته باشه چون توش خیلی کدهای غیر بهینه کارکردم.
    شما اساتید عزیز اشکالات من رو بهم گوش زد کنین تا هم به درد مبتدی ها بخوره و همچنین من از همین ابتدای کار متد برنامه نویسیم رو درست کنم.

    کد PHP:
    <?php 
    //include("db_config_inc.php");  
    //tarifat avalie data base;
    //********************************************************************************​***************
    $db_host="localhost";
    $db_name="pooyasharif";
    $db_username="root";
    $db_pass="";
    $db=mysql_connect($db_host,$db_username,$db_pass) or die ( " Can not connect to data base " );
    $link=mysql_select_db($db_name);
    //start
    //********************************************************************************​***************
    $totalerror=0;//jam error ha
    $errshsh="";//err shomare shenasname
    $errni="";//err code melli
    $errpc="";//error postal code
    $errtel=""//erroe telephone
    $errmobile="";//err mobile
    $errcitycode="";//err code shahr
    $un=$_POST[un];//user name
    $pass=$_POST[pass];
    $pass1=$_POST[pass1];
    $name=$_POST[name];
    $family=$_POST[family];
    $father=$_POST[father];
    $shsh=$_POST[shsh];//shomare shenasname
    $sodoor=$_POST[sodoor];//mahal sodoor
    $mtavallod=$_POST[mtavallod];
    $day=$_POST[day];
    $month=$_POST[month];
    $year=$_POST[year];
    $nationalid=$_POST[nationalid];
    $gender=$_POST[gender];
    $religion=$_POST[religion];
    $degree=$_POST[degree];
    $soldier=$_POST[soldier];//vaziat sarbazi
    $citycode=$_POST[citycode];
    $province=$_POST[province];
    $bigcity=$_POST[bigcity];
    $city=$_POST[city];
    $area=$_POST[area];
    $address=$_POST[address];
    $postalcode=$_POST[postalcode];
    $tel=$_POST[tel];
    $mobile=$_POST[mobile];
    $email=$_POST[email];

    // check kardan sehat dade haye voroodi

    if (ereg ("([0-9]{1,11}$)"$shsh$regs)) {
        echo 
    "$regs[1]"."<br>";
    } else {
        
    $errshsh="errshsh=errshsh";
        
    $totalerror+=1
    }


    if (
    ereg ("([0-9]{7,8}$)"$tel$regs)) {
        echo 
    "$regs[1]";
    } else {
        
    $errtel="errtel=errtel";
        
    $totalerror+=1;
    }

    if (
    ereg ("([0-9]{4}$)"$citycode$regs)) {
        echo 
    "$regs[1]";
    } else {
        
    $errcitycode="errcitycode=errcitycode";
        
    $totalerror+=1;
    }

    if (
    ereg ("([0-9]{10}$)"$postalcode$regs)) {
        echo 
    "$regs[1]";
    } else {
        
    $errpc="errpc=errpc";
        
    $totalerror+=1;
        }

    if (
    ereg ("([0-9]{10}$)"$nationalid$regs)) {
        echo 
    "$regs[1]";
    } else {
        
    $errni="errni=errni";
        
    $totalerror+=1;
        }

    if (
    ereg ("([0-9]{11}$)"$mobile$regs)) {
        echo 
    "$regs[1]";
    } else {
        
    $totalerror+=1;
        
    $errmoblie="errmobile=errmoblile";
    }


    //check kardan sehate ramz
    if ($pass!=$pass1)
        {
           
    $errpass=errpass;
            
    $totalerror+=1;
        }
    // check kardan khali nabaoodan field ha 
     
     
    if ($un=="" || $pass=="" || $pass1=="" ||$name==""  ||$family==""
       
    ||$father==""  ||$shsh==""  ||$sodoor==""  ||$mtavallod==""  ||$day==""
       
    ||$month==""  ||$year==""  ||$nationalid==""  ||$gender==""  ||$religion=="" 
       
    ||$degree==""  ||$soldier==""   ||$province==""  ||$bigcity=="" ||$address==""
       
    ||$postalcode==""  ||$tel==""  ||$citycode==""  ||$mobile=="" )
       {
       
    $errfill="errfill=errfill";
       
    $totalerror+=1;
    }
    if(
    $totalerror!=0)
        {
        
    $params = array 
        ( 
            
    errshsh=>$errshsh
            
    errni => $errni,
            
    errtel=>$errtel,
            
    errmobile =>$errmobile,
            
    errcitycode=>$errcitycode,
            
    errpc=>$errpc,
            
    errfill=>$errfill,
            
    errpass=>$errpass
        
    ); 
    $url '../register.php?'.http_build_query($params); 
    echo 

        <script type='text/javascript'> 
        window.location='
    {$url}';
        </script>
    "
    ;
        }
        else
      {
        
            
    $birthday=$year."/".$month."/".$day;//chasbandan tarikh tavalod
            // start of database operation
            
    $q="INSERT INTO register ( name,
            family ,
            father ,
            shsh ,
            sodoor ,
            birthday ,
            nationalid ,
            gender ,
            religion ,
            degree ,
            soldier ,
            mtavallod ,
            province,
            city ,
            bigcity ,
            area ,
            address ,
            postalcode ,
            tel ,
            citycode ,
            mobile ,
            email ,
            userid ,
            userpass ,
            username
            )
            VALUES ('
    $name','$family','$father','$shsh','$sodoor','$birthday','$nationalid',
            '
    $gender','$religion','$degree','$soldier','$mtavallod','$province','$city','$bigcity',
            '
    $area','$address','$postalcode','$tel','$citycode','$mobile','$email','','$pass','$un')";
            
    $result=mysql_query($q,$db);
            if(
    mysql_affected_rows()>0)
                {    
                    echo 
    "عملیات با موفقیت انجام شد";
                }
                     else
                       {    
                           echo 
    "عملیات ناقص انجام شد";
                         }
              
      }
    /// end of data base operation
        
       
    ?>
    جالب این جاست با این که COLLATION بانک من UTF8- PERSIAN _CI هست ولی خیلی داده ها رو بد نشون میده .یعنی یک سری کراکترهای عجیب غریب .
    اشکال از کجاست؟
    جناب آقا میلاد عزیز بابت زحمات شما ممنونم ولی هر چه کردم کدی که شما دادین با اون مشخصات درست نشد اگر رو مثال بالا برام شرح بدین ممنون میشم.
    __________________________________________________________________________
    بدان کوش تا زود دانا شوی
    چو دانا شوی زود والا شوی

    سایت شخصی
    ۱۳۸۷ اسفند ۱۱ ۰۱:۱۹ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    میلاد آفلاین
    برنامه نویس
    ***

    ارسال‌ها: 181
    تاریخ عضویت: ۱۳۸۷ بهمن ۲۵
    اعتبار: 2
    تشکرها : 66
    ( 136 تشکر در 74 ارسال )
    ارسال: #2
    RE: اشکالات کد برنامه من در کجاست
    کد PHP:
    <?

    // اطلاعات لازم برای اتصال به پایگاه داده
    $dbhost  = "localhost";
    $dbname  = "pooyasharif";
    $dbuser  = "root";
    $dbpass  = "";
    $dblink  = mysql_connect($dbhost,$dbuser,$dbpass) or die ('Can not connect to data base');
    $dbused  = mysql_select_db($dbname,$dblink) or die('Can\'t use '.$dbname);
    // برای اینکه اطلاعات به صورت فارسی ذخیره بشه با کاراکتر ست را اینجا ست کنیم ( پی  اچ پی ۵٫۲ به بالا)
    $charset = mysql_set_charset('UTF-8',$dblink);

    // تبدیل مقادیر ارسال شده توسط پست به آرایه ای حاوی اطلاعات دریافتی و تبدیل کاراکتر های اجرایی اچ تی ام ال به متن بی اثر
    foreach($_GET as $key => $val)
        eval('$data['.$key.']="'.htmlentities($val,ENT_QUOTES).'";');

    // البته اینجا را هم میشه به صورت آرایه ست کرد و چک کرد که لازم نباشه یه کد چند با تکرار بشه.
    !ereg('([0-9]{7,8}$)'  ,$data['tel'],$regs)         ?    $error['tel'] = true        : $data['tel'] = $regs['1'];
    !ereg('([0-9]{1,11}$)' ,$data['shsh'],$regs)        ?    $error['shsh'] = true       : $data['shsh'] = $regs['1'];
    !ereg('([0-9]{11}$)'   ,$data['mobile'],$regs)      ?     $error['mobile'] = true     : $data['mobile'] = $regs['1'];
    !ereg('([0-9]{4}$)'    ,$data['citycode'],$regs)    ?     $error['citycode'] = true   : $data['citycode'] = $regs['1'];
    !ereg('([0-9]{10}$)'   ,$data['postalcode'],$regs)  ?     $error['postalcode'] = true : $data['postalcode'] = $regs['1'];
    !ereg('([0-9]{10}$)'   ,$data['nationalid'],$regs)  ?     $error['nationalid'] = true : $data['nationalid'] = $regs['1'];

    // بررسی همسان بودن محتوای فیلد های پسورد
    if($data['pass'] != $data['pass1']) $error['pass'] = 'pass';

    // بررسی برای خالی نبودن مقادیر 
    foreach($data as $key => $val)
        if(!isset($val) || empty($val)) $error['fill'] = true;

    // بررسی آرایه حاوی خطاها. اگر صفر باشه یعنی خطایی رخ نداده و شرت هم اجرا میشه.
    if(count($error)=0)
    {
        $query  = "INSERT INTO `register` (
                `family`, `father`, `shsh`, `sodoor`, `birthday`, `nationalid`, `gender`, `religion`, `degree`,
                `soldier`, `mtavallod`,`province`, `city`, `bigcity`, `area`, `address`, `postalcode`, `tel`, 
                `citycode`, `mobile`, `email`, `userid`, `userpass`,‍‍`username`";
        $query .= ") VALUES (";
        $query .= "'%s', '%s', '%d', '%d', '%d', '%d', '%s', '%s', '%d', '%s'.... )"; // این قسمت را باید بر اساس محتوای مورد نظر ویرایش کنید...
        
        $query  = sprintf($query,$data['name'],$data['family'],$data['father'],$data['shsh'],$data['sodoor'],$data['birthday'],
        $data['nationalid'],$data['gender'],$data['religion'],$data['degree'],$data['soldier'],$data['mtavallod'],$data['province'],
        $data['city'],$data['bigcity'],$data['area'],$data['address'],$data['postalcode'],$data['tel'],$data['citycode'],$data['mobile'],
        $data['email'],'',$data['pass'],$data['$un']);
        
        $result=mysql_query($query,$dblink);

            echo mysql_affected_rows() ? "عملیات با موفقیت انجام شد" : "عملیات ناقص انجام شد";
    }
    else
    {
        // اینم لیست خطا ها که میشه به فرمت دلخواه در آوردشون.
        var_dump($error);
    }    

    ?>
    __________________________________________________________________________
    Two hands working can do more than a thousand clasped in prayer
    (آخرین ویرایش در این ارسال: ۱۳۸۷ اسفند ۱۱ ۱۱:۱۴ صبح، توسط میلاد.)
    ۱۳۸۷ اسفند ۱۱ ۱۱:۰۹ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : kavoshgar63
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,697
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6197 تشکر در 3438 ارسال )
    ارسال: #3
    RE: اشکالات کد برنامه من در کجاست
    header خود html هم یادتون نره
    ۱۳۸۷ اسفند ۱۱ ۱۱:۳۶ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    kavoshgar63 آفلاین
    عضو
    ***

    ارسال‌ها: 54
    تاریخ عضویت: ۱۳۸۷ اسفند ۹
    اعتبار: 1
    تشکرها : 19
    ( 4 تشکر در 4 ارسال )
    ارسال: #4
    RE: اشکالات کد برنامه من در کجاست
    با تشکر از میلاد عزیز :
    پاسخ ها کاملا واضح بودند ولی فک کنم باید در زمان insert هم یه تغییراتی اعمال بشه تا مشکل کراکترهای فارسی حل بشه .
    من این خط رو اضافه کردم
    کد PHP:
    $charset mysql_set_charset('UTF-8',$dblink); 
    ولی متاسفانه همون مشکل قبلی پدیدار شد.
    کراکترهای عجیب و غریب ذخیره شده.
    __________________________________________________________________________
    بدان کوش تا زود دانا شوی
    چو دانا شوی زود والا شوی

    سایت شخصی
    ۱۳۸۷ اسفند ۱۱ ۱۱:۵۵ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    میلاد آفلاین
    برنامه نویس
    ***

    ارسال‌ها: 181
    تاریخ عضویت: ۱۳۸۷ بهمن ۲۵
    اعتبار: 2
    تشکرها : 66
    ( 136 تشکر در 74 ارسال )
    ارسال: #5
    RE: اشکالات کد برنامه من در کجاست
    اینو را چک کن برای همه نسخه های پی اچ پی:
    کد PHP:
    mysql_query("SET CHARACTER SET utf8;");
    mysql_query("SET NAMES utf8_persian_ci;"); 
    اگر این همه جواب نداد مشکل از دیتا بیس شماست.
    __________________________________________________________________________
    Two hands working can do more than a thousand clasped in prayer
    (آخرین ویرایش در این ارسال: ۱۳۸۷ اسفند ۱۱ ۱۲:۰۸ عصر، توسط میلاد.)
    ۱۳۸۷ اسفند ۱۱ ۱۲:۰۷ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    kavoshgar63 آفلاین
    عضو
    ***

    ارسال‌ها: 54
    تاریخ عضویت: ۱۳۸۷ اسفند ۹
    اعتبار: 1
    تشکرها : 19
    ( 4 تشکر در 4 ارسال )
    ارسال: #6
    RE: اشکالات کد برنامه من در کجاست
    این یه صفحه مخفیه و بعد از درج اطلاعات به صفحه بعد میره و در صورت اشکال به صفحه قبل فک نکنم هدر لازم باشه .
    یعنی برای صفحات مخفی هم هدر لازمه؟
    این دو تکه کد رو کجا بنویسم؟
    کد PHP:
    mysql_query("SET CHARACTER SET utf8;");
    mysql_query("SET NAMES utf8_persian_ci;"); 
    __________________________________________________________________________
    بدان کوش تا زود دانا شوی
    چو دانا شوی زود والا شوی

    سایت شخصی
    ۱۳۸۷ اسفند ۱۱ ۱۲:۱۶ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,697
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6197 تشکر در 3438 ارسال )
    ارسال: #7
    RE: اشکالات کد برنامه من در کجاست
    (۱۳۸۷ اسفند ۱۱ ۱۲:۱۶ عصر)kavoshgar63 نوشته شده توسط:  این یه صفحه مخفیه و بعد از درج اطلاعات به صفحه بعد میره و در صورت اشکال به صفحه قبل فک نکنم هدر لازم باشه .
    یعنی برای صفحات مخفی هم هدر لازمه؟
    این دو تکه کد رو کجا بنویسم؟
    کد PHP:
    mysql_query("SET CHARACTER SET utf8;");
    mysql_query("SET NAMES utf8_persian_ci;"); 

    توی کدوم قسمت اطلاعات درست نمایش داده نمیشه؟ توی register.php یا همین صفحه؟
    شما توی این صفحه هم echo دارید بنابراین هدر لازمه
    ۱۳۸۷ اسفند ۱۱ ۰۱:۰۷ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    kavoshgar63 آفلاین
    عضو
    ***

    ارسال‌ها: 54
    تاریخ عضویت: ۱۳۸۷ اسفند ۹
    اعتبار: 1
    تشکرها : 19
    ( 4 تشکر در 4 ارسال )
    ارسال: #8
    RE: اشکالات کد برنامه من در کجاست
    فرمایش جناب سهرابلو کاملا صحیحه اما من این echo رو برای خودم نوشتم و در نسخه نهایی این پاک میشه و در صفحه دیگری این پیام به نمایش در میاد.
    بازهم متشکرم.
    آیا نکات دیگه ای هم هست که از قلم افتاده باشه؟
    __________________________________________________________________________
    بدان کوش تا زود دانا شوی
    چو دانا شوی زود والا شوی

    سایت شخصی
    ۱۳۸۷ اسفند ۱۱ ۰۹:۳۹ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS