PDA

View Full Version : Query string در شی ایجاد شده



amin_sltny
یک شنبه 21 مهر 1392, 17:32 عصر
سلام بچه ها من دارم یه cms می سازم برای خودم!!!!!!!!!

در این cms اومدم یه شی کلی تعریف کردم. در این شی یه متد run دارم که توی صفحه ایندکسم اجرا میشه و همه چیز د اون شی بررسی میشه(که چه صفحه ای را باز کنه و...)

حالا می خوام توی این شی query string های url ام را بگیرم وبعد از بررسی نتیجه را به کاربر نشون بدم باید چه کار کنم؟


ممنون

mbf5923
یک شنبه 21 مهر 1392, 18:25 عصر
سلام منظورتون رو مفهوم تر بیان کنید خوشحال میشم کمکتون کنم

فرزند کوروش
یک شنبه 21 مهر 1392, 18:35 عصر
لطفا سورس قرار بدید

plague
یک شنبه 21 مهر 1392, 18:42 عصر
به صورت آرگومان آرایه GET رو میتونی در هنگام construct شدن شی بهش ارسال کنی از اونجا هم بزارش توی یک متغیر که برای همه توابع کلاس قابل دسترسی باشه

amin_sltny
دوشنبه 22 مهر 1392, 08:00 صبح
به صورت آرگومان آرایه GET رو میتونی در هنگام construct شدن شی بهش ارسال کنی از اونجا هم بزارش توی یک متغیر که برای همه توابع کلاس قابل دسترسی باشه

ممنون دوست عزیز مشکلم حل شد حالا یه سوال دیگه هم دارم اگه می تونید ممنون میشم کمکم کنید.

من با استفاده از $_SERVER['QUERY_STRING'] کوئری string ام را می گیرم حالا می خوام اونا بررسیش کنم و مقدار ها را از نامشان جدا کنم و در متغیری بریزم و بر اساس اون تصمیم بگیرم باید چه کار کنم!!؟؟

ممنون

2undercover
دوشنبه 22 مهر 1392, 14:51 عصر
با استفاده از تابع explode می تونی اون متن رو بشکنی اینطوری:



$query = substr($_SERVER['QUERY_STRING'], 1);
$query = explode('&', $query);
$data = array();
foreach($query as $string) {
$string = explode('=', $string);
$data[$string[0]] = $string[1];
}

pary_daryayi
دوشنبه 22 مهر 1392, 19:43 عصر
اگه تو page1 داشته باشیم :


<a href="page2.php?x=100&y=one">go to page2 </a>


تو page2 اینطور میشه دریافت کرد :


$z=$_SERVER["QUERY_STRING"];
parse_str($z);
echo $x,'<br/>';
echo $y;

amin_sltny
سه شنبه 23 مهر 1392, 08:28 صبح
با استفاده از تابع explode می تونی اون متن رو بشکنی اینطوری:



$query = substr($_SERVER['QUERY_STRING'], 1);
$query = explode('&', $query);
$data = array();
foreach($query as $string) {
$string = explode('=', $string);
$data[$string[0]] = $string[1];
}



ممنون دوست عزیز مشکلم حل شد فقط یه سوال دیگه هم داشتم ببین توی این کد اگه ما آدرس مون را به صورت www.example.com/?action وارد کنیم به خط explode('=',$string) خطا میگیره به خاطر اینکه مساوی نداره برای جلوگیری از این خطا به نظرتون باید چه کرد

فرزند کوروش
سه شنبه 23 مهر 1392, 09:19 صبح
اگه بخوای بصورت گت بفرستی باید علامت = وجود داشته باشه

amin_sltny
سه شنبه 23 مهر 1392, 10:02 صبح
اگه بخوای بصورت گت بفرستی باید علامت = وجود داشته باشه

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

2undercover
سه شنبه 23 مهر 1392, 14:26 عصر
من با علامت = می فرستم ولی یه موقع هست کاربر این ادرس را وارد می کنه. اون کد های من خطا میده می خوام این خطا را ازش جلوگیری کنم

بفرمایید:


$query = substr($_SERVER['QUERY_STRING'], 1);
$query = explode('&', $query);
$data = array();
foreach($query as $string) {
if(strpos($string, '=') !== false) {
$string = explode('=', $string);
$data[$string[0]] = $string[1];
} else {
$data[$string] = '';
}
}

navid3d_69
چهارشنبه 24 مهر 1392, 05:16 صبح
بهتر و راحت تر نیست از MVC استفاده کنی؟ یا حداقل به اون روش آدرس رو بگیر و جدا کن

این کد رو توی htaccess بزار



RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]


و این کد php هم برای اینکه بدونی چجوری کار می کنه



$url = isset($_GET['url']) ? $_GET['url'] : null;
$url = rtrim($url, '/');
$url = filter_var($url, FILTER_SANITIZE_URL);
$url = explode('/', $url);
print_r($url);

amin_sltny
چهارشنبه 24 مهر 1392, 17:46 عصر
بهتر و راحت تر نیست از MVC استفاده کنی؟ یا حداقل به اون روش آدرس رو بگیر و جدا کن

این کد رو توی htaccess بزار



RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]


و این کد php هم برای اینکه بدونی چجوری کار می کنه



$url = isset($_GET['url']) ? $_GET['url'] : null;
$url = rtrim($url, '/');
$url = filter_var($url, FILTER_SANITIZE_URL);
$url = explode('/', $url);
print_r($url);



بچه ها من توی این CMS ام با یه مشکل برخوردم. می خوام یه تابع بنویسم که تمام آدرس های استایلهام و جاوااسکریپتام و ... را از اون بدم.یعنی در واقع می خوام این تابع مسیر اصلی فایل ها مو بهم بده تا من از وی اون مسیر های دیگمو بسازم این کا ر را بلدم اما می خوام به همراه دامینم باشه نه ادرس فایل هام مثلا نمی خوام باشه C://xampp... می خوام باشه localhost/.... و می خوامم طوری باشه که وقتی فایل ها مو توی یه پوشه میذارم خطا پیدا نشه کسی می تونه بهم بگه باید چه کا رکنم

$dirname = dirname(__FILE__).DIRECTORY_SEPARATOR;

public function GetRootURL()
{
return "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
}

navid3d_69
پنج شنبه 25 مهر 1392, 11:18 صبح
آدرس رو مستقیم بده مثلا



ww.site.com/temp/css/style/.css

می تونی توی یه فایل چندتا ثابت تعریف کنی توی اون آدرس سایت رو بدی از اون ها استفاده کنی

amin_sltny
جمعه 26 مهر 1392, 10:47 صبح
آدرس رو مستقیم بده مثلا



ww.site.com/temp/css/style/.css

می تونی توی یه فایل چندتا ثابت تعریف کنی توی اون آدرس سایت رو بدی از اون ها استفاده کنی

خب اینطوری که دیگه یه cms پویا نیست دیگه

navid3d_69
جمعه 26 مهر 1392, 17:04 عصر
دقت کنید گفتم ثابت تعریف کنید وقتی ثابت رو توی پروژه تغییر بدین همه آدرس ها جدید میشه غیر از اینه؟

amin_sltny
جمعه 26 مهر 1392, 17:39 عصر
دقت کنید گفتم ثابت تعریف کنید وقتی ثابت رو توی پروژه تغییر بدین همه آدرس ها جدید میشه غیر از اینه؟

خوب باید با به صورت دستی این کار انجام بشه می خوام بدونم به صورت غیر دستی نمیشه؟؟؟؟

navid3d_69
جمعه 26 مهر 1392, 18:13 عصر
خب آدرس سایت رو با آرایه



$_SERVER


بگیرین و فولدر ها هم بعد از اون قرار بدین توی آدرس های

ولی در کل شما باید اطلاعاتی رو برای هر سایت دستی وارد کنید مثل اطلاعات دیتابیس