PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : درخواست کد پی اچ پی گرفتن متغییر از آدرس سایت



gigarayaneh
June 26th, 2016, 17:28
با سلام
دوستان گرامی یک کد Php نیاز دارم به طور مثال چندین متغییر میخواهیم تعریف کنیم که آدرس فایلی در آن تعریف شده باشد
به طور مثال :


<?php
$site1 = "http://www.site1.com";
$site2 = "http://www.site2.com";
$site3 = "http://www.site3.com";
$site4 = "http://www.site4.com";
?>

خوب الان میخواهیم در صورتیکه در مروگر تایپ کنیم

http://www.site.com/?site1
در صفحه پی اچ پی که داریم در جایی که تعریف کرده ایم متغییری که در مرورگر ارسال کردیم جایگزین شود.


<script type='text/javascript'>

file: "<?php ?>",

</script>

mojtaba05
June 26th, 2016, 18:03
سلام،

اگه منظورتون اینه که می خواین از یو آر ال (متود get) اطلاعات رو بگیرید، آدرس رو باید به این شکل بنویسید:

http://localhost/index.php?site=site1

و فایل index.php



<?php
$site1 = "http://www.site1.com";
$site2 = "http://www.site2.com";
$site3 = "http://www.site3.com";
$site4 = "http://www.site4.com";

if(isset($_GET['site'])){
$site = $_GET['site'];

switch($site){
case 'site1' :
$requested_site = $site1;
break;
case 'site2' :
$requested_site = $site2;
break;
case 'site3' :
$requested_site = $site3;
break;
case 'site4' :
$requested_site = $site4;
break;
default:
$requested_site = 'uknown';
break;
}

echo $requested_site;
}

اگر تعداد متغیرهاتون زیاده، می تونید از حلقه ها استفاده کنید.

یک روش دیگه هم استفاده از متغیر متغیر (دو تا علامت دلار) هست:

<?php
$site1 = "http://www.site1.com";
$site2 = "http://www.site2.com";
$site3 = "http://www.site3.com";
$site4 = "http://www.site4.com";

if(isset($_GET['site'])){
$site = $_GET['site'];
echo $$site;
}

gigarayaneh
June 26th, 2016, 18:37
با سلام
دوست عزیز ممنون بابت پاسختون
متغییر ها حدود 50 ادرس فایل هست
در ضمن من میخواهم صفحه که درست میکنم به صورت زیر آدرس را بهش ارسال کنم
به طور مثال صفحه آدرس باشه http://localhost/index.php الان وقتی میخواهم متغییر مورد نظر را به فایل پی اج پی بفرستیم به صورت ?site1 باشه یعنی علامت سوال اسم متغییر مورد نظر که الان مثلا site2 , site1 و..
یعنی به صورت زیر :



http://localhost/index.php?site1
http://localhost/index.php?site2



یک کد بود که از آدرس دریافت میکنه



$_SERVER['QUERY_STRING'];

T.Toosi
June 26th, 2016, 18:51
<?php
$squrl = null;
$urls = [
'site1' => 'file1',
'site2' => 'file2',
'site3' => 'file3',
];
if(isset($_GET))
foreach ($_GET as $k=>$v) {
if (array_key_exists($k,$urls)) {
$squrl = @$urls[$k];
break;
}
} else echo 'n';

if($squrl) echo '<script type="text/javascript">
file: "'.$squrl.'",
</script>';
?>

gigarayaneh
June 26th, 2016, 19:14
با سلام
دوست گرامی به خط 3 که کد
$urls = [
در آن قرار دارد خطا می دهد!

T.Toosi
June 26th, 2016, 21:23
با سلام
دوست گرامی به خط 3 که کد
$urls = [
در آن قرار دارد خطا می دهد!

php 7 جواب میدهد.

Mr.programmer
June 26th, 2016, 21:27
با سلام
دوست گرامی به خط 3 که کد
$urls = [
در آن قرار دارد خطا می دهد!

به جای


$urls = [
'site1' => 'file1',
'site2' => 'file2',
'site3' => 'file3',
];

از


$urls = array( 'site1' => 'file1', 'site2' => 'file2', 'site3' => 'file3', );


استفاده کنین

gigarayaneh
June 27th, 2016, 00:13
دوستان عزیز کد به صورت زیر درست شد!


<script type="text/javascript">
<?php
$squrl = null;
$urls = array(
'site1' => 'file1',
'site2' => 'file2',
'site3' => 'file3',
);
if(isset($_GET))
foreach ($_GET as $k=>$v) {
if (array_key_exists($k,$urls)) {
$squrl = @$urls[$k];
break;
}
} else echo 'n';
if($squrl) echo '
file: "'.$squrl.'",
';
?>
</script>


با کمال تشکر از دوستان عزیز
الان یه سوال در صورتیکه ما به صورت زیر آدرس را وارد کنیم


http://localhost/index.php?site1

به صورت صحیح موارد که در متغییر ها قرار داده ایم قرار داده میشود
الان یک سوال اگه آدرس را به صورت


http://localhost/index.php

وارد کنیم یعنی بدون ?site1 میخواهیم یه آدرس را به صورت دیفالت نشان دهد. یعنی در صورتیکه بدون پارمتر باشد و یا اینکه پارامتر ها اشتباه باشه یه آدرس را به صورت دیفالت جایگزین شده باشد
با کمال تشکر

T.Toosi
June 27th, 2016, 00:21
<script type="text/javascript">
<?php
$squrl = null;
$urls = array(
'site1' => 'file1',
'site2' => 'file2',
'site3' => 'file3',
);
if(isset($_GET)) :
foreach ($_GET as $k=>$v) {
if (array_key_exists($k,$urls)) {
$squrl = @$urls[$k];
break;
}
} else echo 'n';
if($squrl) echo '
file: "'.$squrl.'",
';
else:
echo 'file: "defaultURL"';
endif;
?>
</script>

gigarayaneh
June 27th, 2016, 04:25
ممنون دوست عزیز وقتی کد جدید را در نرم افزار Adobe Dreamweaver قرار می دهم لاین 15 و 19 خطا میگیره و وقتی روی هاست آپلود میکنم پیغام خطا برای همین خطوط اعلام میکنه


} else echo 'n';



else:


ممنون میشم کد را تصحیح کنید
با تشکر

rezaonline.net
June 27th, 2016, 04:34
<script type="text/javascript">
<?php
$squrl = null;
$urls = array(
'site1' => 'file1',
'site2' => 'file2',
'site3' => 'file3',
);
if( ! empty($_GET))
{
foreach ($_GET as $k=>$v)
{
if (array_key_exists($k,$urls))
{
$squrl = @$urls[$k];
break;
}
}


if($squrl) echo 'file: "'.$squrl.'",';
}
else
{
echo 'file: "defaultURL"';
}
?>
</script>

T.Toosi
June 27th, 2016, 04:34
خوابم میاد چشمام نمیبینه چی تایپ میکنم، تست کنید :


<script type="text/javascript">
<?php
$squrl = null;
$urls = array(
'site1' => 'file1',
'site2' => 'file2',
'site3' => 'file3',
);
if(isset($_GET)) {
foreach ($_GET as $k=>$v) {
if (array_key_exists($k,$urls)) {
$squrl = @$urls[$k];
break;
}
}
if($squrl) echo 'file: "'.$squrl.'",';
} else echo 'file: "defaultURL"';
?>
</script>

gigarayaneh
June 27th, 2016, 06:19
کد قرار داده شده توسط rezaonline.net جواب نداد!
کد قرار داده شده توسط دوست عزیز T.Toosi با کمی تغییر جواب داد.
یعنی الان با کد زیر در صورتیکه اشتباه متغییر ها را ارسال کنیم باز دیفالت را نمایش می دهد و در صورتیکه متغییر صحیح باشد آنرا نمایش می دهد


<script type="text/javascript">
<?php
$squrl = null;
$urls = array(
'site1' => 'file1',
'site2' => 'file2',
'site3' => 'file3',
);
if(isset($_GET))
foreach ($_GET as $k=>$v) {
if (array_key_exists($k,$urls)) {
$squrl = @$urls[$k];
break;
}
}
if($squrl) echo 'file: "'.$squrl.'",';
else
{
echo 'file: "defaultURL",';
}
?>
</script>

لطفا چک کنید کد بالا از نظر صحیح بودن کد ها مشکلی ندارد
با تشکر

gigarayaneh
October 13th, 2016, 20:13
با سلام
از دوستانی که لطف کردن و در تاپیک مشکل ما را برطرف کردن کمال تشکر را داریم
کد زیر :


<script type="text/javascript">
<?php
$squrl = null;
$urls = array(
'site1' => 'file1',
'site2' => 'file2',
'site3' => 'file3',
);
if(isset($_GET))
foreach ($_GET as $k=>$v) {
if (array_key_exists($k,$urls)) {
$squrl = @$urls[$k];
break;
}
}
if($squrl) echo 'file: "'.$squrl.'",';
else
{
echo 'file: "defaultURL",';
}
?>
</script>


مشکل را برطرف کرده ولی یک مشکلی داریم در کد بالا تعریف کرده ایم
متغییر 'site1' برابر است با 'file1' است حال اگه بخواهیم متغییر 'site1' برابر چندین فایل باشد یعنی تعریف کنیم


'site1' => 'file1',
'site1' => 'file1-2',
'site1' => 'file1-3',
'site1' => 'file1-4',

حال وقتی متعیر 'site1' را فراخوانی میکنم به صورت راندوم یکی از آدرس های file1 یا file1-2 یا file1-3 یا file1-4 را در هر بار فراخوانی به صورت راندوم قرار دهد.

با تشکر

T.Toosi
October 14th, 2016, 01:59
<script type="text/javascript">
<?php
$squrl = null;
$urls = array(
'site1' => array('file1', 'file1-2', 'file1-3'),
'site2' => 'file2',
'site3' => 'file3',
);
if(isset($_GET))

foreach ($_GET as $k=>$v) {
if($k == 'site1') {
$rand = array_rand($v, 1);
$squrl = $v[$rand[0]];
break;
}
if (array_key_exists($k,$urls)) {
$squrl = @$urls[$k];
break;
}
}


if($squrl) echo 'file: "'.$squrl.'",';
else
{
echo 'file: "defaultURL",';
}
?>
</script>

gigarayaneh
October 14th, 2016, 13:06
T.Toosi عزیز با کمال تشکر از پاسخگویی شما
در کد بالا فکر کنم درصوتیکه site1 چند متغییر داشته باشد به صورت راندم نمایش داده میشود
در کل من میخواهم هر کدام یک از متغییر ها که تعریف میکنم به صورت متغییر باشد و شرایط زیر باشد
در صورتیکه متغییر به صورت زیر باشد
'site2' => 'file2', همان file2 نمایش داده شود ولی اگه چندین مورد بود آنها را به صورت راندوم نمایش داده شود و محدودیتی در تعداد نداشته باشد به طور مثال:


'site1' => array('file1', 'file1-2'),
'site2' => array('file2'),
'site3' => array('file3', 'file3-2', 'file3-3', 'file3-4'),
'site4' => array('file4', 'file4-2', 'file4-3'),
'site5' => array('file5', 'file5-2', 'file5-3', 'file5-4', 'file5-5'),

به طور کلی متغیر تعرف شده مساوی یک آدرس یا چندین آدرس باشد و محدودیت در این مورد نباشد و در صورت داشتن یک آدرس آنرا نمایش داده و در صورت داشتن چندین آدرس یکی را به صورت راندوم انتخاب نماید



<?php
$squrl = null;
$urls = array(
'site1' => array('file1', 'file1-2'),
'site2' => array('file2'),
'site3' => array('file3', 'file3-2', 'file3-3', 'file3-4'),
'site4' => array('file4', 'file4-2', 'file4-3'),
'site5' => array('file5', 'file5-2', 'file5-3', 'file5-4', 'file5-5'),
);
if(isset($_GET))

foreach ($_GET as $k=>$v) {
if($k == 'site1') {
$rand = array_rand($v, 1);
$squrl = $v[$rand[0]];
break;
}
if (array_key_exists($k,$urls)) {
$squrl = @$urls[$k];
break;
}
}


if($squrl) echo 'file: "'.$squrl.'",';
else
{
echo 'file: "defaultURL",';
}
?>




لطفا کد بالا را تصحیح کنید تا موارد فوق را بتوانیم انجام دهیم
سپاس

T.Toosi
October 14th, 2016, 16:33
$squrl = null;
$urls = array(
'site1' => array('file1', 'file1-2'),
'site2' => array('file2'),
'site3' => array('file3', 'file3-2', 'file3-3', 'file3-4'),
'site4' => array('file4', 'file4-2', 'file4-3'),
'site5' => array('file5', 'file5-2', 'file5-3', 'file5-4', 'file5-5'),
);



if(isset($_GET))

foreach ($_GET as $k=>$v) {
if (array_key_exists($k,$urls)) {
$rand = array_rand($urls[$k], 1);
$squrl = $urls[$k][$rand];
break;
}
}


if($squrl) echo 'file: "'.$squrl.'",';
else
{
echo 'file: "defaultURL",';
}
?>