PDA

View Full Version : سوال: چگونگی ارسال چند دیتا به دیتابیس با استفاده از متد POST , و Redirect تواماً به فایل دیگر



hamed-php
شنبه 23 بهمن 1389, 09:04 صبح
سلام به دوستان عزیز

میخواستم در باره چگونگی ارسال چند دیتا به دیتابیس با استفاده از متد POST , و Redirect تواماً به فایل دیگر بپرسم.
مشکلی که بوجود اومد برام این بود که در دیتابیس مستقیم ، دیتا ها قرار میگیرد و در ریدایرکت به دیتابیس دیگر رکورد خالی ثبت میشود ولی ستون id که خود auto increse هست پر میشود.

mtchabok
شنبه 23 بهمن 1389, 09:43 صبح
سوالتون گنگ هس
کمی توضیح بیشتری بدین تا بتونیم کمکتون کنیم .
البته اگه منظورتون این هس که با چند در خواست می خواهید که اطلاعات رو در دیتابیس ذخیره کنید باید بگم که در دفعه اول می تونید در جدولتون اطلاعات رو insert کنید و توسط تابع mysql_insert_id() شماره فیلد id یا همون کلید اصلی رو بگیرید و در دخواستهای بعدی از update استفاده کنید .

hamed-php
شنبه 23 بهمن 1389, 10:49 صبح
با متد get مشکلی نیست . قبلاً مطرح شده:
http://barnamenevis.org/showthread.php?273342-چگونگی-ارسال-داده-ها-از-یک-فرم-به-دو-دیتابیس

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

mtchabok
شنبه 23 بهمن 1389, 11:04 صبح
برای اینکار شما میتونید اطلاعاتتون رو در سشن ذخیره کنید و در صفحه دیگه در یه دیتابیس دیگه ذخیره کنید .
و یا میتونید با استفاده از get شماره id در دیتابیس اولتون رو برای صفحه بعدی بفرستید و سپس در صفحه دوم اطلاعات رو از دیتابیس اول خوانده و در دیتابیس دوم ذخیره کنید .
ولی در کل امکان پست همزمان به صفحه وجود نداره مگر با استفاده از جاوا اسکریپت . بهترین راه حل از نظر من استفاده ارسال id از طریق get هس .

sattaryekta
شنبه 23 بهمن 1389, 12:28 عصر
برای اینکار شما میتونید اطلاعاتتون رو در سشن ذخیره کنید و در صفحه دیگه در یه دیتابیس دیگه ذخیره کنید .فکر می کنم Session فقط روی یک سرور معتبر است. اگر صفحه مورد نظر ایشان روی سرور دیگر باشد Session وجود ندارد.

اغلب API هایی که اطلاعاتی بین یک فایل php (روی سرور نه مثل جاوا اسکریپت) و سرور های دیگر (مثلا بانک و یا استفاده از سرورهای sms مخابرات) از SOAP استفاده میشه.
در اینجا هم یکی از راه ها استفاده از SOAP هست!

ولی بهترین راه همون GET هست :چشمک:

hamed-php
یک شنبه 24 بهمن 1389, 12:43 عصر
اگر در برنامه نویسی بدلیل مجبوری بخواهیم از متد GET بجای POST استفاده کنیم مثل مطالب اشاره شده همین تاپیک، از نظر امنیتی میشه این دو روش رو مقایسه کنید و بفرمایید برای ارتقای امنیت در متد GET آیا راهکاری هست یا خیر؟

sattaryekta
یک شنبه 24 بهمن 1389, 13:23 عصر
برای امنیت ارسال اطلاعات بوسیله Query URL یا GET شما میتونید یک کلید مشترک بین فرستنده و گیرنده ایجاد کنید و به کمک همون کلید مشترک داده ها را کد کنید و هنگام دریافت اطلاعات آنها را به کمک همون کلید مشترک رمز گشایی کنید.

مثلا یک کلید مشترک بین فرستنده و گیرنده: 123456
ابتدا فرستنده اطلاعات را بوسیله همین کلید رمز میکنه و ارسال میکنه.
گیرنده هم چون که کلید رمز گشایی را در اختیار داره اونها را رمز گشایی میکنه.

hamed-php
یک شنبه 24 بهمن 1389, 13:45 عصر
ممنون از راهنمایی شما
یعنی یه کد تصویری از این راندوما که هر بار یه چیز نشون میده بزارم تو فرمم و بعد چکش کنم مثل زیر یا کد امنیتی دیگه ای منظور شما بود؟


session_start();
$UserSecCode = strtolower($_GET['SecCode']);
$SysSecCopde = strtolower($_SESSION['SecImageStr']);
if($UserSecCode != $SysSecCopde)
{
die('The Sec Code is invalid!');
}

amir001
دوشنبه 25 بهمن 1389, 12:30 عصر
باید به این شکل عمل کنی.

در یک صفحه html دیگه همون فرمی را که اطلاعات را ازش گرفتی بسازی و بعد از اینکه اطلاعات را گرفتی و درون دیتا بیس خودت ذخیره کردی مقادیر را در فرم قرار بدی به علاوه یک تیکه کد جاوا اسکریپت که بعد از لود شدن صفحه خودش فرم را Submit کنه. حالا در فرم دوم اطلاعات وارد شده و صفحه اکشن اون را هم بذار برای سرور دومت.

خیلی راحت. اگر دوست داری متد را GET قرار بده اگر نخواستی هم POST.

اگر نفهمیدی منظورم را بگو تا یک مثال برات بفرستم.

hamed-php
دوشنبه 25 بهمن 1389, 14:41 عصر
ممنون میشم یه مثال بزنی . حتماٌ از راهنمایی شما استفاده میکنم

hamid_rezas
دوشنبه 25 بهمن 1389, 15:56 عصر
اگه میخوای اطلاعات را دوباره از طریق متد post ارسال کنی. داده ها را وقتی در صفحه اول گرفتی باید در اون صفحه اول اطلاعات دریافت شده را که در متد post ذخیره است گرفته و آنها را توسط curl از طریق متد post ارسال کنی. در این مورد در راهنمای php جستجو کنی مجموعه دستورات خوبی داره. فکر میکنم در واقع یک اکستنشن از php هست.
اما اگر میخوای در صفحه ورودی اول چنین کاری نکنی باید یکمی جاوا اسکریپت قاطیش کنی. یعنی در جایی که فرم ارسال میشه از مبدا به دو صفحه ارسال بشه. چیز سختی نیست با یکمی ابتکار عمل حل میشه. در قسمت onsubmit فرم کد جاوااسکریپتی را را قرار بده که قبل از ارسال فرم اجرا میشه یعنی ابتدا مثلاً بصورت ایجکس به یکی از صفحات بفرست و وقتی کار تموم شد فرم روند عادی خودش را از سر میگیره و به صفحه دوم اطلاعات را ارسال میکنه.

amir001
دوشنبه 25 بهمن 1389, 16:11 عصر
با استفاده از کلاسی که در همین تالار معرفی کرده ام میتوانید به راحتی در سرور اطلاعات مورد نظرتان را به یک سایت دیگر ارسال کنید.

معرفی کلاس برای باز کردن یک URL (http://barnamenevis.org/showthread.php?274822-%DA%A9%D9%84%D8%A7%D8%B3%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A8%D8%A7%D8%B2-%DA%A9%D8%B1%D8%AF%D9%86-%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D9%88%D8%A8-%D8%A8%D8%A7-PHP-%D8%AF%D8%B1%D9%88%D9%86-%D8%B3%D8%B1%D9%88%D8%B1-%28%D8%AF%D8%B1-%D8%AA%DA%A9%D9%85%DB%8C%D9%84-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A2%D9%86-%DA%A9%D9%85%DA%A9-%DA%A9%D9%86%DB%8C%D8%AF%29)

به این شکل:


<?php
include_once("browser.class.php");
$ff = new Browser();

$ff->Open("http://www.example.com/inputData.php" , "name=InputName&family=InputFamily&numbe=NUMBER");

?> اطلاعات فرم در پارامتر دوم تابع داده شده اند.
به این صورت :
نام=مقدار&نام=مقدار&....

amir001
دوشنبه 25 بهمن 1389, 16:31 عصر
روش دوم هم این هست که در خروجی این صفحه را نمایش بدید:


<html>
<head>
</head>
<body onload="document.myForm1.submit()">
<form name="myForm1" method="post" action="<?php echo $URL ?>" onload="" >
<input type="hidden" name="name" value="<?php echo $Name ?>" />
<input type="hidden" name="family" value="<?php echo $Family ?>" />
<input type="hidden" name="number" value="<?php echo $Number ?>" />

<input type="button" name="submitForm" value="submit Form" />
</form>
</body>
</html>document.myForm1.submit()
هر وقت صفحه لود شد با POST اطلاعات را به صفحه مورد نظر شما ارسال میکند.
فقط کافیه متغیر های را در کد PHP مقدار دهی کنید.

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

اگر از روش قبلی استفاده کنید اطلاعات شما درون سرور و به صورت مستقیم به سایت دوم ارسال میشه.

MMSHFE
سه شنبه 26 بهمن 1389, 08:04 صبح
با سلام، چرا از Serialize كردن فرم استفاده نميكنيد؟
jQuery Serialize (http://api.jquery.com/serialize)
اميدوارم به دردتون بخوره. موفق و مؤيد باشيد.