از بین رفتن اطلاعات session پس از ورود به صفحه بانک

pix07

Member
سلام دوستان من دارم یه ماژول برای درگاه پرداخت یکی از بانکها مینویسم
بعد متوجه شدم وقتی کاربری از طریق فروشگاه بعد از انتخاب کالا و تعیین مبلغ ، وارد سایت بانک میشود تا پرداخت را انجام دهد .... در هنگام بازگشت از صفحه سایت بانک به فروشگاه اطلاعات session از بین میرن
مثلان
کاربر = ali
کالا = کتاب
مبلغ= 200
این اطلاعات به session دادم و بعد از ارسال پارامتر "مبلغ" به سایت بانک برای انجام تراکنش در هنگام باز گشت به صفحه ثبت گزارش پرداخت اطلاعاتی رو که قبلا به سشن دادم
نیست یعنی نه مقدار کاربر هست و نه نوع کالا انتخاب شده در سشن نیست

چیکار باید کنم
سایت بانک هم توسط ssl محافظت میشه میتونه دلیلش این باشه؟
user_offline.gif
 

pix07

Member
من چندتا کوکی هم ست کردم ولی ظاهرا یا مشکل از کد های منه یا چیز دیگر چون اجرا نمیشه
مثلا من این جا یه متغیر رو به سشن دادم بعد مقدار این سشن رو به کوکی دادم این و بعد از بازگشت از سایت بانک در صفحه دوم مقدار کوکی رو به سشن دادم برنامه رو لوکال خوب کار میکنه و ولی روی سرور ارور میده یعنی کوکی ایجاد نمیکنه

کد صفحه اول
PHP:
<?php
        session_start();
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>


<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>


</body>
</html>
<?php
$a="ali";
$b=setcookie("fname",$a,time()+3600);

$_SESSION['fname']="$b";

$m=@$_SESSION['fname'];
echo "$m";
?>
کد صفحه دوم
PHP:
<?php session_start(); ?>
<?php 
$_SESSION['os']=$_COOKIE['fname'];
$m=@$_SESSION['os'];
echo "$m";
?>
در هنگام اجرا روی سرور این ارور رو میده

PHP:
Warning: Cannot modify header information - headers already sent by (output started at /home/xxx/public_html/report/1.php:20) in /home/xxx/public_html/report/1.php on line 22
 

Allahparast

Member
یک چک بزن ببین سشنی که ساختی ساخته شده یا خیر:
PHP:
if(!isset($_SESSION['os']){
die("do not session bulid!");
}
 

Allahparast

Member
PHP:
 <?php
ob_start();
session_start();
$a="ali";
$b=setcookie("fname",$a,time()+3600);

$_SESSION['fname']="$b";

$m=@$_SESSION['fname'];
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>


<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>


</body>
</html>
<?php

echo "$m";
?>
سشن و کوکی باید قبل از کدهای اچ تی ام ال باشند تا به هدر ارسال شوند
 

sajadmaz

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

موفق باشین
 

Masoud1365

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

موفق باشین

به نظر من این راه مناسبی نیست چون اگر اطلاعات یوزر بره تو دیتا بیس بعدش یوزر بره به سایت بانک بعدش به هر دلیلی خرید انجان نشه ما یسری اطلاعات بیخودی رو در دیتا بیس ذخیره کردیم ! نه ؟
به نظرم اگر ما نیاز به اطلاعات خرید ها داشته باشیم بعد از اینکه خرید 100% ok شد بعدش سیو کنیم بهتره :wink:
 

sajadmaz

Member
خوب میشه خرید های نا موفق و همینطور دلیل رو هم میتونی ذخیره کنی

راه بهتری دارین شما این روش امن ترین و بهترین روش از نظر من هست.
 

Masoud1365

مدیر انجمن
به نظر من بهترین روش استفاده از سشن و کوکی هست که سشن بهتره ( از نظر من ) بعد که خرید با موفقیت انجام شد ثبت بشه :wink:
 

sajadmaz

Member
اگه کوکی روی مرور گر فعال نبود چی ؟؟
اگه زمان موندن یوزر توی بانک بیشتر از سشن تایم بود چی ؟؟؟
اگه خواستی از وضعیت پرداختهات مطلع شی چی ؟؟؟

توی دیتابیس از لحظه submit فرم تا برگشت یوزر رو در نظر داری
 

Masoud1365

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

AazamZandi

New Member
اگر به ماژول‌های نمونه بانک‌ها نگاهی بندازید خواهید دید هیچکدوم از سیشن و کوکی استفاده نمی کنند چون قابل اعتماد نیستند ( به همون دلایلی که sajadmaz اشاره کرده )
 

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

بالا