PDA

View Full Version : سوال: مشکل در ارسال اطلاعات بوسیله متد get



mortezawolf
جمعه 28 خرداد 1389, 20:09 عصر
سلام دوستان
من به یک مشکل عجیب برخوردم:
در تگ فرم من یک آدرسی در اکشن ست کردم و متد هم get هستش اما به محض زدن دگمه submit به اون آدرس redirect نمیشم و بعد از علامت ? هیچی در url ظاهر نمیشه:

کدم اینه:

<form action="index.php?id=2" method="get">
<input type="submit" />
</form>دگمه رو میزنم به صفحه http://127.0.0.1/index.php میرم
با ویندوز seven کار میکنم و با اخرین ورژن easyphp
از دوستان تقاضای راهنمایی دارم

yasgig
جمعه 28 خرداد 1389, 21:11 عصر
<form action="index.php" method="get">
<input type="hidden" name="id" value="2">
<input type="submit" />
</form>

mortezawolf
شنبه 29 خرداد 1389, 09:28 صبح
<form action="index.php" method="get">
<input type="hidden" name="id" value="2">
<input type="submit" />
</form>
ممنون اما سوال من چيز ديگه اي بود راه حل كه زياده اما چرا اين اتفاق افتاده مهمه

funpatogh
یک شنبه 30 خرداد 1389, 00:46 صبح
خوب باید method رو به post تغییر بدهید تا به جایی که دقیقا شما تعیین کرده اید فرم ارسال بشه, در متد get اینپوت ها با کلیک بر روی دکمه submit به آخر url اضافه میشوند و این روند فرم ها هست و خطایی در کار شما نیست

mortezawolf
یک شنبه 30 خرداد 1389, 07:35 صبح
خوب باید method رو به post تغییر بدهید تا به جایی که دقیقا شما تعیین کرده اید فرم ارسال بشه, در متد get اینپوت ها با کلیک بر روی دکمه submit به آخر url اضافه میشوند و این روند فرم ها هست و خطایی در کار شما نیست
ميدونم منم مشكلم اينه كه روندش درست اجرا نميشه ديگه url رو كامل get نميكنه

pashaie
یک شنبه 30 خرداد 1389, 08:51 صبح
آقا من تو نت گشتم، مثل اینکه این سوال شما از اون سوالای بی جوابه!
یا شایدم جوابش خیلی سادس که هیچکی بخودش زحمت نداده جواب بده.

در کل یه سری به این لینکا بزن
http://stackoverflow.com/questions/1977390/html-forms-input-type-submit-problem-with-actionurl-when-url-contains-index-as
http://stackoverflow.com/questions/2617592/submit-html-form-with-get-method-with-full-action-path
اینها هم همین مشکل شما رو دارند ولی توضیح نداده که چرا این اتفاق می افته فقط راه حل دادن

راستی اگه به جوابی رسیدی ما رو هم بی خبر نزار.

mortezawolf
یک شنبه 30 خرداد 1389, 20:38 عصر
آقا من تو نت گشتم، مثل اینکه این سوال شما از اون سوالای بی جوابه!
یا شایدم جوابش خیلی سادس که هیچکی بخودش زحمت نداده جواب بده.

در کل یه سری به این لینکا بزن
http://stackoverflow.com/questions/1977390/html-forms-input-type-submit-problem-with-actionurl-when-url-contains-index-as
http://stackoverflow.com/questions/2617592/submit-html-form-with-get-method-with-full-action-path
اینها هم همین مشکل شما رو دارند ولی توضیح نداده که چرا این اتفاق می افته فقط راه حل دادن

راستی اگه به جوابی رسیدی ما رو هم بی خبر نزار.



دوست عزیز خیلی لطف کردی جواب دادی
من خودم به یه نتایجی رسیدم و فکر میکنم که مشکل از این ورژن easyphp باشه چون با یه ورژن قدیمی ترش امتحان کردم درست بود.لینکهاتم دیدم اما جواب سوال من توش نبود و یه روش دیگه برا ارسال اطلاعات بود راه و روش که خیلی زیاده اما این مورد خیلی عجیبه اگه به نتیجه رسیدم حتما موضوع رو اطلاع میدم

امیـرحسین
دوشنبه 31 خرداد 1389, 00:11 صبح
من الان فرم زیر رو تحت فایل test.php تست کردم.
<form action="test.php?id=2" method="GET">
<input type="text" name="idd" value="2" />
<input type="submit" />
</form>

<?php
if(isset($_GET['idd']))
print_r($_GET);
?>
خروجی بعد از Submit کد زیر بود:

Array ( [idd] => 2 )
این یعنی در حالت GET، کوئری های آدرس، همگی به اتفاق راهی سطل زباله میشوند و علت اینکه شما بعد از URL فقط یک علامت ؟ میبینید بخاطر این هست که توی فرمتون هیچ فیلدی ندارید. فایلی که من ساختم، آدرسش به این تغییر می کنه:

http://localhost/test.php?idd=2

من سرچ کردم و از طریق یه فرومی به این عبارت از w3 رسیدم (اینجا (http://www.w3.org/TR/html401/interact/forms.html#h-17.13.3.4)):



If the method is "get" and the action is an HTTP URI, the user agent takes the value of action, appends a `?' to it, then appends the form data set, encoded using the "application/x-www-form-urlencoded" content type. The user agent then traverses the link to this URI. In this scenario, form data are restricted to ASCII codes.

یعنی در حالت GET، مرورگرها، آدرس اصلی رو از action برمیدارند، یه علامت ? بعدش میذارند، فیلدهای فرم رو کد و بهش اضافه می کنند.