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

نام تاپیک: چرا سسشن هایی که اسکریپت captcha ایجاد می کنه توی بقیه اسکریپتها قابل بازیابی نیست؟

  1. #1

    Exclamation چرا سسشن هایی که اسکریپت captcha ایجاد می کنه توی بقیه اسکریپتها قابل بازیابی نیست؟

    من سسشن ها رو توی دیتابیس ذخیره می کنم.

    توی تصاویر کپچا وقتی سسشن ایجاد شد توی دیتابیس ذخیره می شه ولی از طریق بقیه اسکریپتها نمی تونم این متغیر رو بدست بیارم.

    اسم متغیر رو به درستی وارد می کنم.

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

  2. #2

    نقل قول: چرا سسشن هایی که اسکریپت captcha ایجاد می کنه توی بقیه اسکریپتها قابل بازیابی نیست؟

    من به این شکل تصویر کپچا رو نشون می دم:
    <img src="captcha.php" />


    لطفا راهنمایی کنید.

  3. #3

    نقل قول: چرا سسشن هایی که اسکریپت captcha ایجاد می کنه توی بقیه اسکریپتها قابل بازیابی نیست؟

    با سلام، اگه ميشه كد captcha.php رو بگذارين تا بررسي كنيم. ضمناً توي كد بررسي كنيد ببينيد از كلاس SSSH يك شئ ايجاد شده يا نه؟ اگه اينطور نباشه اين Session توي ديتابيس ايجاد نخواهد شد. درنتيجه از اونجا كه در بقيه كدها از اون كلاس يك شئ ميسازين، فقط Sessionهاي موجود در ديتابيس بازيابي ميشن. موفق باشيد.

  4. #4

    نقل قول: چرا سسشن هایی که اسکریپت captcha ایجاد می کنه توی بقیه اسکریپتها قابل بازیابی نیست؟

    کد هایی که توی کلاس کپچا استفاده می کنم رو در ادامه قرار دادم.

    هیچ مشکلی توی کپچا و ذخیره سسشن هایی که توی کپچا ایجاد می شن وجود نداره و سسشن ها بخوبی توی دیتابیس ذخیره می شن. مشکل اینجاست که وقتی سسشن های اسکریپت کپچا توی دیتابیس ذخیره می شن، بقیه سسشن ها به کلی پاک می شن.
    <?php
    class captch_file
    {
    private $font;
    private $width;
    private $height;
    private $characters;
    function __construct()
    {
    define('ROOT',dirname(__FILE__));
    define('DS',DIRECTORY_SEPARATOR);

    define('SES_PANEL','yes');
    define('SES_INC','yes');

    require_once('config.php');
    require_once('mysessions.php');
    $this->db = new mysqli(IHOST,IUSER,IPASS,IDATABASE) or die ("امکان انجام درخواست شما وجود ندارد، لطفا مجددا تلاش کنيد");
    $this->db->set_charset('UTF8');
    $session=new MySessionHandler(IHOST,IUSER,IPASS,IDATABASE,$this->db);

    session_start();

    $this->font='RosewoodStd-Regular.otf';

    $this->width = isset($_GET['width']) && $_GET['width'] < 600 ? $_GET['width'] : '145';
    $this->height = isset($_GET['height']) && $_GET['height'] < 200 ? $_GET['height'] : '40';
    $this->characters = isset($_GET['characters']) && $_GET['characters'] > 2 ? $_GET['characters'] : '6';
    }
    private function generateCode($charsnum)
    {
    /* list all possible characters, similar looking characters and vowels have been removed */
    $possible = '23456789bcdfghjkmnpqrstvwxyz';
    $code = '';
    $i = 0;
    while ($i < $charsnum)
    {
    $code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
    $i++;
    }
    return $code;
    }
    private function CaptchaSecurityImages()
    {
    $code = $this->generateCode($this->characters);
    /* font size will be 75% of the image height */
    $font_size = $this->height * 0.70;
    $image = imagecreate($this->width, $this->height) or die('Cannot initialize new GD image stream');
    /* set the colours */

    $background_color = imagecolorallocate($image, 255, 255, 255);
    $text_color = imagecolorallocate($image, 20, 40, 100);
    $noise_color = imagecolorallocate($image, 100, 120, 180);

    $textbox = imagettfbbox($font_size, 0, $this->font, $code) or die('Error in imagettfbbox function');
    $x = ($this->width - $textbox[4])/2;
    $y = ($this->height - $textbox[5])/2;
    imagettftext($image, $font_size, 0, $x, $y, $text_color, $this->font , $code) or die('Error in imagettftext function');
    $_SESSION[mycaptcha_code]="$code";
    /* output captcha image to browser */
    header('Content-Type: image/jpeg');
    imagejpeg($image);
    imagedestroy($image);
    }
    public function runcaptcha()
    {
    $this->CaptchaSecurityImages();
    }
    }

    $captcha = new captch_file();
    $captcha->runcaptcha();
    ?>

  5. #5

    نقل قول: چرا سسشن هایی که اسکریپت captcha ایجاد می کنه توی بقیه اسکریپتها قابل بازیابی نیست؟

    $_SESSION[mycaptcha_code]="$code";

    احتمالا نباید عبارت mycaptcha_code رو داخل کوتیشین بذاری؟

  6. #6

    نقل قول: چرا سسشن هایی که اسکریپت captcha ایجاد می کنه توی بقیه اسکریپتها قابل بازیابی نیست؟

    احتمالا نباید عبارت mycaptcha_code رو داخل کوتیشین بذاری؟
    انواع و اقسام این روشها رو بکار بردم ولی فایده نداشتن.

  7. #7

    نقل قول: چرا سسشن هایی که اسکریپت captcha ایجاد می کنه توی بقیه اسکریپتها قابل بازیابی نیست؟

    به هرحل مجبور شدم که توی اسکریپت کپچا، قبل از ایجاد سسشن ها، به دیتابیس وصل بشم، سسشنهای قبلی رو بخونم و سسشن اسکریپت جدید رو به اونها اضافه کنم و بعد مجددا رشته جدید که در واقع همون سسشن ها هست رو توی دیتابیس ذخیره کنم.

    با این ترفند مشکلم رو به صورت موقت حل کردم ولی دنبال یه راه استاندارد و اصولی میگردم که خود پی اچ پی این کارها رو بکنه.

    لطفا راهنمایی کنید.

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

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