PDA

View Full Version : ارسال دستی مقادیر به صورت POST



tabib_m
سه شنبه 08 فروردین 1385, 16:39 عصر
سلام
همون طور که میدونید میشه مقادیر مورد نیاز رو به صورت دستی به یک صفحه ارسال کرد
مثلا در اینجا با کلیک بر روی لینک، به صفحه ی a.php متغیر b با مقدار c ارسال میشه، و این حالت، حالت ارسال مقادیر یک فرم به وسیله ی متد get هست.


<a href="a.php?b=c">Click Here</a>


حالا چجوری میشه یه همچین کاری رو کرد در مورد متد post ؟

یعنی چجوری میشه مقادیر رو به صورت دستی (یعنی بدون استفاده از فرم) به صفحه ی جدید، به وسیله ی شبیه سازی متد Post ، ارسال کرد؟

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

Ariyan
چهارشنبه 09 فروردین 1385, 00:44 صبح
تابع Header !

spsgorgan
چهارشنبه 09 فروردین 1385, 01:21 صبح
میشه یکسری از عناصر رو مخفی کرد و ارسال کرد

cybercoder
چهارشنبه 09 فروردین 1385, 11:44 صبح
برای استفاده از متد POST باید از فرم استفاده کرد پس شما می تونید در فرمتون یک عنصر مخفی بذارید.
اونطوری که من حدس می زنم شما می خواید متغیرتون رو از دید کاربر مخفی کنید. پس بهترین راه استفاده از SESSION هستش. برای این کار:

$var1='myinitialization' ;
session_start ;
$HTTP_SESSION_VARS['yourvarname']=$var1 ;

حالا اگه به صفحه دیگه تون برید. می تونید از آرایه $HTTP_SESSION_VARS مقداری که می خواید رو فرا خوانی کنید بدون اینکه کاربر هیچ دخالتی بتونه انجام بده

البته یادتون باشه حتما یه مقایسه بین SESSION_ID ها انجام بدی.

موفق باشی

tabib_m
چهارشنبه 09 فروردین 1385, 18:48 عصر
از جواب همه ی دوستان ممنونم

تابع Header !
میشه طرز کار با این تابع رو بگید؟
از راهنمای PHP هیچچی سر در نیاوردم :خجالت:


میشه یکسری از عناصر رو مخفی کرد و ارسال کرد
یعنی چی؟


برای استفاده از متد POST باید از فرم استفاده کرد پس شما می تونید در فرمتون یک عنصر مخفی بذارید.
من میخوام با یک لینک کار کنم، چجوری میتونم از فرم استفاده کنم؟


اونطوری که من حدس می زنم شما می خواید متغیرتون رو از دید کاربر مخفی کنید. پس بهترین راه استفاده از SESSION هستش.

فرض کنید من 100 تا لینک دارم ، که میخوام همه ی اونها به یک صفحه لینک بشن، ولی با هر کدوم از اونها ، یک متغیر (مثلا a) با مقادیر مختلف ارسال بشه، ولی نمیخوام مقداری که داخل a هست ، به کاربر نمایش داده بشه!

معمولا در یک همچین شرایطی من از همون "علامت سؤال" استفاده میکنم ، ولی اینجا ، چون نمیخوام مقدار مورد نظر به کاربر نمایش داده بشه، برای همین از استفاده از این راه معذورم.

امیدوارم که فهمیده باشید که چرا نمیخوام (و یا بهتره بگم نمیتونم) از سشن استفاده کنم.

nematia
پنج شنبه 10 فروردین 1385, 04:05 صبح
راه حل گوگل:
تا حالا فکر کردین گوگل از کجا میفهمه روی کدوم گزینه توی صفحه نتایج کلیک میکنید؟ ظاهرا شما روی یک لینک کلیک میکنید، پس اطلاعات چطور در سیستم آمارگیری گوگل ثبت میشن؟ یه سرچ بکنید تا مستنداتش رو ببینید. مشکل شما هم حل میشه!

alirezador
پنج شنبه 10 فروردین 1385, 14:21 عصر
این سوال خیلی جالبه چون اون وقت یک مقدار از sql injection ها هم جلوش گرفته میشه
در ضمن سورس goolge خیلی در هم بر همه میشه یک مقدار خودتون توضیح بدید

tabib_m
پنج شنبه 10 فروردین 1385, 15:50 عصر
ظاهرا شما روی یک لینک کلیک میکنید، پس اطلاعات چطور در سیستم آمارگیری گوگل ثبت میشن؟
خیلی ممنون از راهنماییتون. چون من هم دقیقا یه همچین چیزی رو میخواستم.

حالا بیاید با هم کاری که گوگل کرده رو بررسی کنیم:
از اونجایی که بحث ، بحث کلیک کردن بر روی لینک هاست، بنابراین حتما گوگل از یک زبان کلاینت ساید (در اینجا جاواسکریپت) استفاده کرده.
من سرس یکی از صفحات رو یه نگاهی انداختم و نتایج زیر رو بدست اوردم:
1 - توی این صفحه ، کلا چهار تا تابع ساخته شده :


<SCRIPT>
<!--
function ss(w,id){window.status=w;return true;}
function cs(){window.status='';}
function clk(url,ct,cd,sg){if(document.images){var u="";if (url) u="&url="+escape(url).replace(/\+/g,"%2B");new Image().src="/url?sa=T&ct="+escape(ct)+"&cd="+escape(cd)+u+"&ei=t7QrRPHWD7_mac2I0cMK"+sg;}return true;}
function ga(o,e) {if (document.getElementById) {var a = o.id.substring(1); var p = "", r = "", t, f, h;var g = e.target;if (g) { t = g.id;f = g.parentNode;if (f) {p = f.id;h = f.parentNode;if (h)r = h.id;}} else {h = e.srcElement;f = h.parentNode;if (f)p = f.id;t = h.id;}if (t==a || p==a || r==a)return true;document.getElementById(a).href += "&ct=bg";top.location.href=document.getElementById(a).href }}
//-->
</SCRIPT>


2- از این چهار تا تابع فقط از یکی از اونها استفاده شده. (البته تا اونجایی که من دقت کردم) تابع سوم ، یعنی تابع clk
موارد استفاده از این تابع هم فقط در مورد لینک های گزینه های یافته شده س :


<A class=l onmousedown="return clk(this.href,'res','3','')"
href="http://www.healthgrades.com/directory_search/physician/profiles/dr-md-reports/Dr-Mohsen-Habib-MD-2F7685FC.cfm">Dr.
<B>Mohsen</B> A. <B>Habib</B>, MD - Check Doctor Quality</A>


در اینجا من کد یکی از لینکها رو برداشتم.
توی قسمت onmosedown از این تابع استفاده شده.

این تابع 4 تا ورودی داره :
ورودی اول مقدار href همین لینک ه.
ورودی دوم ، تا اونجایی که من دقت کردم ، برای همه ی موارد مقدار res هست.
ورودی سوم ، شماره ی گزینه ی یافته شده س. یعنی در اینجا من کد گزینه ی سوم رو گذاشتم.
و اما ورودی چهارم ، در همه ی موارد خالیه.

من بیشتر از این چیزی رو نتونستم بفهمم.
از بقیه ی دوستان میخوام کمک کنن.


مشکل شما هم حل میشه!
اگه شما راه حل رو میدونید ، لطفا بگید که خیلی دردسر نکشم. :)

nematia
پنج شنبه 10 فروردین 1385, 18:00 عصر
راه حل ساده:
http://www.tutorialtastic.co.uk/page/external_link_hit_counter

راه حل بهتر و پیچیده تر:
http://frenchfragfactory.net/ozh/archives/2004/09/17/click-counter-plugin-for-wordpress/
(کامنت ها را هم حتما بخوانید.)

راه حلهای دیگه ای هم هست. روی شبکه ندیدمشون. شاید فرصت کنم توضیح بدم.

nematia
پنج شنبه 10 فروردین 1385, 18:17 عصر
اینجا هم نمونه ای از کار مورد علاقه شما انجام شده:
http://www.actualscripts.com/analyzer/server/modules/tracker/view.php

alirezador
پنج شنبه 10 فروردین 1385, 18:46 عصر
یا من از مرحله خیلی پرتم یا شما جریان را متوجه نشدین اون 2 تا لینک اول که بیشتر روش get را توضیح میداد تا post ,و مثال دوم هم که form داشت

nematia
جمعه 11 فروردین 1385, 01:48 صبح
سر فرصت توضیح میدم.

Ariyan
جمعه 11 فروردین 1385, 04:10 صبح
1. هدری را میخواهید ارسال کنید به صورت یک رشته به این تابع میدهید ولی قبلا هیچ هدری نباید ارسال شده باشد (نه به وسیله این تابع و نه مرورگر ) که از طریق تابع headers_sent قابل بررسی است. در مورد هدر برای POST متغییر ها در آخر هدر بعد از یک خط خالی اضافه میشوند!
دو نمونه هدر ارسالی برای POST و GET :

GET /index.htm?Var1=test1&Var2=test2 HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5
Accept: application/x-shockwave-flash,text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en
Accept-Encoding: gzip,deflate
Accept-Charset: UTF-8,*
Keep-Alive: 300
Connection: keep-alive
Weferer: NBOHMKHJYFMYXOEAIJJPHS
Cookie: bblastactivity=0; bblastvisit=1140198831


POST / HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5
Accept: application/x-shockwave-flash,text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en
Accept-Encoding: gzip,deflate
Accept-Charset: UTF-8,*
Keep-Alive: 300
Connection: keep-alive
Weferer: AFXISHJEXXIMQZUIVOTQNQ
Cookie: bblastactivity=0; bblastvisit=1140198831
Content-Type: application/x-www-form-urlencoded
Content-Length: 19

Var1=test1&Var2=test2
2.



نقل قول:
میشه یکسری از عناصر رو مخفی کرد و ارسال کرد
یعنی چی؟
<input type="hidden" name="name" value="var"/>
3.



نقل قول:
برای استفاده از متد POST باید از فرم استفاده کرد پس شما می تونید در فرمتون یک عنصر مخفی بذارید.
من میخوام با یک لینک کار کنم، چجوری میتونم از فرم استفاده کنم؟
<a href="javascript:document.FormName.HiddenBoxName.value="Var";document.FormName.submit();>Text</a>

alirezador
جمعه 11 فروردین 1385, 11:33 صبح
مورد header اصلا متوجه نشدم چی هستش چون از چنین چیزی تا حالا استفاده نکردم در مورد text box مخفی هم و استفاده از ان در لینک هم که بازم اطلاعات لو میره یعنی کاربر بازم بهشون دخل و تصرف داره

nematia
جمعه 11 فروردین 1385, 14:34 عصر
من قبلا هم گفتم راه حلهای دیگری هم هست. ولی فرصت توضیح نداشتم. گفتم شاید با روشهای ساده تر مشکلتون حل بشه. ولی از اونجا که میدونم تا مدتی سرم شلوغه نشانی هایی میدم تا استفاده کنید.
اول از همه مبحث Cross Site Scripting رو خوب بخونید. (تعجب نکنید. کاملا مرتبط به موضوعه)
بعد این آدرسها را ببینید:
http://digitalmediaminute.com/article/1715/adsense-click-pepper
http://www.seobook.com/analytics/astrack.js
http://www.webmasterworld.com/forum89/1788.htm

و بعد اگر حل شد که خوبه. اگر نه بگردید دنبال فوروم webmasters guru و تجزیه و تحلیل کاری که گوگل کرده رو توی اون ببینید.

tabib_m
دوشنبه 14 فروردین 1385, 13:24 عصر
من از این مباحث هیچی نفهمیدم.

در ضمن از این حرفی که زدم بر میگردم:

من هم دقیقا یه همچین چیزی رو میخواستم.


چون اون موقع گیج شده بودم، نفهمیدم چی دارم میگم. معذرت میخوام.

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

این رو هم بگم، همه ی لینک ها ، به یک صفحه ی خاص ارجاع داده میشن ، ولی بر اساس اون مقداری که قراره ارسال بشه ، صفحه ی دوم ، کار میکنه.

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

tabib_m
شنبه 19 فروردین 1385, 01:10 صبح
جواب دیگه ای نیست ؟
من به این مسئله نیازمندم
خواهشا اگه کسی راه ساده و قابل فهمی سراغ داره بگه.

Ariyan
شنبه 19 فروردین 1385, 01:27 صبح
اگر فقط میخواهید مقدار مشخص نشود :
1. میتونی برای هر مقدار یک معادل (مثلا عدد) بسازی و یه جایی(SQL ، فایل و ...) ذخیره کنی توی لینک ها از معادل استفاده کنی و در صفحه پردازنده معادل ها را به مقدار اصلی تبدیل کنی.
2. خودت یه تابع Codec بنویسی.

اگر میخواهید مقادیر جعل نشوند فکر نمیکنم اینجوری ها بشه.

spsgorgan
شنبه 19 فروردین 1385, 02:20 صبح
پسرها ! ایشون نمیتونه از سشن استفاده کنه ؟ نه کاربر میبینه ونه توی سورس هست

alirezador
شنبه 19 فروردین 1385, 10:42 صبح
دوست من اگر سشن باشه اون وقت اگر نصبت به موقعیت مختلف خواستیم مقدار با جاوا تغییر کنه اون موقع سشن کار نخواهد کرد

tabib_m
شنبه 19 فروردین 1385, 15:41 عصر
اگر فقط میخواهید مقدار مشخص نشود :
1. میتونی برای هر مقدار یک معادل (مثلا عدد) بسازی و یه جایی(SQL ، فایل و ...) ذخیره کنی توی لینک ها از معادل استفاده کنی و در صفحه پردازنده معادل ها را به مقدار اصلی تبدیل کنی.
2. خودت یه تابع Codec بنویسی.

اگر میخواهید مقادیر جعل نشوند فکر نمیکنم اینجوری ها بشه.
خیلی ممنون.
راه حل دوم برام خیلی مناسبه
دست شما درد نکنه. :)


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

به هر حال از کمک همه ی دوستان ممنونم.

alirezador
شنبه 19 فروردین 1385, 21:03 عصر
محسن جان با خود php این مسئله امکان پزیر بود ولی و باید با جاوا هم این مسئله امکان پذیر باشه