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

نام تاپیک: مشکل ذخیره نشدن اطلاعات تو سشن

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

    مشکل ذخیره نشدن اطلاعات تو سشن

    سلام
    من دارم یه سبد خرید مینویسم اینم کدام:
    کد کنترلر:

    <?php
    namespace Controller;
    session_start();
    class Cart
    {
    public static $counter=0;
    // private $customerid;
    //private $amount;
    private $choosenProduct;
    //private $counterOfAddItem=0;

    public function __construct()
    {
    Cart::$counter++;
    echo Cart::$counter;
    // $this->customerid=$customerid;
    // $this->amount=$amount;
    $this->choosenProduct=array();//tabdil be araye ba castam mishod?
    //$_SESSION['Cart']=array();
    }
    public function addItem($choosenItem)
    {

    array_push($this->choosenProduct,$choosenItem);
    $_SESSION['Cart']=$this->choosenProduct;
    var_dump($_SESSION['Cart']);
    /* echo $choosenItem;
    array_push($this->choosenProduct,$choosenItem,3);//yek onsor(arayei) be choosenProduct ezafeKardim
    var_dump($this->choosenProduct);
    $_SESSION['Cart']=$this->choosenProduct;
    //har sefaresh kharid ye araye ke har ozv araye arayei az ettelat sefareshe
    */
    }

    }



    اینم کد ویو:

    <?php
    require_once('C:\wamp64\www\MWS\Santa\classes\Cont roller\Cart.php');
    @$submit=$_POST['submit'];
    $cartObj=new \Controller\Cart();
    if(isset($submit)){
    // echo '<form method=post><input type=text name=amount >enter amount of order <br><input type=submit name=submit>submit</form>';

    $amount=$_POST['amount'];
    $customerid=$_POST['customerid'];
    $productid=$_POST['productid'];
    $choosenItem=array('productid'=>$productid,'custom erid'=>$customerid,'amount'=>$amount);
    $cartObj->addItem($choosenItem);

    }
    if(!isset($submit))
    {
    var_dump($_SESSION['Cart']);
    foreach($_SESSION['Cart'] as $product)
    {
    foreach($product as $value)
    echo $value;
    }
    }


    ?>



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

  2. #2
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: مشکل ذخیره نشدن اطلاعات تو سشن

    session_start باید اولین خط باشه
    کلا ساخارت مشکل داره نباید session_Start رو توی فایل کلاس بزاری

  3. #3
    کاربر دائمی
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    ساری
    پست
    210

    نقل قول: مشکل ذخیره نشدن اطلاعات تو سشن

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

    <?phpnamespace Controller;session_start();require_once('C:\wamp64 \www\MWS\Santa\classes\Model\Cart.php');class Cart{ public static $counter=0; // private $customerid; //private $amount; private $choosenProduct=array(); private $cartModel; //private $counterOfAddItem=0; public function __construct() { $this->cartModel=new \Cart(); // $this->customerid=$customerid; // $this->amount=$amount; } public function addItem($choosenItem) { array_push($_SESSION['Cart'],$choosenItem); var_dump($_SESSION['Cart']); /* echo $choosenItem; array_push($this->choosenProduct,$choosenItem,3);//yek onsor(arayei) be choosenProduct ezafeKardim var_dump($this->choosenProduct); $_SESSION['Cart']=$this->choosenProduct; //har sefaresh kharid ye araye ke har ozv araye arayei az ettelat sefareshe */ } }

    ویو:

    <?php
    //$_SESSION['Cart']=array();require_once('C:\wamp64\www\MWS\Santa\cla sses\Controller\Cart.php');@$submit=$_POST['submit'];$cartObj=new \Controller\Cart();if($_SESSION['Cart']==null) $_SESSION['Cart']=array();if(isset($submit)&&!empty($submit)){ $amount=$_POST['amount']; $customerusername=$_SESSION['registeredUser']; $productid=$_POST['productid']; $cost=$_POST['cost']; $choosenItem=array('productid'=>$productid,'amount '=>$amount,'cost'=>$cost); $cartObj->addItem($choosenItem); // array_push($_SESSION['Cart'],$choosenItem); } if(!isset($submit)) { var_dump($_SESSION['Cart']); $totalcost=0; foreach($_SESSION['Cart'] as $product) { foreach($product as $value) echo $value; @$_SESSION['totalcost']+=$product['cost']*$product['amount']; //ye araye darim be esm session ke chanta meghdar dare ke harmeghdaresh ye arayas //pas vaghti baravval mishkanim be araye miresim } echo 'totalCost is '.$_SESSION['totalcost']; echo '<a href=Order.php>For Set Order Click Here</a>'; //session_unset(); }
    ?>

    نمیدونم از لحاظ برنامه نویسی کار درستیه یا نه؟

  4. #4
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: مشکل ذخیره نشدن اطلاعات تو سشن

    متوجه نمیشم این کدی که گزاشتی چیه چون سشن بازم توی کنترلر به نظر میاد باشه
    سشن رو بزار تو اولین اسکریپتی که لود میشه که ظاهرا تو سیستم شما ویو هستش ... یعنی وقتی آدرسی فراخانی میشه ویوی اون آدرس لود میشه و کنترلر ها توی اون ویو اینکلود شدن
    در کل این روش کد نویسی اسپاگتی زیاد تعریفی نداره و بعدا تو رفع اشکال و نگهداری سیستم دردسر زیاد داری

    یا همه ویو ها رو از یک فایل مثلا index.php لود کن یعنی در خواست به Index.php بره و اون تشخیص بده کدوم ویو باید لود بشه
    یا اینکه اگه با همین ساختار فعلی میخای بری یه فایل مثلا config.php بساز و توی همه ویو هات اینکلود کن و سشن رو تو او نبزار اینجوری پسفردا اگه نیاز به تغییر بود یا کدی نیاز بود تو همه ویو ها باشه کافیه یجارو تغییر بدی نه همه ویو هات رو
    سعی کن یه فریم ورک یاد بگیری که نخای کلی وقت بزاری رو ساختار کد ها
    همچنین require_once رو اینجوری آدرس دهی نکن پس فردا بردیش رو سرور همه آدرس های ویندوزی خراب میشن

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

    نقل قول: مشکل ذخیره نشدن اطلاعات تو سشن

    مرسی از توضیحت اما اونو فعلا بذاریم کنار میشه ببینی این کدی که برای ثبت نام و لوگین نوشتم (خارج بحث امنیت) از لحاظ اصول ام وی سی درسته یا نه ؟ ببخش زحمت میدم .
    خب این فایل مدلمه :

    model.PNG

    اینم فایل کنترلر:

    controller.PNG
    اینم دوتا فایل لوگین ثبت نام:
    login.PNG
    register.PNG
    و اینکه منظورت از برنامه نویسی اسپاگتی چیه؟
    آخرین ویرایش به وسیله lordofphp : دوشنبه 07 خرداد 1397 در 13:01 عصر

  6. #6
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: مشکل ذخیره نشدن اطلاعات تو سشن

    بد نیست روشت مثلا میخای ساختار mvc رو پیاده کنی ولی خب یه مشکلاتی اصولی داری
    تو ساختار mvc اول کنترلر اجرا میشه و بعد کاست نترلر مدل ها رو فراخانی میکنه در صورت نیاز و در نهایت کنترلر ویو رو فراخانی میکنه و دیگه توی ویو هیچ کد منطق برنامه نویسی وجود نداره و فقط نمایش داده هستش

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

    مشکل اصلی کدت به نظر من اینه که حجم کد هاست خیلی بالاست تکرار کد خیلی زیاده
    مثلا
    توی ویوی ثبت نام کلی کد نوشته که از $_REQUEST بخونه داده ها رو و بریزه توی متغیر
    بعد کلی پارامتر فرستدی به کنترلر
    کنترلر دوباره همشون رو پاس داده به مد
    مدل دوباره همه پارامتر ها رو مثل ویو escape کرده

    شما میتونیستی آرگومان ها رو به صورت آرایه بفرستی از ویو به مدل یعنی همون $_REQUEST رو بفرستی
    و توی مدلت شما نیاز داری به یه تابع ولیدیشن که تک تک خونه های آرایه رو escape کنه و نتیجه رو برگردونه و این تابع رو برای همه مدل هات استفاده کنی بجای اینکه بخای توی هرتابع بشینی تک تک آرگومان ها رو escape کنی
    و البته یه ولیدیشن واقعی هم نیاز داری که برای تک تک پارامتر های ارسالی به مدل قانون تعریف کنی مثلا فلان پرامتر باید عددی باشه یا فلان پارامتر باید ایمیل باشه

    نمونش رو اینجا میتونی ببینی
    https://github.com/rakit/validation

  7. #7
    کاربر دائمی
    تاریخ عضویت
    شهریور 1390
    محل زندگی
    ساری
    پست
    210

    نقل قول: مشکل ذخیره نشدن اطلاعات تو سشن

    خب یه تغییراتی دادم حالا بببینن چطور شده:
    یه فایل ایندکس نوشتم اطلاعات بش پست کردم
    این فایل ایندکس
    index.PNG
    اینم فایل مدل:
    model.PNG
    اینم فایل کنترلر:
    cont1.PNG
    cont2.PNG
    اینم فایلای ویوم لوگین و رجیستر
    login.PNG

    register.PNG
    بنظرتون کار درستی کردم ک تو ایندکس با $_GET ادرسو گرفتم بعد متغیررا با ویو پست کردم به خود ادرس مثلا
    index.php?address=login
    درکل نوع آدرس دهی و تنظیم اینکه کنترلر و ویوو چطوری ارتباط بگیرن درسته بنظرتون؟

  8. #8
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: مشکل ذخیره نشدن اطلاعات تو سشن

    بهتر شده
    همه فریم ورک ها mvc آدرس رو با GET میفرستن و میگیرن یه چیزی شبیه به این

    site.com/index.php?address=controller/function


    ولی البته با htaccess آدرس ها رو جوری بازنویسی میکنن که به ای نشکل دیده بشه
    site.com/controller/function

    تو فریم ورک ها یک کلاس هست به اسم route.php که توی اون همه آدرس ها رو تعریف میکنی و مشخص میکنی که هر آدرس به کدوم کنترلر باید بره و کدوم متد یا تابع کنترلر رو باید اجرا کنه
    بعد توی ویو یا توی Index.php با اون میخونی آدرس ها رو
    مثلا

    class Route{

    public $address ;
    public $name ;
    public $controller ;
    public $method ;
    static $stack = [] ;

    static function save($address , $controller_method , $name )
    {
    list($controller , $method ) = explode('@' , $controller_method);
    $route= new Route();
    $route->address = $address ;
    $route->controller = $controller ;
    $route->method = $method ;
    $route->name = $name ;
    self::$stack[] = $route ;
    return $route ;
    }

    static function name($name){

    foreach(self::$stack as $route )
    if($route->name == $name)
    return $route->address ;
    }

    static function address( $address ){

    foreach(self::$stack as $route )
    if($route->address == $address)
    return $route ;
    }


    }

    Route::save('/login' , 'UserController@login' , 'login_route');
    Route::save('/register' , 'UserController@register' , 'register_route');


    بعد توی ویوهات وقتی مخای آدرس بدی بجای اینکه خود آدرس رو بنویسی اینجوری با کلاس چاپشون میکنی
    echo Route::name('login_route');


    مزیتش اینه که پسفردا اگه آدرس هات تغییر کرد دیگه نمیخاد بری توی تک تک ویو هات تغییر بدی

    توی index.php هم وقتی میخای ببینی این آدرسی که کاربر زده باید چه کنترلر و ویویی رو لود کنه
    Route::
    address
    رو اجرا میکنی و اون بهت یه شی رو برمیگردونه که حاوی نام کنترلر و متدشه

    اگه همه فایل های ویوت از index.php لود میشن دیگه نیاز نداری توی ویو ها config.php رو اینکلود کنی تو ایندکس بزارش

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

    نقل قول: مشکل ذخیره نشدن اطلاعات تو سشن

    واقعا مرسی از کمکت ولی یه سوالی ک برام پیش اومده تو کنترلرا وقتی فرم میذاریم اکشن فرم چی بذاریم من اینطوری کردم
    مثلا میخوام اطلاعات بره به کنترلر شو ال ارتیکل بعد تو شو آرتیکل با $_POST گرفتمشون کاردرستیه؟
    action=index.php?address=showallarticle

  10. #10
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: مشکل ذخیره نشدن اطلاعات تو سشن

    درسته مشکل نداره

  11. #11
    کاربر دائمی
    تاریخ عضویت
    مهر 1394
    محل زندگی
    ایران
    پست
    357

    نقل قول: مشکل ذخیره نشدن اطلاعات تو سشن

    پیشنهاد میدم که حتما یه فریمورک رو یاد بگیرید ci | yii2 | laravel

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

  1. مشکل با ذخیره نشدن اطلاعات در دیتابیس
    نوشته شده توسط hesampersian در بخش C#‎‎
    پاسخ: 10
    آخرین پست: یک شنبه 24 خرداد 1394, 15:48 عصر
  2. سوال: ذخیره نشدن اطلاعات تو بانک اکسس در C#‎
    نوشته شده توسط NASA's Spaceman در بخش C#‎‎
    پاسخ: 3
    آخرین پست: جمعه 27 تیر 1393, 14:24 عصر
  3. سوال: مشکل در ذخیره نشدن اطلاعات در linq
    نوشته شده توسط hamid_0341 در بخش C#‎‎
    پاسخ: 32
    آخرین پست: دوشنبه 25 فروردین 1393, 23:07 عصر
  4. سوال: مشكل در ذخيره نشدن اطلاعات در datagrid
    نوشته شده توسط manager_mrd در بخش C#‎‎
    پاسخ: 4
    آخرین پست: شنبه 04 اردیبهشت 1389, 12:44 عصر
  5. ذخیره نشدن اطلاعات بعد از post کردن آن
    نوشته شده توسط tazekar در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 17
    آخرین پست: دوشنبه 21 مهر 1382, 04:49 صبح

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

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