• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
چرا فقط وقتی خطی که دستور هدر دارد را در خطوط پایینتر غیر فعال می کنم، کد خط های بالا
#1
در کد زیر، وقتی خط 231 که دستور هدر دارد یعنی:

header("location:../taiide_sabtenam.php?id=".$id_user." ");

را غیر فعال می کنیم

آنوقت می بینیم که شرطی که در خط 117 است، یعنی:

if ($tedad_arghame_S_hamrah == 11 )

و همچنین شروط دیگر، عمل می کند، وگرنه این شروط عمل نمی کند!!


عجیب است، مگر اجرای شرط در خطوط بالاتر، باید به فعال یا غیر فعال شدن یک خط در خطوط پایینتر ربط داشته باشد؟
لطفا راهنمایی فرمایید
با تشکر قبلی
کد:
<?php
require_once 'connect.php';
$connect = new connectdb;
if (isset($_POST['send']))
{
    // تعریف متغیرهایی که درون شرطها استفاده می شود
    $email_tekrari = 0 ;
    $code_melli_tekrari = 0 ;
    $err = "";

    // دریافت مقادیر از فرم
    $fname = $_POST['fname'];
   $lname = $_POST['lname'];
    $jensiiat = $_POST['jensiiat'];
   $code_melli = $_POST['code_melli'];
   $S_hamrah = $_POST['S_hamrah'];
    $id_daneshgah = $_POST['daneshgah'];
    $id_ostan = $_POST['state'];
    $id_shahr = $_POST['city'];
    $email = $_POST['email'];
    $user_pass = $_POST['S_hamrah'];
    $img = $aks;
    $modir = 0 ;
    // یافتن تاریخ ثبت نام
    date_default_timezone_set("Asia/Tehran");
    $date = date("Y-m-d H:i:s");

    // قطعه کد چک صحت کد ملی در PHP
    $code = $code_melli;
    function _custom_check_national_code($code)
        {
            if(!preg_match('/^[0-9]{10}$/',$code))
                return false;
            for($i=0;$i<10;$i++)
                if(preg_match('/^'.$i.'{10}$/',$code))
                    return false;
            for($i=0,$sum=0;$i<9;$i++)
                $sum+=((10-$i)*intval(substr($code, $i,1)));
            $ret=$sum%11;
            $parity=intval(substr($code, 9,1));
            if(($ret<2 && $ret==$parity) || ($ret>=2 && $ret==11-$parity))
                return true;
            return false;
        }
    
    // اگر تعداد ارقام کدملی غیر از 10 بود
    if (strlen($code) <> 10)
        {
            header("location:../account_sait_j.php?code_melli_tedade_argham");
        }
    // اگر فرمت کدملی ناصحیح بود    
    elseif (_custom_check_national_code($code) == false)
        {
            header("location:../account_sait_j.php?code_melli_nadorost");  
        }
    // اگر فرمت کدملی درست بود    
    elseif (_custom_check_national_code($code) == true)
        {
            //echo "code_melli ok"."<br>";
        }
    
    // بدست آوردن دو کاراکتراول شماره همراه
    $avvale_S_hamrah = substr($S_hamrah,0,2);
    // بدست آوردن تعداد ارقام شماره همراه
    $tedad_arghame_S_hamrah = strlen($S_hamrah);
    
    // اگر تعداد ارقام شماره همراه، برابر 11 رقم نبود
    if ($tedad_arghame_S_hamrah == 11 ) {
        //echo "11 ragham dorost"."<br>";
        // اگر دو رقم اول شماره همراه 09 نبود
        if ($avvale_S_hamrah == "09") {
            //echo "do ragham avval 09 ast"."<br>";
        } else {
            //echo "do ragham avval 09 nist"."<br>";
            header("location:../account_sait_j.php?S_hamrah_n");
        }
    } else {
        //echo "11 ragham nist"."<br>";
        header("location:../account_sait_j.php?S_hamrah_tedade_argham");
    }
    
    // در دیتابیس بگرد، اگر از قبل، ایمیل یا کدملی مشابه کد ملی ثبت کننده وجود داشت، اعلام کن تکراری است
    $sqle = "select * from `tbl_user` ";
    $res_e = $connect->query($sqle);
    //var_dump($sqle);
    while ($row_e = mysqli_fetch_assoc($res_e))
        {
            
            $email_db = $row_e['email'];
            $code_melli_db =  $row_e['code_melli'];
            //echo "id_user: ".$row_e['id_user']." <br>";
            //echo "email_db: ".$row_e['email']." <br>";
            //echo "code_melli_db: ".$row_e['code_melli']." <br>";
            // نمایش مقدار یک متغیر در پنجره پاپ آپ
            //echo "<script>var url = '$code_melli_db'; alert(url); </script>";
            // اگر ایمیل تکراری بود
                if($email_db == $email ) {
                    //echo "email_db: ".$email_db." tekrari a: "." <br>";
                    //echo "email: ".$email."<br>";
                    $email_tekrari = 1 ;
                    $err = "email_tekrari";
                    header("location:../account_sait_j.php?email_tekrari");
                    //echo "email_db: ".$email_db." tekrari k "." <br>";
                    break;
                }
                // اگر کدملی تکراری بود
                elseif ( $code_melli_db == $code_melli)
                {
                    //echo "code_melli_db: ".$code_melli_db." tekrari b "." <br>";
                    //echo "code_melli: ".$code_melli."<br>";
                    $code_melli_tekrari = 1 ;
                    $err = "code_melli_tekrari";
                    
                    header("location:../account_sait_j.php?code_melli_tekrari");
                    //echo "code_melli_db: ".$code_melli_db." tekrari f "." <br>";
                    break;
                }
                // اگر هیچکدام تکراری نبود
                else
                {
                //echo "email_tekrari c: ".$email_tekrari." <br>";
                //echo "code_melli_tekrari c: ".$code_melli_tekrari." <br>";
                }
            
        } // پایان حلقه وایل بررسی دیتابیس در مورد تکراری بودن کدملی و شماره همراه
        // استفاده از حاصل بررسی فوق و اعلام تکراری بودن ایمیل یا کدملی
        if ($email_tekrari == 1)
            {
                header("location:../account_sait_j.php?email_tekrari");
                //echo "email_db: ".$email_db." tekrari g "." <br>";
                //echo "email_tekrari: ".$email_tekrari." <br>";
                //echo "code_melli_tekrari: ".$code_melli_tekrari." <br>";
                
            }
            elseif ($code_melli_tekrari == 1) {
                header("location:../account_sait_j.php?code_melli_tekrari");
                //echo "code_melli_db: ".$code_melli_db." tekrari u "."<br>";
                //echo "email_tekrari: ".$email_tekrari." <br>";
                //echo "code_melli_tekrari: ".$code_melli_tekrari." <br>";
            }

        // اگر ایمیل و کدملی تکراری نبود
        if($email_tekrari == 0  && $code_melli_tekrari == 0 ) {
            // اگر هیچکدام از این فیلدها خالی نبود
            if(!empty($fname) && !empty($lname) && !empty($code_melli) &&!empty($email) &&!empty($S_hamrah) &&!empty($id_daneshgah)  &&!empty($id_ostan)  &&!empty($id_shahr) )
                {
                    // اگر فرمت ایمیل درست بود
                    if (preg_match("/[a-zA-Z0-9._-]*@[a-zA-Z0-9\.-]*\.[a-zA-Z\.]*/", $email))
                    {
                        // بدست آوردن دو کاراکتراول شماره همراه
                        $avvale_S_hamrah = substr($S_hamrah,0,2);
                        if ("a" == "a")
                        // مقادیر فرم ارسالی را در دیتابیس وارد کن
                        $sql = "INSERT INTO `tbl_user` (`fname`, `lname`, `jensiiat`, `code_melli`, `tarikhe_sabtenam`, `S_hamrah`, `id_daneshgah`, `id_ostan`, `id_shahr`, `email`, `user_pass`, `img`, `modir`) VALUES ('".$fname."', '".$lname."', '".$jensiiat."', '".$code_melli."', '".$date."', '".$S_hamrah."', '".$id_daneshgah."', '".$id_ostan."', '".$id_shahr."', '".$email."', '','".$img . "', '".$modir . "');";
                        $register = $connect->query($sql);
                        // اگر داده های فرم با دستور بالا در دیتابیس وارد شد
                        if ($register) {
                            //echo " querysh doreste "."<br>";
                            $err = "success";
                            // بدست آوردن آیدی کاربر
                            $sql_us = "select * from `tbl_user`  WHERE `code_melli` =  '".$code_melli."' ";
                            $res_us = $connect->query($sql_us);
                            $row_us = mysqli_fetch_assoc($res_us);
                            $id_user=  $row_us['id_user'];
                            //echo "id_user: ".$id_user."<br>";

                            // درج تاریخ ثبت نام در دیتا بیس
                            date_default_timezone_set("Asia/Tehran");
                            //echo "miladi: ".date("Y/m/d")."<br>";
                            $date = date("Y-m-d H:i:s");
                            //echo "date: ".$date."<br>";
                            $sql_u = "UPDATE `tbl_user` SET `tarikhe_sabtenam` = '".$date."' WHERE `id_user` =  '".$id_user."' ";
                            $reg = $connect->query($sql_u);
                            
                            // اضافه کردن یک ردیف در جدول مقدار پیشرفت، برای این کاربر جدید
                            $sql_p = "INSERT INTO `tbl_meghdare_pishr_user` (`id_meghdare_pishrat`, `id_user`, `emtiaz`,`emtiaz_akharin_azmoon`, `id_dowreh_konooni`, `id_seri_konooni`, `id_dars_konooni`, `id_azmoon_konooni`, `btm_faal`,`tarikhe_akharin_azmoon`, `mahroomiiat`, `sodoore_gavahi`) VALUES (NULL, '".$id_user."', '0','0', '1', '1', '1', '1', '0',' ','0', '0');";
                            //$sql_p = "INSERT INTO `tbl_meghdare_pishr_user` (`id_meghdare_pishrat`, `id_user`, `emtiaz`, `emtiaz_akharin_azmoon`, `id_dowreh_konooni`, `id_seri_konooni`, `id_dars_konooni`, `id_azmoon_konooni`, `btm_faal`, `tarikhe_akharin_azmoon`, `mahroomiiat`, `sodoore_gavahi`) VALUES
                            //(NULL, '222', '54', '45', '1', '2', '3', '4', '1', '2019-03-12 10:04:24', '0', '1');";
                            $reg = $connect->query($sql_p);
                            var_dump($reg);
                            // رفتن به صفحه تایید ثبت نام
                            //header("location:../taiide_sabtenam.php?id=".$id_user." ");
                        // اگر داده ها در دیتابیس وارد نشد
                        } else {
                            ////echo "querysh najoore";
                            $err = "unseccreg";
                            header("location:../account_sait_j.php?unseccreg");
                        }
                    // اگر فرمت ایمیل درست نبود    
                    } else {
                        $err = "email";
                        header("location:../account_sait_j.php?email");
                    }
                }
                // اگر یکی از مقادیر شرط خالی نبودن، خالی بود
                else{
                    $err = "empty";
                    header("location:../account_sait_j.php?empty");
                }
        }
        // اگر ایمیل یا کدملی تکراری بود
        else {
        
        header("location:../account_sait_j.php?tekrari");
        ////echo "err".$err." <br>";
        }
        
        
}    
//اگر بدون زدن دکمه ارسال، وارد این صفحه شده بود
else    
{
   ////echo "notsend";
}        
?>
  پاسخ
تشکر شده توسط :
#2
یعنی چی؟

خب درستش اینه که دستورات بعد header عمل نکنه
چون فایل از انجا به بعد دیگه عوض میشه
و اصولیش هم اینه که بعد از دستور Header یک دستور exit; بذاری
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط :
#3
(۱۳۹۸ فروردین ۲۵, ۱۰:۴۸ ق.ظ)Y.P.Y نوشته: یعنی چی؟

خب درستش اینه که دستورات بعد header عمل نکنه
چون فایل از انجا به بعد دیگه عوض میشه
و اصولیش هم اینه که بعد از دستور Header یک دستور exit; بذاری

از اینکه پاسخ دادید متشکرم ولی سوالم را درست متوجه نشدید
مشکل اینجاست که چرا هدر خط بالاتر فقط به شرطی عمل میکنه که هدر خط پایینتر غیر فعال بشه؟!!


یعنی
header("location:../account_sait_j.php?S_hamrah_n");

وقتی عمل میکنه که هدر خط پایینتر، یعنی
header("location:../taiide_sabtenam.php?id=".$id_user." ");

غیر فعال بشه!
  پاسخ
تشکر شده توسط :
#4
لطفا توی کدت جایی که مشکل داری رو بذار نه کل کدت یا یه خط کد ، نامفهومه سوالت کلا
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان