Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Проблема с Get запросом
Форумы портала PHP.SU » » Работа с файловой системой и файлами » Проблема с Get запросом

Страниц (1): [1]
 

1. vanicon - 08 Декабря, 2011 - 21:07:27 - перейти к сообщению
У меня есть форма регистрации, она отправляется на сервер с помощью ajax по get'у. И все нормально, но я потом еще создал файлик чтобы скрывать директорию в исходном коде страницы, так как если просмотреть исходный код страницы найти этот js кусок с отправкой данных то там же будет прописан полный путь до него типа: system/plugins и тд. А я сделал так чтобы он отправлял эти параметры на файл url.php и туда передавал два параметра 1 параметр название каталога, например x1 где x1 в самом url.php означает каталог system/plugins/ajax, а 2 параметр имя необходимого скрипта.
mod_rewrite в htaccess настроил что бы url был вот таким:
http://site[dot]com/url/x1/name_file.php
По этому же принципу я сделал и картинки, файлы стилей...
Но вот теперь при передачи параметров на этот файл(url.php) скрипт подключаемый в этом файле(сам обработчик) не видит их, думаю это связано с ЧПУ которое я сделал для url.php.
И теперь не знаю что делать, как сделать чтобы этот файл(url.php) видел эти параметры?
2. Данил_123 - 08 Декабря, 2011 - 21:09:59 - перейти к сообщению
vanicon может просто подключить файл?
3. Bio man - 08 Декабря, 2011 - 21:34:00 - перейти к сообщению
vanicon, может выложите файл url.php?
4. vanicon - 08 Декабря, 2011 - 21:46:09 - перейти к сообщению
файл url.php
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. header('charset=utf-8');
  3. if($_GET['catalog'] <> null && $_GET['file'] <> null){
  4. require_once 'config.php';
  5. require_once 'path.php';
  6. require_once DERICTORY_MODULES.'/'.$this_module.'/class/UrlHide.php';
  7. require_once DERICTORY_MODULES.'/'.$this_module.'/functions/security_info.php';
  8. $catalog = security_info($_GET['catalog']);
  9. $file = security_info($_GET['file']);
  10. $url_hide = new UrlHide($catalog,$file);
  11. $type = $url_hide->type_file;
  12. $path = $url_hide->path_file;
  13. if($type <> null && $path <> null){
  14. if($type == 'css'){
  15. header('Content-type: text/css');
  16. $css_code = file_get_contents(URL_SITE.'/'.$path.'/'.$file);
  17. echo $css_code;
  18. }
  19. elseif($type == 'php'){
  20. include_once DERICTORY_SITE.'/'.$path.'/'.$file;
  21. }
  22. elseif($type == 'js'){
  23. header('Content-type: text/javascript');
  24. $js_code = file_get_contents(URL_SITE.'/'.$path.'/'.$file);
  25. echo $js_code;
  26. }
  27. elseif($type == 'png'){
  28. header('Content-type: image/png');
  29. $image_png_code = file_get_contents(URL_SITE.'/'.$path.'/'.$file);
  30. echo $image_png_code;
  31. }
  32. elseif($type == 'gif'){
  33. header('Content-type: image/gif');
  34. $image_gif_code = file_get_contents(URL_SITE.'/'.$path.'/'.$file);
  35. echo $image_gif_code;
  36. }
  37. }
  38. }
  39. else{
  40. echo 'Проверьте параметры Get запроса';
  41. }
  42.  

Цитата:
может просто подключить файл?

Ну в файле url.php так я и делаю, подключаю файл обработчика формы...
5. Bio man - 08 Декабря, 2011 - 22:15:23 - перейти к сообщению
ммм, че то я тупанул. файл мог не выкладывать Улыбка

подозреваю дело в ЧПУ, можно написать ф-цию для парсинга ссылки.

Спойлер (Отобразить)

пример работы:
localhost/catalog/file.php
catalog - $args[0]
file.php - $args[1]

я вас правильно понял?
6. vanicon - 08 Декабря, 2011 - 22:46:14 - перейти к сообщению
Не помогло, так как параметры передаются по Get'у, а там что типо такого будет:
http://test2[dot]ru/url_hide/h435345[dot][dot][dot]&mesto=43545
и вылезает ошибка, так как в $args[2] = register.php?login=67657&password=435454&passwordclone=45435454&email=343434&mesto=43545
Но дело тут не в ошибки все ровно параметры такие как $_GET['login'] и $_GET['password'] и другие, скрипт (сам обработчик да и url.php) не видит.
В принципе можно разбором этой ссылке получить эти get параметры, но все это будет зависеть от их последовательности в передачи get запроса, может есть какой вариант попроще?
7. Bio man - 08 Декабря, 2011 - 23:05:18 - перейти к сообщению
vanicon пишет:
но все это будет зависеть от их последовательности
неа, не будет. можно получить query_string. кароче, обращение к нужному файлу идет из файла url.php таким образом $args[0].'/'.$args[1].'/'.$args[2]
в $args[2] будут все нужные геты, то есть конечный файл их получит.
PHP:
скопировать код в буфер обмена
  1. function parseURI(){
  2.         $uri = $_SERVER['SCRIPT_NAME'];
  3.         $args = array();
  4.         foreach(explode('/', $uri) as $arg){
  5.                 if(empty($arg)) continue;
  6.                 $args[] = $arg;
  7.         }
  8.         $args[] = $_SERVER['QUERY_STRING'];// $_GET
  9.         /*
  10.          * $args[0] - каталог
  11.          * $args[1] - имя файла
  12.          */
  13.         return $args;
  14. }

и еще вопрос, как у вас работает метод $url_hide->type_file? может дело в нем?
(Добавление)
выведете массив $_GET в самом начале файла. пустой будет? print_r или var_dump()
8. vanicon - 08 Декабря, 2011 - 23:20:58 - перейти к сообщению
Цитата:
неа, не будет. можно получить query_string. кароче, обращение к нужному файлу идет из файла url.php таким образом $args[0].'/'.$args[1].'/'.$args[2]
в $args[2] будут все нужные геты, то есть конечный файл их получит.

Что то у меня все ровно не получается, может делаю что не так...
Цитата:
и еще вопрос, как у вас работает метод $url_hide->type_file? может дело в нем?

этот метод просто берет get параметр file_name в данном случае это register.php и с помощью explode() получаю расширение .php и сравниваю с допустимыми и т.д, ну и сам метод возвращает значение типа файла
9. Bio man - 08 Декабря, 2011 - 23:31:29 - перейти к сообщению
vanicon пишет:
с помощью explode() получаю расширение .php

ага, и получаешь php?login=67657&password=435454&passwordclone=45435454&email=343434&mesto=43545

если не так то код сюда, интересно взглянуть что за file_name такой из гет запроса...
10. vanicon - 09 Декабря, 2011 - 04:57:39 - перейти к сообщению
Цитата:
ага, и получаешь php?login=67657&password=435454&passwordclone=45435454&email=343434&mesto=43545

если не так то код сюда, интересно взглянуть что за file_name такой из гет запроса...

Нет там получаю нормально и метод сам не причем, потому что эта get переменная не равна всем эти get запросам а только вот этому register.php, вот только что проверил даже
11. Bio man - 09 Декабря, 2011 - 17:08:41 - перейти к сообщению
хз. попробуй отладить, выводи все что нужно и смотри что не выводится, не передается и думай почему, так сложно сказать что там не так, по идее должно работать но не работает...
12. vanicon - 10 Декабря, 2011 - 09:41:59 - перейти к сообщению
Нашел решение этой проблемы,
нужно передавать get параметры вот таким вот образом:
http://test2.ru/url/x1/register.php&login=67657&password=435454&passwordclone=45435454&email=343434&mesto=43545
Теперь вот надо тока json передавать параметры не начиная со знака '?'...
13. tuareg - 10 Декабря, 2011 - 09:51:56 - перейти к сообщению
Я дико извиняюсь. Не совсем по теме. Но все же если не получается отправлять GET отправляйте POST. И по идее не будет никаких проблем
14. vanicon - 10 Декабря, 2011 - 10:04:01 - перейти к сообщению
Цитата:
Я дико извиняюсь. Не совсем по теме. Но все же если не получается отправлять GET отправляйте POST. И по идее не будет никаких проблем

Ну можно было методом POST отправлять, но это уже на совсем безвыходный вариант, на сколько я помню методом GET передается немного побыстрее так как он служит для передачи не больших данных на сервер...
15. vanicon - 12 Января, 2012 - 20:41:01 - перейти к сообщению
Подробно прочитал супер глобального массива, нашел $_SERVER['REQUEST_URI'] он то что нужно

 

Powered by ExBB FM 1.0 RC1