PDA

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



hamed-php
شنبه 16 بهمن 1389, 11:01 صبح
سلام به دوستان

آیا امکان ارسال همزمان داده ها از یک فرم به دو دیتابیس مختلف وجود دارد. مثلاً یکسری بره به دیتابیس سایت خودم و یکسری هم بره تو دیتابیس سایت دوستم.

ممنون میشم اگر راهنمایی فرمایید.

sattaryekta
شنبه 16 بهمن 1389, 11:51 صبح
بستگی به دوستت داره! چونکه باید نام کاربری و رمز دیتابیس را در اختیارت بگذاره و IP شما را در لیست دسترسی ها اضافه کنه.

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

MMSHFE
شنبه 16 بهمن 1389, 12:13 عصر
با سلام، اگه دوستتون نخواد اطلاعات شخصي سايت خودش رو به شما بده، ميتونين ازش بخواين كه يك صفحه PHP درست كنه كه مقادير خاصي رو همراه با يك كد امنيتي به روش GET دريافت كنه و توي ديتابيس ثبت كنه. بعد فرم شما، بعد از اينكه اطلاعات رو توي ديتابيس خودتون ثبت كرد، همون مقادير رو بهمراه كد امنيتي به آدرس صفحه PHP دوستتون اضافه كنه و به اون صفحه Redirect بشه. اينطوري اطلاعات توي اون ديتابيس هم ثبت خواهد شد.
موفق و مؤيد باشيد.

hamed-php
شنبه 16 بهمن 1389, 13:07 عصر
ممنون از راهنماییتون


من ورود اطلاعاتم رو به دیتا بیس خودم به این صورت تعریف کردم :

function insert_student($a)
// vorode etelaat be databeyse khodam
{
$conn = db_connect();
$query = "insert into mystudent values
('$a')";

$result = $conn->query($query);
if (!$result)
return false;
else
return true;
}

و این هم فرم من هست


function form()
{
// vorode name be form
<form method='GET' action="mystudent.php">
<table bgcolor='#cccccc'>
<tr>
<td>name:</td>
<td><input type='text' name='name'></td></tr>
<tr>
<td colspan=2 align='center'>
<input type='submit' value="in"></td></tr>
<tr>
</table></form>
}

حالا دوستم هم مثل من یه صفحه PHP ساخت و گذاشت تو سایتش.
من چطوری بهش آدرس بدم.
اطلاعات شخصی سایتشو ولی اجازه ندارم بگیرم.

mohsen6500
شنبه 16 بهمن 1389, 13:30 عصر
خوب اطلاعاتی رو که گرفتید به آدرس دوستتون گت کنید دیگه
مثلا :


<?php
$name = $_GET['name'];
$Go = 'http://www.yoursite.com?name='.$name;
?>

hamed-php
شنبه 16 بهمن 1389, 14:10 عصر
ممنونم

یعنی همزمان دو تا action بذارم برای GET تو فرم خودم؟

<form method='GET' action="mystudent.php">

میخوام همزمان name به دو تاش ارسال بشه!

sattaryekta
شنبه 16 بهمن 1389, 14:41 عصر
این کار شما لقمه را دور سر تاب دادنه!
حداقل از POST استفاده می کردید نه GET

hamed-php
شنبه 16 بهمن 1389, 15:33 عصر
میشه لطفاً راه کوتاهتر رو راهمایی فرمایید. فرض بفرمایید بجای get هم از متد post استفاده شده است.

MMSHFE
یک شنبه 17 بهمن 1389, 09:10 صبح
با سلام، نياز نيست اين كار رو انجام بدين. كافيه از Redirect استفاده كنيد. كد صفحه مقصد فرم شما:


<?php
$name = $_GET['name'];
$url = 'http://www.yoursite.com?name='.$name;
header("location: $url");
?>

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

sattaryekta
یک شنبه 17 بهمن 1389, 10:30 صبح
با Post راه کوتاه تر نمیشه. منظورم سوکت و... بود. ولی سرور MySQL قابلیت هایی داره که گذاشتن برای یه همچین روزهایی!
به نظر من از این راه (ارسال اطلاعات بوسیله get) جاهایی مثل Yahoo Messenger جالبه. مثلا Yahoo یک Url و Api بیرون میده که شما بتونی از وضعیت Messenger اشخاص مطلع شوید.
یا مثل وضعیت آب و هوا و...

hamed-php
یک شنبه 17 بهمن 1389, 16:45 عصر
خیلی ممنون از راهنمایی شما


$url = 'http://www.yoursite.com?name='.$name;


در لوکال هاست بخوام امتحان کنم آدرس Http رو برای هر کدام چطور بنویسم؟

hamed-php
دوشنبه 18 بهمن 1389, 08:32 صبح
تو لوکال که آدرس دادم به محض ورود دیتا به دیتابیس دوم پیغام ذیل ظاهر میشه(در دیتابیس خودم اطلاعات قرار میگیره):



Not Found

The requested URL /kelas/database2/familynameali was not found on this server.

MMSHFE
دوشنبه 18 بهمن 1389, 08:57 صبح
با سلام، لطفاً كدها و همچنين ساختار بانكهاي اطلاعاتي MySQL رو براي بررسي بگذاريد. موفق و مؤيد باشيد.

hamed-php
دوشنبه 18 بهمن 1389, 09:38 صبح
کد ورودم :


<html>
<head>
<title><insert name></title>
</head>
<body>
<form method='GET' action="mystudent.php">
<table bgcolor='#cccccc'>
<tr>
<td>name:</td>
<td><input type='text' name='name'></td></tr>
<tr>
<td colspan=2 align='center'>
<input type='submit' value="in"></td></tr>
<tr>
</table></form>
</body>
</html>

کد php خودم:

<?php
$name = $_GET['name'];
$con = mysql_connect("localhost","root","","mya");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("mya", $con);
$sql="INSERT INTO name(name)
VALUES('$name')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
$url = 'http://localhost/kelas/database2/familyname'.$name;
header("location: $url");
mysql_close($con)

?>

کد دوستم:

<?php
$name = $_GET['name'];
$con = mysql_connect("localhost","root","","myb");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("myb", $con);
$sql="INSERT INTO familyname(name)
VALUES('$name')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
$url = 'http://localhost/kelas/database2/mystudent.php'.$name;
header("location: $url");
mysql_close($con)


?>

دیتابیس mya دو تا ستون داره یکی id و یکی name
دیتابیس myb هم دو تا ستون داره یکی id و یکی familyname

sattaryekta
دوشنبه 18 بهمن 1389, 12:30 عصر
Not Found

The requested URL /kelas/database2/familynameali was not found on this server.

این خطا ربطی به دیتابیس نداره

به این خط مربوط میشه:


$url = 'http://localhost/kelas/database2/familyname'.$name;

hamed-php
دوشنبه 18 بهمن 1389, 13:13 عصر
name$ میره در کنار اسم فایل قرار میگیره و این پیغام ظاهر میشه.

hamed-php
دوشنبه 18 بهمن 1389, 21:27 عصر
sorry!
آدرسو اشتباه زده بودم که اصلاح کردم



$url = 'http://localhost/kelas/database2/familyname.php?name='.$name;:

البته به هر دو دیتابیس اطلاعات وارد شد و از هر کدوم به یکبار 20 تا رکورد؟؟!!. فقط این پیغام هم در صفحه ظاهر شد که اگه امکانش هست بفرمایید برای رفعش چه باید کرد؟:











The page isn't redirecting properly








Firefox has detected that the server is redirecting the request for this address in a way that will never complete.





* This problem can sometimes be caused by disabling or refusing to accept
cookies.

MMSHFE
سه شنبه 19 بهمن 1389, 07:12 صبح
با سلام، دوست گرامي شما در كد سايت دوستتون دوباره به همون صفحه كه به صفحه دوستتون Redirect ميشه نبايد برگرديد چون توي حلقه ميفتين و مدام از يك صفحه به صفحه ديگه Redirect ميشين. به جاي اينكار يك صفحه پيغام درست كنيد كه به كاربر ميگه اطلاعات ثبت شد و يك لينك هم (براي مثال) به فرم ورود اطلاعات داره. حالا وقتي صفحه شما بعد از ثبت اطلاعات، به صفحه سايت دوستتون Redirect شد، توي اون صفحه بعد از ثبت اطلاعات به صفحه پيغام در سايت شما بايد Redirect بشه. براي اينكه فقط يك بار اطلاعات ثبت بشه، آخر دستور INSERT از LIMIT 1 استفاده كنيد.
موفق و مؤيد باشيد.

hamed-php
سه شنبه 19 بهمن 1389, 08:25 صبح
ممنون از راهنمایی شما

یک سوال داشتم : چرا در اینجا وقتی فارسی تو فرم تایپ میکنم یک رکورد خالی در دیتا بیس ها ثبت میشه؟!!
ولی با انگلیسی مشکلی نداره.

ولی در حالت عادی با ثبت حروف فارسی مشکلی ندارم.

MMSHFE
سه شنبه 19 بهمن 1389, 13:18 عصر
با سلام، دقت كنيد كه كدگذاري صفحات شما و دوستتون UTF-8 without BOM باشه و توسط تگ META كدگذاري utf-8 رو مشخص كرده باشيد:


<META http-equiv="content-type" content="text/html; charset=utf-8"/>

و بانك هم utf8_bin يا utf8_persian_ci باشه.
بعد از اتصال به بانك هم قبل از هر Query دستور زير رو اجرا كنيد:


mysql_query('SET NAMES \'utf8\'');

موفق و مؤيد باشيد.

hamed-php
دوشنبه 25 بهمن 1389, 10:19 صبح
سلام

یه سوال داشتم:
تو قسمت قبل یک داده رو برای ریدایرکت میفرستادیم مثل name$،
حالا اگه فرم ما چند تا داده داشته باشه مثلا ایمیل و تلفن و... قسمت url اون چزوری میشه؟


$url = 'http://localhost/kelas/database2/student.php?name='.$name;

MMSHFE
دوشنبه 25 بهمن 1389, 12:17 عصر
با سلام، بايد اينطوري بنويسيد:


$url = 'http://localhost/kelas/database2/student.php';
$url .= '?name='.$name;
$url .= '&email='.$email;
$url .= '&phone='.$phone;

توضيح: اولين پارامتر با ? و بقيه با & مشخص ميشن.
موفق و مؤيد باشيد.

jirjirakk
چهارشنبه 27 بهمن 1389, 12:22 عصر
به جای رفتن به سایت دوستتون و بازگشت مجدد به سایت خودتون می تونید
از کتابخانه cURL استفاده کنید و اطلاعات را به راحتی به سایت دوستتون Get و یا Post کنید
البته این روش (و روشی که دوستان مطرح کردن) شاید از نظر امنیتی مشکلاتی رو برای شما پبش بیاره ;)

!) راه حل های امن تری نیز هست که اگر زمان بود توضیح خواهم داد.

hamed-php
چهارشنبه 27 بهمن 1389, 15:17 عصر
!) راه حل های امن تری نیز هست که اگر زمان بود توضیح خواهم داد.

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

آیا URL با cURL تفاوتی دارد ؟ چراکه با راهنمایی دوستمون MMSHFE و استفاده از URL و redirect و متد GET این کار صورت پذیرفت.
اگر روش متفاوتی هست مخصوصاً با متد POST لطفاً راهنمایی فرمایید