PDA

View Full Version : سوال: چگونه مي توان مقدار ارسال شده يك آيتم به صفجه ديگر را در صفحه مورد نظر در متغيري ذخيره كرد؟



Ali_Sedaghat
پنج شنبه 08 فروردین 1392, 01:12 صبح
با سلام خدمت كاربران محترم
من يك ليست انتخاب دارم كه مي خوام كاربر يكي از اين ها را انتخاب كرده و مقدار را به يك صفحه يا لينك ديگه ارسال كنه. مشكل اينجاست كه مقدار به صفحه ي مورد نظرم ارسال ميشه اما نمي توانم آن را در صفحه ي مورد نظرم در متغيري ذخيره كنم.
ضمناً در پايان عرض كنم كه اين توي لوكال هاست قرار داده و بعد از تكميل شدن در سرور قرار مي گيره.
ممنون مي شم اگه راهنمايي كنيد.
با تقديم احترام
صداقت

كدها:


<?php

$match = array("<", ">", "'");
$replace = array("&nbsp;", "&nbsp;", "&nbsp;");

echo '<div class="FForm_bg"><div class="fform">
<form class="form" action="http://localhost/page2.php" method="post" >
<table>';

echo '<tr><td>مبلغ مورد نظر: </td><td>
<select style="width: 200px; height: 20px; direction: rtl; text-align: right;" id="txtPrice" class="enput" name="Price">
<option>انتخاب كنید</option>
<option value="1000">1,000 تومان</option>
<option value="2000">2,000 تومان</option>
<option value="3000">3,000 تومان</option>
<option value="4000">4,000 تومان</option>
<option value="5000">5,000 تومان</option>
</select></td></tr>';

echo '<tr><td class="submit"></td><td><br><br><input src="pay.jpg" type="image" name="submit" style="font-family:tahoma" value="ادامه‌ی عملیات خرید" class="sbtn" onclick="return Validate()"/></td></tr></table>
<div style="display:none">
<input type="hidden" id="Price" value="' . str_replace($match, $replace, $_POST['Price']) . '" name="Price"/>
</div>
</form>';
?>

<script type="text/javascript" language="javascript">
function Validate()
{
var _txtPrice = document.getElementById("txtPrice");
if(_txtPrice != null && _txtPrice.value == "")
{
alert("کاربر گرامی، لطفاً مبلغ مورد نظر خود را از لیست انتخاب نمایید");
_txtPrice.focus();
return false;
}
else if(_txtPrice != null && _txtPrice.value.toString() != parseInt(_txtPrice.value,0).toString())
{
alert("کاربر گرامی، لطفاً مبلغ مورد نظر خود را از لیست انتخاب نمایید");
_txtPrice.focus();
return false;
}
}
</script>

$ M 3 H R D A D $
پنج شنبه 08 فروردین 1392, 01:21 صبح
خوب؟ صفحه php کجاست شما میگید مقدار رسال میشه ادامس؟مشکل کو ؟ چه خظا ای میده؟
value="' . str_replace($match, $replace, $_POST['Price']) . '"
اینی که نوشتید وسط دستورات html اجرا شد ؟

Ali_Sedaghat
پنج شنبه 08 فروردین 1392, 01:37 صبح
دوست عزيز ممنون از پاسخ تون
من متأسفانه كد رو ناقص فرستاده بودم كه بعد از پي بردن به اشتباهم كد رو كامل ارسال كردم.
اگه ميشه يه بار با دقت كد رو نگاه كنيد
با تشكر
صداقت

$ M 3 H R D A D $
پنج شنبه 08 فروردین 1392, 01:53 صبح
<?php header ('Content-type: text/html; charset=utf-8'); ?>
<html>
<head>
<script type="text/javascript" language="javascript">
function Validate()
{
var _txtPrice = document.getElementById("txtPrice");
if(_txtPrice != null && _txtPrice.value == "")
{
alert("کاربر گرامي، لطفاً مبلغ مورد نظر خود را از ليست انتخاب نماييد");
_txtPrice.focus();
return false;
}
else if(_txtPrice != null && _txtPrice.value.toString() != parseInt(_txtPrice.value,0).toString())
{
alert("کاربر گرامي، لطفاً مبلغ مورد نظر خود را از ليست انتخاب نماييد");
_txtPrice.focus();
return false;
}
}
</script>
</head>
<body>
<div class="FForm_bg">
<div class="fform">
<form class="form" action="page1.php" method="post" >
<table>
<tr>
<td>مبلغ مورد نظر: </td>
<td>
<select style="width: 200px; height: 20px; direction: rtl; text-align: right;" id="txtPrice" class="enput" name="Price">
<option>انتخاب كنيد</option>
<option value="1000">1,000 تومان</option>
<option value="2000">2,000 تومان</option>
<option value="3000">3,000 تومان</option>
<option value="4000">4,000 تومان</option>
<option value="5000">5,000 تومان</option>
</select>
</td>
</tr>
<tr>
<td class="submit">&nbsp;</td>
<td>
<input src="pay.jpg" type="image" name="submit" style="font-family:tahoma" value="ادامه‌ي عمليات خريد" class="sbtn" onclick="return Validate()"/>
</td>
</tr>
</table>
<?php
$match = array("<", ">", "'");
$replace = array("&nbsp;", "&nbsp;", "&nbsp;");
if(isset($_POST['Price'])) {
?>
<div style="display:none">
<input type="hidden" id="Price" value="<?php echo str_replace($match, $replace, $_POST['Price']); ?>" name="Price"/>
</div>
<?php
}
?>
</form>
</body>

</html>

نگفتید چی میخواید کامل امااینو مقال زدم

$ M 3 H R D A D $
پنج شنبه 08 فروردین 1392, 01:55 صبح
شما از صفحه دیگه صحبت کردید (page2.php) اما این صفحه و نذاشتید ؟ کدهاش کو ؟
خوب فرم اشما به صفحه دیگر(همان page2 ) ارسال میشه پس مقادیر پست شده در اون صفحه(page2) قابل استفاده هست پس چرا تو input مخفی از $_POST با مقدار Price استفاده کردید ؟

Ali_Sedaghat
پنج شنبه 08 فروردین 1392, 08:35 صبح
ممنون از پاسخ تون
دوست عزيز من دارم روي يه درگاه پرداخت مربوط به سايت پارس پال كار مي كنم.
فايل ساده اش رو گرفتم.
همان طور كه شما فرموديد مقدار مبلغ انتخابي به سايت پارس پال ارسال ميشه اما من مي خواستم قبل از ارسال مبلغ به سايت پارس پال ابتدا مبلغ انتخابي توسط كاربر رو در يه متغيري داخل صفحه ذخيره كنم و بعد اون رو ارسال كنم.
سايت پارس پال سه متغير بر مي گردونه: يكي وضعيت پرداخت هست. ديگري شماره ي رسيد و آخري هم شماره ي سفارش هست.
حالا من مي خوام كد كاربر و مبلغ رو به عنوان شماره ي سفارش بفرستم.
وقتي كه روي دكمه ي پرداخت كليك مي كنم بعد از پرداخت در صفحه ي خودم توي لوكال هاست در جلوي نام كاربري هم كد كاربر نمايش داده ميشه و هم نام كاربري (البته با پرس و جو از ديتابيس) اما متأسفانه مبلغ پرداختي نمايش داده نميشه.
اميدوارم كه متوجه منظورم شده باشيد
اين هم كد كاملش:


<?php
// Your Site Settings
$MerchentID = '123456';// in ghesmat ra takmil nemeyed !!;
$Password = '******';// in ghesmat ra takmil nemeyed !!
$PageTitle = '';
$ShowOrderNumberField = true;
$user_id = $_POST['User_ID'];

$ReturnPath = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'];
?>


<!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>
<title>سامانه‌ي پرداخت آنلاين<?php echo ($PageTitle) ?></title>

<link href="css/Style.css" rel="stylesheet" type="text/css" />


</head>
<body>

<div class="AllPage">
<div style="padding: 20px;">
<img src="css/Images/t_OnlinePay.png"/>
</div>
<table style="margin: auto;">
<tr>
<td valign="top">

<?php
// Form Content
$match = array("<", ">", "'");
$replace = array("&nbsp;", "&nbsp;", "&nbsp;");
if (isset ($_POST['status']) && $_POST['status'] == 100) {
echo '<div class="Succs" >

کاربر گرامی :<br />
عملیات پرداخت با موفقیت به پایان رسید. اطلاعات پرداخت شما به شرح زیر می‌باشد:
<br />
شماره‌ی رسید:' .$_POST['refnumber'] .'<br/></div>';
}
else
if (isset ($_POST['status'])) {
$user_id = $_POST['resnumber'];
$User_Array = GetUsername_FromU_UsersTable($user_id);
$Username = $User_Array[0]['userName'];
echo '<div class="Error">
کاربر گرامی: <B>' .$Username .'</B><br />
خطا در بازگشت از عملیات پرداخت! در انجام پرداخت، خطایی رخ داده است. (پرداخت ناموفق!)
<br /></div>';

}
else {
echo '<div class="FForm_bg"><div class="fform">
<form class="form" action="http://merchant.parspal.com/postservice/" method="post" id="TransactionForm" >
نــام واریــز کـننده: <B>' .$Username .'</B><br>
<table>';
if (isset ($_GET['price']) && is_numeric($_GET['price'])) {
echo '<tr><td>مبلغ مورد نظر: </td><td>' .$_GET['price'] .'
<input type="hidden" name="Price" value="' .$_GET['price'] .'"/></td></tr>';
}
else {
echo '<tr><td>مبلغ مورد نظر: </td><td>
<select style="width: 200px; height: 20px; direction: rtl; text-align: right;" id="txtPrice" class="enput" name="Price">
<option>انتخاب كنید</option>
<option value="1000">1,000 تومان</option>
<option value="2000">2,000 تومان</option>
<option value="3000">3,000 تومان</option>
<option value="4000">4,000 تومان</option>
<option value="5000">5,000 تومان</option>
</select></td></tr>';
}
echo '<tr><td class="submit"></td><td><br><br><input src="pay.jpg" type="image" name="submit" style="font-family:tahoma" value="ادامه‌ی عملیات خرید" class="sbtn" onclick="return Validate()"/></td></tr></table>
<div style="display:none">
<input type="hidden" id="MerchantID" value="' .$MerchentID .'" name="MerchantID"/>
<input type="hidden" id="Password" value="' .$Password .'" name="Password"/>
<input type="hidden" id="Paymenter" value="' .$Username .'" name="Paymenter"/>
<input type="hidden" id="Email" value="' .$Email .'" name="Email"/>
<input type="hidden" id="Mobile" value="' .$Tell .'" name="Mobile"/>
<input type="hidden" id="Price" value="' .str_replace($match, $replace, $_POST['Price']) .'" name="Price"/>
<input type="hidden" id="ResNumber" value="' .$user_id .str_replace($match, $replace, $_POST['Price']) .'" name="ResNumber"/>
<input type="hidden" id="Description" value="توضیحات : ' .str_replace($match, $replace, $_POST['Description']) .'" name="Description"/>
<input type="hidden" id="ReturnPath" value="' .$ReturnPath .'" name="ReturnPath"/>
</div>
</form></div></div>';

}
?>
<div style="text-align: center">
<a href="http://www.parspal.com" style="font-size: 7pt; color:#D0D0D0" target="_blank">accept payment by www.parspal.com</a>
</div>
</td>
<td valign="top" style="padding-right:5px;">
<div class="Info_acceptor">
<table>
<tr>
<td colspan="2">
<?php echo ($PageTitle) ?>
</td>
</tr>
<tr>
<td colspan="2">
<?php echo $_SERVER['SERVER_NAME'] ?>
</td>
</tr>

</table>
</div>
<div style="margin-top:12px;">

<a href="http://www.parspal.com" target="_blank" >
<img src="http://www.parspal.com/Images/Gateway/Icons/01.png" id="img" />
</a>
</div>
</td>
</tr>
</table>
</div>

<script type="text/javascript" language="javascript">
function Validate() {
var _txtPrice = document.getElementById("txtPrice");
/*
var _txtPaymenter = document.getElementById("txtPaymenter");
var _txtEmail = document.getElementById("txtEmail");
var _txtMobile = document.getElementById("txtMobile");
var _txtDescription = document.getElementById("txtDescription");
var atpos=_txtEmail.value.indexOf("@");
var dotpos=_txtEmail.value.lastIndexOf(".");
*/
if(_txtPrice != null && _txtPrice.value == "")
{
alert("کاربر گرامي، لطفاً مبلغ مورد نظر خود را از ليست انتخاب نماييد");
_txtPrice.focus();
return false;
}
else if(_txtPrice != null && _txtPrice.value.toString() != parseInt(_txtPrice.value,0).toString())
{
alert("کاربر گرامي، لطفاً مبلغ مورد نظر خود را از ليست انتخاب نماييد");
_txtPrice.focus();
return false;
}
/*
else if (_txtPaymenter.value == "") {
alert("کاربر گرامي، نام خود را وارد نماييد");
_txtPaymenter.focus();
return false;
}
else if (_txtEmail.value == "") {
alert("کاربر گرامي، ايميل خود را وارد نماييد");
_txtEmail.focus();
return false;
}
else if (_txtEmail.value != "" && (atpos<1 || dotpos<atpos+2 || dotpos+2 >= _txtEmail.value.length)) {
alert("کاربر گرامي، ايميل واردشده صحيح نمي‌باشد");
_txtEmail.focus();
return false;
}
else if (_txtMobile.value == "") {
alert("کاربر گرامي، شماره‌ي موبايل خود را وارد نماييد");
_txtMobile.focus();
return false;
}
*/
}
</script>
</body>
</html>

اين كد به صورت تست هست و هنوز روي سرور آپلود نكردم.
يك سري توضيحاتي بايد خدمت تون عرض كنم:
1- كد كاربر از صفحه ي اصلي به اين صفحه كه كدهاش رو قرار دادم پست ميشه و در يك متغير ذخيره ميشه. اين درست كار مي كنه.
2- در خط زير (درون برنامه) بايد كد كاربر به همراه مبلغ ارسال بشه كه متأسفانه فقط كد كاربر ارسال داده ميشه و بعد از انصراف هم كد كاربر هم بازگشت داده ميشه اما مبلغ نه.


<input type="hidden" id="ResNumber" value="' . $user_id . '-' . str_replace($match, $replace, $_POST['Price']) . '" name="ResNumber"/>


من فكر كنم كد زير (درون برنامه) اصلاً كار نمي كنه و مقدار مبلغ انتخاب شده بايد به شيوه اي ديگه در متغيري درون همين صفحه ذخيره بشه


<input type="hidden" id="Price" value="' . str_replace($match, $replace, $_POST['Price']) . '" name="Price"/>

خلاصه دوستان اگه كسي تونست از اين كدها سر در بياره و منو راهنمايي كنه ازش ممنون ميشم اين لطف رو در حقم انجام بده.
با تقديم احترام
صداقت

MMSHFE
پنج شنبه 08 فروردین 1392, 09:50 صبح
شما باید اطلاعات فرم رو برای یک صفحه واسطه روی سایت خودتون بفرستین و توی اون صفحه اطلاعات دریافتی رو ذخیره کنید (مثلاً توی دیتابیس) و بعد یک فرم نشون بدین با همون مقادیر دریافتی که بصورت Hidden هستن و به کاربر هم نشون بدین و یک دکمه Submit هم بگذارین با متن مناسب (مثلاً «تأیید مبلغ» و...) که اطلاعات رو برای پارس پال میفرسته. اما استفاده از Web Service روش مناسبتری هست. موفق باشید.

Ali_Sedaghat
پنج شنبه 08 فروردین 1392, 10:19 صبح
جناب آقاي شهركي
من مسير ارسال متغيرها را به يك صفحه ي ديگه تغيير دادم. اما مشكل من اينه كه نمي تونم مبلغي را كه فرد انتخاب كرده را در صفحه ي واسط در متغيري ذخيره كنم.

تگ انتخاب مبلغ توي اين قسمت قرار داره:


<select style="width: 200px; height: 20px; direction: rtl; text-align: right;" id="txtPrice" class="enput" name="Price">

به احتمال زياد دستور من در صفحه ي اول (جايي كه مي خوام مقادير رو ارسال كنم) اشتباهه. در اين صفحه براي ارسال مبلغ از كد زير استفاده كردم كه اين كد براي تگ هاي متني است نه تگ هاي انتخابي. (خط 81)

<input type="hidden" id="Price" value="' .str_replace($match, $replace, $_POST['Price']) .'" name="Price"/>
دستور من در صفحه ي واسط براي ذخيره ي متغير اينه:

$Price = $_POST['Price']
هر چي هست ايراد از اين قسمته.
ميشه شما يه تكه كد براي ارسال مبلغ در صفحه ي جاري و ذخيره ي اون در صفحه ي واسط برام بنويسيد.
ازتون ممنون ميشم
با تقديم احترام
صداقت

MMSHFE
پنج شنبه 08 فروردین 1392, 10:28 صبح
دوست گرامی، با همین کدی که نوشتن، مقدار ارسال شده توسط فرم توی متغیر قرار میگیره ولی مسئله اینه که بعد از ارسال به صفحه پارس پال و برگشت از اون صفحه، متغیر حذف میشه چون قابلیت نگهداری نداره و کلاً HTML یک زبان Stateless هست یعنی وضعیتها رو نگهداری نمیکنه. برای همین یا باید متغیر رو توی سشن بگذارین و یا اینکه توی دیتابیس یا فایل ذخیره کنید که بعداً بتونید مجدداً فراخوانی کنید.

Ali_Sedaghat
پنج شنبه 08 فروردین 1392, 12:48 عصر
سلام مجدد و عرض تشكر بابت راهنمايي دوستان
براي اين كه مشكلم به راحتي حل بشه اومدم دو تا فايل توي هاست ريختم. يكي براي انتخاب مبلغ و ديگري نمايش مبلغ. البته براي تست هست

محتويات فايل اول به نام test1.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<title>Test1</title>
</head>

<body>

<form action="http://pay.tak-istgah.ir/test2.php" method="post">
<table>
<tr>
<td colspan="2" style="padding-bottom:10px;">
کاربر گرامي جهت انجام عمليات پرداخت، فرم زير را تکميل نماييد:
</td>
</tr>
<tr>
<td>مبلغ مورد نظر: </td>
<td>
<select style="width: 200px; height: 20px; direction: rtl; text-align: right;" id="txtPrice" class="enput" name="Price">
<option>انتخاب كنيد</option>
<option value="1000">1,000 تومان</option>
<option value="2000">2,000 تومان</option>
<option value="3000">3,000 تومان</option>
<option value="4000">4,000 تومان</option>
<option value="5000">5,000 تومان</option>
</select>
</td>
</tr>
<tr>
<td class="submit"></td>
<td><input type="submit" name="submit" style="font-family:tahoma" value="ادامه‌ي عمليات خريد" class="sbtn" onclick="return Validate()"/></td></tr>
</table>
</form>

<script type="text/javascript" language="javascript">
function Validate() {
var _txtPrice = document.getElementById("txtPrice");

if(_txtPrice != null && _txtPrice.value == "")
{
alert("کاربر گرامي، لطفاً مبلغ مورد نظر خود را از ليست انتخاب نماييد");
_txtPrice.focus();
return false;
}
else if(_txtPrice != null && _txtPrice.value.toString() != parseInt(_txtPrice.value,0).toString())
{
alert("کاربر گرامي، لطفاً مبلغ مورد نظر خود را از ليست انتخاب نماييد");
_txtPrice.focus();
return false;
}
}
</script>
</body>
</html>
محتويات فايل دوم به نام test2.php

<?php
$Price1 = $_POST['Price'];
$Price2 = $_POST['price'];
$Price3 = $_GET['Price'];
$Price4 = $_GET['price'];

echo 'Price1 = ' .$Price1 .'</br>';
echo 'Price2 = ' .$Price2 .'</br>';
echo 'Price3 = ' .$Price3 .'</br>';
echo 'Price4 = ' .$Price4 .'</br>';
?>
آدرس سايت هم اينه:
http://pay.tak-istgah.ir/test1.php
من فقط مي خوام ببينم چه طور ميشه مبلغ رو به صفحه ي دوم ارسال كرد و در صفجه ي دوم اون رو در يك متغير ذخيره كرده و بعدش نمايش داد.
حالا اگه شما به لينكي كه دادم مراجعه كنيد و مبلغ رو انتخاب كنيد و روي دكمه كليك كنيد وارد صفحه ي بعد ميشيد كه فقط نوشته: Price = و مبلغ انتخاب شده در هيچ حالتي نمايش داده نميشه.
من هر دو تا كد زير را در فايل دوم نوشتم و به جواب هم نرسيدم.

اگه اين كار انجام بشه بقيه ي كارهاش رو به راحتي مي تونم انجام بدم.
اميدوارم كه متوجه منظورم شده باشيد.
با تقديم احترام
صداقت

Ali_Sedaghat
پنج شنبه 08 فروردین 1392, 12:55 عصر
عجب گرفتار شدم.
مقدار مبلغ توي صفحه ي دوم ارسال ميشه اما وقتي كه روي فايل اصلي كار مي كنم منظورم درگاه پرداخت مبلغ رو نمي فرسته.
حسابي گيج شدم
لطفاً راهنمايي كنيد.

Ali_Sedaghat
پنج شنبه 08 فروردین 1392, 14:08 عصر
دوستان
اگه خدا بخواد تا الان مشكلم حل شد
بابت راهنمايي تون از شما ممنونم
با تقديم احترام
صداقت