За последние 24 часа нас посетили 30654 программиста и 1795 роботов. Сейчас ищут 1249 программистов ...

Не работает _get запрос (но работает _post)

Тема в разделе "PHP для новичков", создана пользователем Mark32, 10 сен 2009.

  1. Mark32

    Mark32 Активный пользователь

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    Не работает _get запрос, при этом _post запросы срабатывают! Подскажите в чём дело может быть?
     
  2. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
  3. Mark32

    Mark32 Активный пользователь

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    Nothing here yet - прикольно.
     
  4. dots_rei

    dots_rei Активный пользователь

    С нами с:
    7 авг 2009
    Сообщения:
    193
    Симпатии:
    0
    опишите проблему подробно, с примерами что именно и где не работает. проблема может быть в чем угодно, а телепатов тут, как заметили выше, нет :)
     
  5. Fduch

    Fduch Активный пользователь

    С нами с:
    1 июл 2009
    Сообщения:
    140
    Симпатии:
    0
    Осмелюсь предположить: в ошибке алгоритма?
     
  6. Frozen

    Frozen Активный пользователь

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
    проблема на 56-й строчке
     
  7. Mark32

    Mark32 Активный пользователь

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    сделал урлы по модреврайту.

    _post site.ru/folder1/folder2/article/ - срабатывает,
    _get site.ru/folder1/folder2/article/ - нифига не передаются, причём ясно прописывается при сабмите формы site.ru/folder1/folder2/article/?var=primer
     
  8. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Mark32
    Скажите, а что такое GET и POST запросы?
    Чем они отличаются друг от друга?
     
  9. Mark32

    Mark32 Активный пользователь

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
  10. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Mark32
    Не могу, поскольку до тех пор, пока вы самостоятельно своими словами не объясните, что есть что, я не могу ничего посоветовать.
    А знаете почему?
    Потому что по решению видно, что вы в корне не понимаете сути этих вещей, поскольку GET не может не работать, если только проблемы какие-то с веб-сервером или модулями (mod_rewrite, например).
    Удалите .htaccess и проверьте.
     
  11. Mark32

    Mark32 Активный пользователь

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    я написал что преобразую урлы модреврайтом. под понятием "_get не работает" я не имею ввиду нерабочую функцию _get, а то что он не срабатывает при примерах выше. Конечно без модреврайта он прекрасно функционирует, и спросил здесь на форуме у людей знающих по опыту какая может быть причина сего и ждал компетентного конкретного ответа на вопрос, а не абстаркциями. помоему если почитать мои предыдущие посты можно логично преставить что причина в этом преобразовании урлов, но вот какая именно? почему _get при таких урлах не срабатывает, а _post работает? как проверить ошибку? думаю что если Вы сами знаете тему о которой спрашиваю, то всего что я описал достаточно для совета. Вы сами делали ЧПУ когда-нибудь? Если да, то с гет запросами не было проблем? Если не было, значит вы врядли ответите на мой вопрос. Тут мне придётся шнырять по всем цепочкам. Если были проблемы подобного рода, буду очень признателен за компетентный совет.
     
  12. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Mark32
    То, что я напишу далее - читайте ВНИМАТЕЛЬНЕЙШЕ.
    Рассмотрим пример:

    .htaccess
    Код (Text):
    1. RewriteEngine On
    2.  
    3. RewriteRule ^abc/([a-z]+)$    index.php?page=$1
    index.php
    PHP:
    1. <?php
    2.  
    3. echo '<pre>' . print_r($_GET, true) . '</pre>';
    4.  
    5. ?>
    mod_rewrite "кушает" наш GET запрос.
    Поехали дальше.
    Что нам известно?
    Известно, что массив SERVER имеет REQUEST_URI, который содержит в себе всю строку запроса.
    Нам же нужна строка, переданная после знака "?", правильно?
    Ну так поехали:

    index.php
    PHP:
    1. <?php
    2.  
    3. // Получаем строку запроса
    4. $query = end(explode("?", $_SERVER['REQUEST_URI']));
    5.  
    6. // Вносим её в массив $_GET
    7. parse_str($query, $_GET);
    8.  
    9. // Смотрим полученные параметры
    10. echo "Name: {$_GET['name']}<br />ID: {$_GET['id']}";
    11.  
    12. ?>
    Теперь передадим этому скрипту параметры (вызовем его с ними):
    http://example.com/abc/hi?id=32&name=apple

    Это мой личный вариант решения проблемы, придуманный на ходу.
    Возможно, есть более рациональное решение, но мне нравится это =)
     
  13. Mark32

    Mark32 Активный пользователь

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    Apple
    спасибо за участие в вопросе. Такой подход значительно помогает всем задающим вопрос.
    В нашем случае он мне помог понять то, что вы не правильно поняли моего вопроса.

    У меня примерно такая же схема ЧПУ. GET что обрабатывается из htaccess "съедается" файлом-обработчиком на ура.

    Я про другое говорил. Уже есть готовый скомпиленный путь site.ru/folder/folder2/folder3/file1/ - так вот там, где /file2/ скрипт ловит из люой формы переменную echo $_GET['primer']. Посылаю из любой формы (визуально показываю):

    <form action='http://site.ru/folder/folder2/folder3/file1/' method='GET'>
    <input type='text' name='primer'>
    <input type='submit'>
    </form>

    В итоге в site.ru/folder/folder2/folder3/file1/ наша echo $_GET['primer'] не распечатывается!

    а если

    <form action='http://site.ru/folder/folder2/folder3/file1/' method='POST'>
    <input type='text' name='primer'>
    <input type='submit'>
    </form>

    В итоге в site.ru/folder/folder2/folder3/file1/ наша echo $_POST['primer'] распечатывается
     
  14. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Mark32
    Господи, конечно же на распечатывается, mod_rewrite съедает её, POST он не ест.
    Послали вы формой или ввели в строку браузера - нет разницы, форма делает запрос в случае GET через адресную строку, а строка съедалась, съедается и будет съедаться веб-сервером, потому что именно таким способом он переписывает адреса. И понял я ваш вопрос, и дал решение на него.
     
  15. Mark32

    Mark32 Активный пользователь

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    это все знают! у меня проблем нет с модреврайтом! Всё работает отлично!
    Я говорю что при самбите по методу GET в уже скомпилированную аресную строку /folder/folder2/file1/ не печатает $_GET['primer']

    А ПРИ POST запросе $_POST['primer'] печатает!
     
  16. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Ну-ну, так держать.