تالار گفتمان nCIS.ir

نسخه‌ی کامل: ذخیره سشن در دیتابیس
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
صفحات: 1 2 3

ABZiko

سلام، استاد این کلاس رو در صفحه ای که قرار لاگین بشه، وارد کردم :
                case'logIn':
                    function AutoLoad($class) {
                        require_once 'Classes/Class.' . $class . '.php';
                    }
                    spl_autoload_register('AutoLoad');
                    $dbsh = new DBSessionHandler();
                    $result = User::logIn($_POST['userName'], $_POST['passWord']);
                    if ($result) {
                        if (!empty($_SERVER['HTTP_REFERER'])) {
                            header("Refresh:5;url={$_SERVER['HTTP_REFERER']}");
                        } else {
                            echo "هیچ بازگشتی نیست ! لطفا به صورت دستی به صفحه قبل باز گردید !";
                        }
                        $_SESSION['id'] = $result['id'];
                        $_SESSION['firstName'] = $result['firstName'];
                        $_SESSION['lastName'] = $result['lastName'];
                        $_SESSION['userName'] = $result['userName'];
                        $_SESSION['passWord'] = $result['passWord'];
                        $_SESSION['mail'] = $result['mail'];
                        $_SESSION['file'] = $result['file'];
                        $_SESSION['IC'] = $result['IC'];
                        $_SESSION['biography'] = $result['biography'];

                        require_once('Classes/Statistics.php');

                        $onLine = new Statistics();
                        $onLine->addStatistics($_SESSION['userName'], $_SESSION['id']);

                        $allVisit = new Statistics();
                        $allVisit->addAllStatistics($_SESSION['userName']);

                    } else {
                        echo "<div>اطلاعات وارد شده نادرست می باشد !</div>";
                        if (!empty($_SERVER['HTTP_REFERER'])) {
                            header("Refresh:5;url={$_SERVER['HTTP_REFERER']}");
                        } else {
                            echo "هیچ بازگشتی نیست ! لطفا به صورت دستی به صفحه قبل باز گردید !";
                        }
                    }
                    break;

حالا موقعی که فرد لاگین می کنه، جدول داخل دیتابیس ثبت می شه، ولی سشن ها رو نه در دیتابیس ثبت می کنه و موقعی که در صفحه Home.php برنامه ام می رم، با این که با این کد کلاس ها رو require می کنم :
 function AutoLoad($class) {
        require_once 'Classes/Class.' . $class . '.php';
    }
    spl_autoload_register('AutoLoad');
    $dbsh = new DBSessionHandler();


اما به جای لاگین و ثبت نام، نام کاربری کاربری که لاگین کرده رو نمی نویسه ...
چی کار کنم ؟ Blush

ABZiko

اگر دوستان ما رو راهنمایی کنن، ممنون می شیم ...
باید چک کنید چرا ثبت نمیشه. شاید خطایی توی کوئریها دارین. چک کنید تنظیمات دیتابیس درسته؟

ABZiko

قبل از اتصال کلاس درست کار می کرد و مشکلی نداره، تنظیمات دیتابیس رو هم درست کردم، برام جالبه که جدول رو ایجاد می کنه ولی سشن رو استارت نمی کنه و ثبتش هم نمی کنه ...
خطاهای MySQL رو نمایش بدین ببینیم مشکل از چیه.

ABZiko

چطور باید نمایش بدم ؟ Big Grin

ABZiko

کسی از دوستان نمی دونه مشکل از کجاست ؟
error_reporting رو on کنید ببینید چیزی دستگیرتون میشه یا نه
(30-04-1394، 11:17 ب.ظ)ABZiko نوشته: [ -> ]چطور باید نمایش بدم ؟ Big Grin

وا !
echo mysqli_error();

ABZiko

استاد بنده چون از MVC و PDO استفاده می کنم، MySQLi رو بلدم نیست ... Cool Big Grin
استاد توی همون صفحه ای که لاگین صورت می گیره این کد رو بزارم؟ چون گذاشتمش ، این ارور رو داد ...


نقل قول:
( ! ) Warning: mysqli_error() expects exactly 1 parameter, 0 given in D:WampServerwwwdribbbleInitial.php on line 555
Call Stack
# Time Memory Function Location
1 0.0030 247624 {main}( ) ..Initial.php:0
2 0.0344 405624 mysqli_error ( ) ..Initial.php:555
برای MySQLi باید متغیری که کانکشن رو داخلش ذخیره کردین بعنوان پارامتر به تابع mysqli_error بدین.
برای PDO هم میتونید از متد errorInfo روی شئ PDO استفاده کنید.
سلام
تشکر فراوان بابت کلاس خوبتون
به این کد من ی نگا بندازید.

<?php
require_once('session.php');
require_once('db.php');
$dbsh = new DBSessionHandler();
$_SESSION['one']='two';
$_SESSION['three']='fore';
?>

مشکل این کد کجاست؟
چرا این کد تو جدول ردیف ایجاد نمیکنه.
خیلی ممنون.
مرسی
سلام
میدونم در این مورد خیلی بحث شده.
من خودم دو سه روزی میشه که تو انجمن های مختلف php دنبال این مبحث بودم و تاپیک های ایجاد شده رو مطالعه میکردم.
خیلی از افراد ذخیره سشن در یتابیس رو قبول داشتن و بعضی ها هم این مبحث رو قبول نداشتن.
خیلی جاها میگفتن ذخیره سشن در دیتابیس در سایت های شلوغ باعث میشه که روی سرور فشار بیاد و سرور پاسخ گو نباشه.
تو بعضی جاهاهم میگفتن دخیره سشن در دیتابیس خیلی بهتره.
مثلا تو ی جایی خوندم که yii هم از مکانیزم ذخیره سشن در دیتابیس استفاده میکنه.
حالا
میشه کسی بیاد و منو قانع کنه که از کدوم روش استفاده کنم.

برای امنیت هم که گفتن سشن ها رو کد گذاری کنیم.
ممنون.
ببینید، اینکه دقیقاً بگیم توی دیتابیس گذاشتن خوبه یا نه ممکن نیست چون بستگی به نوع پروژه و میزان ارتباط با سشن و استفاده از متغیرهای سشن توی بخشهای مختلف پروژه و... داره ولی یه چیزی کاملاً قطعیه و اونم اینه که کنترل سشن رو خودتون در دست بگیرین. حالا شده با فایل یا با دیتابیس ولی حداقل کاری که انجام میدین، مسیر ذخیره سازی فایلهای سشن رو از محل پیشفرض که مشترک هست تغییر بدین و مثلاً یه پوشه توی هاست خودتون و ترجیحاً بالاتر از public_html بگذارین.

Yii هم همیشه از مکانیزم ذخیره سشن توی دیتابیس استفاده نمیکنه و فقط این قابلیت رو داره و بعنوان یه فریمورک کامل و Full Stack، این ویژگی رو برای راحتی شما داخل خودش پیاده سازی کرده ولی دیگه بستگی به شما داره که درصورت نیاز و تمایل خودتون، از این قابلیتش استفاده کنید یا نه.
(30-06-1394، 08:27 ب.ظ)olampiad نوشته: [ -> ]سلام
تشکر فراوان بابت کلاس خوبتون
به این کد من ی نگا بندازید.

<?php
require_once('session.php');
require_once('db.php');
$dbsh = new DBSessionHandler();
$_SESSION['one']='two';
$_SESSION['three']='fore';
?>

مشکل این کد کجاست؟
چرا این کد تو جدول ردیف ایجاد نمیکنه.
خیلی ممنون.
مرسی

درصورت لزوم پیغامهای خطا رو با دستورات زیر نمایش بدین ببینیم چرا کار نمیکنه:
error_reporting(E_ALL);
ini_set('display_errors', 'On');

اگه خطایی نبود، یه متد Error به کلاس DB اضافه کنید که خطای MySQLi رو نمایش میده و اون رو هم صدا بزنید تا ببینیم علت درج نشدن توی دیتابیس چیه.
صفحات: 1 2 3