PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : سوالی درباره php



srashedian
September 20th, 2010, 15:07
سلام
من دوتا سوال دارم که ممنون میشم دوستان برنامه نویس جواب بدن

1- چطور میتونم کل یک Query رو توی یه متغییر به صورت رشته بخونم؟
به عنوان مثال، من یک اسکریپت مینویسم و با آدرس زیر فراخوانی میکنم:
www.site.com/index.php?sajad=12345&rashedian=54321&wht=enable
حالا من میخوام این اسکریپت رو که با آدرس بالا بار کردم، کل قسمت بعد از علامت سوال توی آدرس بالا، به شکل یک رشته (نه آرایه) در یک متغیر ذخیره بشه...

2- توی بعضی سایت ها یه عکسی توی بک گراند صفحه میزارن که همونجا میچسبه و با اسکرول کردن صفحه پایین نمیره (نوشته های وسط عکس یا روی عکس اسکرول میشه و صفحه میره پایین، اما عکس همونجا ثابت میمونه)، ضمن اینکه هر چی به اسکرول صفحه اضافه بشه طول این عکس عوض نمیشه... اینو چطوری میشه ساخت؟ (فکر میکنم یکی از قابلیت های CSS هست)

mdf092
September 20th, 2010, 15:27
میتونید از تابع زیر استفاده کنید

implode(',',$REQUEST);

دومی هم قابلیت CSS هست پیدا کردم براتون میزارم

skrsoft
September 20th, 2010, 15:33
1- چطور میتونم کل یک Query رو توی یه متغییر به صورت رشته بخونم؟
به عنوان مثال، من یک اسکریپت مینویسم و با آدرس زیر فراخوانی میکنم:
www.site.com/index.php?sajad=12345&rashedian=54321&wht=enable
حالا من میخوام این اسکریپت رو که با آدرس بالا بار کردم، کل قسمت بعد از علامت سوال توی آدرس بالا، به شکل یک رشته (نه آرایه) در یک متغیر ذخیره بشه...


ميتونيد تك تك مقادير رو با متد GET بگيريد و درون متغير بريزيد .

مثلا براي sajad به صورت زير عمل كنيد :


$sajad=$_GET['sajad'];

البته اگه بخواهيد از اين مقدار توي query ها استفاده كنيد حواستون بايد باشه كه مستقيما استفاده نشه
(چون خطر نفوذ به سايت با تكنيك sql injection هست)

srashedian
September 20th, 2010, 15:39
ميتونيد تك تك مقادير رو با متد get بگيريد و درون متغير بريزيد .

مثلا براي sajad به صورت زير عمل كنيد :


$sajad=$_get['sajad'];

البته اگه بخواهيد از اين مقدار توي query ها استفاده كنيد حواستون بايد باشه كه مستقيما استفاده نشه
(چون خطر نفوذ به سايت با تكنيك sql injection هست)

مقادیر متد گت مشخص نیست... مکنه هر متنی با هر شکلی بعد از علامت سوال ارسال بشه... (اسکریپت اون طرفش دست من نیست، فقط میدونم که با متد get ارسال میشه)

skrsoft
September 20th, 2010, 16:07
مقادیر متد گت مشخص نیست... مکنه هر متنی با هر شکلی بعد از علامت سوال ارسال بشه... (اسکریپت اون طرفش دست من نیست، فقط میدونم که با متد get ارسال میشه)

منظورتون رو درست متوجه نشدم
ميخواهيد كل عبارت بعد از علامت سوال رو بخونيد ؟

---------- Post added at 04:07 PM ---------- Previous post was at 03:59 PM ----------

براي خوندن كل عبارت بعد از علامت سوال مي تونيد از كد زير استفاده كنيد :

با علامت سوال :


$test = substr($_SERVER['REQUEST_URI'],strpos($_SERVER['REQUEST_URI'],'?'));

بدون علامت سوال :


$test = substr($_SERVER['REQUEST_URI'],strpos($_SERVER['REQUEST_URI'],'?')+1);

اگه منظورتون رو درست متوجه نشدم بفرماييد :)

srashedian
September 20th, 2010, 16:28
منظورتون رو درست متوجه نشدم
ميخواهيد كل عبارت بعد از علامت سوال رو بخونيد ؟

---------- post added at 04:07 pm ---------- previous post was at 03:59 pm ----------

براي خوندن كل عبارت بعد از علامت سوال مي تونيد از كد زير استفاده كنيد :

با علامت سوال :


$test = substr($_server['request_uri'],strpos($_server['request_uri'],'?'));

بدون علامت سوال :


$test = substr($_server['request_uri'],strpos($_server['request_uri'],'?')+1);

اگه منظورتون رو درست متوجه نشدم بفرماييد :)

ممنون، همینو میخواستم... و به صورت عجیبی با اینکه قبلا از این تابع صدها بار استفاده کرده بودم اصلا به ذهنم نرسیده بود که میشه آدرس رو جدا کرد به جای خوندن از متغیر $_get

حالا سوال دوم رو اگه کسی بلده آموزش بده

skrsoft
September 20th, 2010, 16:47
ممنون، همینو میخواستم... و به صورت عجیبی با اینکه قبلا از این تابع صدها بار استفاده کرده بودم اصلا به ذهنم نرسیده بود که میشه آدرس رو جدا کرد به جای خوندن از متغیر $_get

حالا سوال دوم رو اگه کسی بلده آموزش بده

حواهش مي كنم

اما سوال دوم

با css به راحتي مي تونيد اين كار رو انجام بديد :


<body style="background-attachment:fixed;background-repeat:no-repeat;" background="bg.jpg">

موفق باشيد :)

znhost
September 20th, 2010, 16:48
براي بكگراند كل صفحه اينجوري ميشه:

body{background: url('adress') fixed;}

براي كجا مي خوايد همون بكگراند؟؟
يه no-repeat هم بزاري ديگه تكرار نميشه عكست

mdf092
September 20th, 2010, 17:26
برای جلوگیری از نفوذ حتما ار توابع htmlentities و mysql_escape_string استفاده کافی رو ببرید و تمامی ورودی های کاربر رو با اونها چک کنید و به هیچ عنوان به ورودی کاربر اعتماد نکنید

اگر ورودی برای کاربر وجود داره این طوری درنظر بگیرید که حتما میخواد ازش برای نفوذ استفاده کنه

srashedian
September 20th, 2010, 17:37
یه سوال دیگه، چطور میشه کاربر رو به یک صفحه دیگه ریدایرکت کرد؟ (با پی اچ پی)
مثلا من توی یک if مقدار متغیری رو بررسی کنم... بعد به عنوان مثال اگر مقدار اون متغیر معادل عبارت "وب هاستینگ" بود، به webhostingtalk.ir ریدایرکت بشه (باید بلافاصله تریگ بشه، نیازی نباشه که کاربر کلیدی فشار بده، خود اون شرط if اگر درست بود مستقیما صفحه انجمن باز بشه)...

mdf092
September 20th, 2010, 17:49
با کمک یکی از توابع کارآمد به نام header

<?php
header("Location: http://www.example.com/"); /* Redirect browser */

/* Make sure that code below does not get executed when we redirect. */
exit;
?>

rn4j1m1
September 20th, 2010, 17:58
و ملت زحمت کشیدند php.net را آفریدند :d

skrsoft
September 20th, 2010, 18:01
و ملت زحمت کشیدند php.net را آفریدند :d

و خداوند اسپمر ها رو آفريد :d

پ.ن : شايد بنده خدا نتونسته از php.net استفاده كنه ، بالاخره انجمن رو براي همچين كارايي ساختند ديگه :->

mdf092
September 20th, 2010, 18:13
آره دقیقا
انجمن هم برای راه انداختن افراد خیلی بهتر از استفاده مستقیم از راهنماست

گام های اول میتونه از همینجاها زده بشه
بعد به مرور پیشرفت میکنن و میتونن گلیم خودشون رو از اینترنت پبدا کنن:d

srashedian
September 20th, 2010, 18:45
با کمک یکی از توابع کارآمد به نام header

<?php
header("Location: http://www.example.com/"); /* Redirect browser */

/* Make sure that code below does not get executed when we redirect. */
exit;
?>


سلام
ممنون، اینو بلد بودم اما متاسفانه به درد من نمیخوره، قبلش خروجی دارم...


و ملت زحمت کشیدند php.net را آفریدند :d

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

skrsoft
September 20th, 2010, 18:58
سلام
ممنون، اینو بلد بودم اما متاسفانه به درد من نمیخوره، قبلش خروجی دارم...


هيچ راه منطقي براي اينكار غير از Header وجود نداره (توي php)
تنها كاري كه ميتونيد بكنيد استفاده از html‌ يا javascript براي ريدايركت هست :


<meta http-equiv="REFRESH" content="0;url=http://www.test.php">

موفق باشيد

rn4j1m1
September 20th, 2010, 19:01
هيچ راه منطقي براي اينكار غير از Header وجود نداره (توي php)
تنها كاري كه ميتونيد بكنيد استفاده از html‌ يا javascript براي ريدايركت هست :


<meta http-equiv="REFRESH" content="0;url=http://www.test.php">

موفق باشيد

این کار از نظر امنیتی مشکل داره ! ومیشه جلوش رو گرفت

srashedian
September 20th, 2010, 19:04
هيچ راه منطقي براي اينكار غير از Header وجود نداره (توي php)
تنها كاري كه ميتونيد بكنيد استفاده از html‌ يا javascript براي ريدايركت هست :


<meta http-equiv="REFRESH" content="0;url=http://www.test.php">موفق باشيد


این کار از نظر امنیتی مشکل داره ! ومیشه جلوش رو گرفت

ممنون از هردوتون... بله، میدونم...

و فانکشنشو بالاخره از توی کوله بار کتابهام پیدا کردم (برای زمانی که نشه با هدر کار کرد... البته میدونم هدر رو میشه با بافر کردن بعد از خروجی ها هم استفاده کرد، اما این به نظرم بهتر اومد):


void http_redirect (string $url)

Rezash
September 20th, 2010, 19:33
مشكل ظاهرا حل شده ولي يك توصيه دوستانه ! هيچ وقت خروجي رو قبل از اتمام برنامه نفرستيد...
هم راحت تر و هم مناسب تر هست
براي قالب كافي هست از يك كلاس معمولي يا حرفه اي تر مثل اسمارتي استفاده كنيد (rn4j1m1 عزيز آموزشش رو قرار بود بذاره كه نذاشت بگمونم :d )
مزايا :
1. عدم مشكل با كار كردن با توابعي مثل session_start در جايگاه دلخواه از برنامه
2. عدم مشكل با توابع header (كلي تر از مورد 1 شد!)
3. يكپارچگي در برنامه نويسي php و عدم تداخل با html و جاوا اسكريپت و ...
4. تست و بررسي و عيب يابي آسان تر
5. قابليت تغيير قالب بدون نياز به تغيير در كدهاي php
و...

mdf092
September 20th, 2010, 19:35
میتونید یه خط جاوااسکریپت توی هر جایی از صفحه که خواستید اکو کنید و عمل انتقال رو انجام بدید


<?php if(true):?>
<script language="javascript">
document.location = "<?php echo $YOUR_PAGE_TO_REDIRECT?>"
</script>
<?php endif;?>