مشکل در session ها

reimei

New Member
سلام؛
من یه vps دارم با دو تا دامنه.
session در یکی از دامنه ها کار نمی کنه و توی فایل phpinfo این دامنه، اصلا _COOKIE["PHPSESSID"] نیست! چه طور میشه این مشکل رو حل کرد؟
 

Domanjiri

Well-Known Member
درود بر شما

کاشکی یکم بیشتر توضیح می دادین! وب سرور شما Apache هست؟ اگه خودتون آشنایی دارین که هیچ، وگرنه بدین یه متخصص (مثلن همون شرکتی که ازش VPS رو خریدین) فایل کانفیگ vhost رو بررسی کنه..

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

اگر که حل نشد اطلاعات بیشتری بدین تا ببینیم باید چه کرد.

موفق و پیروز باشید
 

reimei

New Member
همین الان یه سایت وردپرس آپلود کردم. کاملا درست کار میکنه.
احتمالا مشکل از کد منه... ولی من مشکلی نمی بینم!
کد:
<?php
session_start();
class MyClass
{
    public function checkMe()
    {
        if($_SESSION['auth'] == 'yes')
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    
    public function login()
    {
        if($this->checkMe() === false)
        {
            if(isset($_POST['login']))
            {
                $username = $_POST['username'];
                $password = $_POST['password'];
                $sql = "SELECT * FROM admin WHERE username = '$username' AND password=SHA1('$password')";
                //query Database
                $db = new db;
                $result = $db->queryAll($sql);
                if(count($result) == 1)
                {
                    $_SESSION['auth'] = 'yes';
                    $login = false;
                }
                else
                {
                    $error = 'نام كاربرى يا رمز عبور اشتباه مي باشد.';
                }
            }
            if($login === true)
            {
                //render login page
                $this->registry->template->error = $error;
                $this->registry->template->render('admin/login');
            }
            else
            {
                //function index
                $this->index();
            }
            
        }
        elseif($this->checkMe() === true)
        {
            //function index
            $this->index();
        }
    }
    
    public function index()
    {
        if($this->checkMe() === true)
        {
            //render index page
            $this->registry->template->message= 'خوش آمدید';
            $this->registry->template->render('admin/index');
        }
    }
    
    public function sampleFunction()
    {
        if($this->checkMe() === true)
        {
            //do sth else
        }
    }
}
?>
 
آخرین ویرایش:

Domanjiri

Well-Known Member
سلام

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

کد شما هم که ظاهرا مشکلی نداره( فقط چقدر حشو داره!:green: ببینید چند جا چک کردن که فلان مقدار true هست... بگذریم) شما یه لطفی بکن و چند خط کد زیر رو بریز داخل فایلی به اسم testme.php و بعد اجراش کن (از کد خودتون استفاده کردم)
PHP:
<?php
session_start();
class MyClass
{
    public function checkMe()
    {
        if($_SESSION['auth'] == 'yes')
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    
    public function login()
    {
        if($this->checkMe() === false)
        {
            if(1)
            {

             $_SESSION['auth'] = 'yes';
             
             echo 'logged in! click <a href="testme.php">here</a> ';

            }
            /*if($login === true)
            {
                //render login page
                echo 'bad login!';
            }*/
            else
            {
                //function index
                $this->index();
            }
            
        }
        elseif($this->checkMe() === true)
        {
            //function index
            $this->index();
        }
    }
    
    public function index()
    {
        if($this->checkMe() === true)
        {
            //render index page
            echo 'welcome';
        }
    }
    
    public function sampleFunction()
    {
        if($this->checkMe() === true)
        {
            //do sth else
        }
    }
}
$b = new MyClass();
$b->login();
?>
دفعه اول باید یه پیغام بده که شما لاگین شده اید و بعد از کلیک روی here پیغام welcome رو نشون میده.

اگه کار نکرد به احتمال زیاد مشکل "دسترسی و نوشتن روی دایرکتوری" tmp یا هر جای دیگه ای که session ها ذخیره میشن رو دارید ( دقیقن مسئله وردپرس اینه که فایل session رو روی این دایرکتوری ها ذخیره نمی کنه، شما هم ببین چه اسکریپتی رو برای تست کردن انتخاب کردین:wink:)

مسئله رو به پشتیبانی شرکتی که ازش خریداری کردید اطلاع بدین تا راهنماییتون کنن( یا در بخش نگهداری سرور و .. همین انجمن مطرح کنید تا دوستان کمکتون کنند، در هر صورت به نظر نمی رسه مسئله با PHP و این بخش رابطه ای شدیدی داشته باشه.

موفق باشید
 

Domanjiri

Well-Known Member
اووف:-?

من خودم هم یکبار روی سرور ویندوز که مال یکی از دوستان بود مشکلی مشابه داشتم، والا دیگه خبر ندارم چیکار کرد (چون من فقط یکی دو هفته از سرورش استفاده کردم و مجبور شدم با ایده های انقلابی:green: کارم رو راه بندازم)

الان این کدی که من گذاشتم رو شما گذاشتید و کار نکرد دیگه، درسته؟

همونطور که گفتم به نظر من مسئله دیگه رابطه ای با PHP نداره(راستی گفتین که توی PHPinfo هم خبری از session نیست!)، حتی اگه مربوط به فایل ini پی اچ پی هم باشه، یه متخصص سرور بهتر می تونه کمکتون کنه.(اگه اطلاعات سرویس رو به من بدین من می تونم توی فروم ها اجنبی:green: قضیه رو پیگیری کنم، دقت کردین شما هیچ اطلاعاتی به ما ندادین؟!!)

امیدوارم زودتر مشکلتون حل بشه.

موفق باشید.
 

reimei

New Member
مشکل حل شد. نتیجه ای که از این مبحث میگیریم:
در مرحله development این دو خط رو فراموش نکنیم
کد:
error_reporting(E_ALL);
ini_set('display_errors',1);
 

reimei

New Member
fه Doman:
ممنونم به خاطر کمکی که بهم کردی...
«انسانی بسیار انسانی» کتاب خیلی خوبیه... نوشته نیچه
همین طور یکی از کتابای سری head first انتشارات o'reilly رو گیر بیار و بخون... ضرر نمیکنی... آدرسش هم اینه: headfirstlabs.com
 

جدیدترین ارسال ها

بالا