Xpoint
   [напомнить пароль]

Передача методом GET - когда в строке ссылки передаются значения переменных, а когда их имена?

Метки: [без меток]
[удл]
2012-05-27 13:05:41 [обр] lassy[досье]

Здравствуйте все!
Не получается передача на локалхосте методом GET в строке ссылки. В одном скрипте передаются значения переменных, а в другом только их имена. Например , по ссылке:
<a href='forma.php?select&item=$x&object=$y&value=smoll' TARGET='Sets'>$folders[$j]</a>"; в одном фрейме передаются
значения и переменных и константа:
$_GET['item'] и $_GET['object'] содержат значения $x и $y и константы select и smoll и это видно в явном виде в строке ссылки при наведении курсора на ссылку.

В другом же фрейме в строке ссылки видны только константы и имена переменных $x и $y, как константы, а значения
$_GET['item'] и $_GET['object'] не определены и получить через них значения $x и $y невозможно. Константы select и smoll при этом благополучно передаются, а переменные - нет.
 В чем причина такого поведения метода GET и что нужно сделать, чтобы по клику ссылки передавались значения переменных всегда, как оно и должно быть?
Спасибо.

спустя 54 минуты [обр] Филипп Ткачев(20/112)[досье]

В одном случае у вас переменные парсятся, а в другом - нет.

<?php

// в данном случае происходит замена переменных на их значения
// т.к. происходит обработка PHP-кода
$x=1;
$y=2;

$folders = array('test folder');
$j=0;
echo "<a href='forma.php?select&item=$x&object=$y&value=smoll' TARGET='Sets'>$folders[$j]</a>";

?>

<!-- а в этом случае будут просто константы, т.к. это просто фрагмент разметки -->
<a href='forma.php?select&item=$x&object=$y&value=smoll' TARGET='Sets'>$folders[$j]</a>

Ознакомьтесь с этим документом http://phpfaq.ru/na_tanke

спустя 4 минуты [обр] Евгений Седов aka KPbIC(7/176)[досье]
М Перенесено из форума "Прочее"
спустя 20 минут [обр] lassy[досье]
Так я и писал на php, а не на html
спустя 5 минут [обр] Евгений Седов aka KPbIC(7/176)[досье]
М lassy[досье] Тут одно из двух: либо баг в линухе, либо вы не заметили селекта при создании темы, да еще запостили ее два раза (дубликат я удалил).
спустя 6 часов [обр] Jared(3/26)[досье]
lassy[досье], ничего не понял. Чего вы хотите добиться, и что получаете? Приведите код, который работает не так, как вы ожидали.
спустя 15 дней [обр] lassy[досье]

Филлип, я дейтсвительно ничего не понял и танк тут вряд ли поможет.

  1. Что значит "парсятся", если по-простому?
  2. В качестве $x $y у меня не массивы, а строки - патчи к фоткам, короче. Но не 1 или 2, как написано у Вас.

   echo "<a href='forma.php?select&item=$x&object=$y&value=smoll' TARGET='Sets'>$folders[$j]</a>"; - как у Вас написано: здесь парсятся?
Здесь $x='gallery/photo/picnick/, а $y='Заяц в траве.jpg'
Вместо этих значений, которые я хотел бы получить, массив $_GET['item']дает мне просто $x, а $_GET['folder'] просто равен $y.
ЗНАЧЕНИЯ ПЕРЕМЕННЫХ НЕ ПОДСТАВЛЯЮТСЯ В СУПЕРГЛОБАЛЬНЫЙ МАССИВ. Хотя в только что отработавшем (другом скрипте) прекрасно подставлялись.

  1. Чем отличается в Вашем примере последняя строка - Вы хотите сказать, что в чистом HTML значения подставляться и не должны, что это просто элемент разметки? Так ведь я и писал только на пхп. Я так и не понял. Не понял именно ВАС, а не то что написано "на танке". Там написано, что все должно быть хорошо и при каждой ссылке значения строки запроса можно получить из массива $_GET. Так вот видимо, не всегда, с каковым вопросом я и обратился на форум. Спасибо всем за сочувствие, но ясного ответа, кроме "парсятся-не парсятся" я так и не получил и как обойти или изменить ситуацию с получением значений методом GET (не всегда такая морока, но в самый неподхдящий момент)не знаю до сих пор. Типа, когда сработает, считай повезло. ОТВЕТА Я ТАК И НЕ ПОЛУЧИЛ,

СОВЕТ ПО ПЯТОМУ РАЗУ ПЕРЕЧИТАТЬ НА ТАНКЕ НЕЭФФЕКТИВЕН. Если найдутся спецы, которые могут хоть приблизительно прояснить ситуацию, то ТЕМУ Я ПРОШУ ПОКА НЕ ЗАКРЫВАТЬ. Если же таковых нет, то и нет смысла переливать из пустого в порожнее.

спустя 16 часов [обр] Филипп Ткачев(20/112)[досье]
В HTML вам приведен просто текст.
Выложите на pastebin ваш код.
спустя 10 часов [обр] Jared(3/26)[досье]

lassy[досье], какой вопрос, такой ответ. Вы сами хотя бы опишите ситуацию, которую нужно прояснить. Вот это:

Не получается передача на локалхосте методом GET в строке ссылки. В одном скрипте передаются значения переменных, а в другом только их имена.

вообще какая-то, простите, муть.

В чем причина такого поведения метода GET и что нужно сделать, чтобы по клику ссылки передавались значения переменных всегда, как оно и должно быть?

По клику на ссылку может происходить вообще все что угодно. Какие значения переменных? Каких переменных? Почему они должны передаваться всегда? Куда передаваться?

При клике на ссылку http://example.com/?a=1&c=3, в самом простом варианте, происходит запрос на сервер. Вот эта фигня - 'a=1&c=3' - называется query string. Или "параметры запроса". Если сервер заруливает такой запрос на php скрипт, то сам интерпретатор php, перед тем как отдавать управление вашему скрипту, создает из query string суперглобальный массив вида Array('a'=>1,'c'=>3) и обзывает его $_GET. Вам непонятно, почему... э-э... что именно вам непонятно?

Попробуйте почитать что-ли что-нибудь по теме. Научитесь дебажить свой код. Для начала, удостоверьтесь, что клиенту отдается с сервера именно то, что вы пытались отдать - посмотрите "исходной код страницы" в браузере. Поставьте firefox+firebug или chrome или opera+dragonfly и научитесь пользоваться инструментами дебага.

Вот вам примерчик:

<?
// php код
$a = 'a_value';
$b = 'b_value';

// выводим в браузер
echo "<a href='/?a=$a&b=$b'>link</a>";
// получаем <a href='/?a=a_value&b=b_value>link</a>

// выводим иначе
echo '<a href="/?a=$a&b=$b">link</a>';
// получаем <a href="/?a=$a&b=$b">link</a>

// выводим вообще вне php кода
?>
<!-- дада, эту фигню PHP отдаст так как вы написали, без дополнительной обработки - это просто HTML код или text/plain, или или xml/rss или что вы там еще отдаете...  -->
<a href="/?a=$a&b=$b">link</a>
<!-- получаем <a href="/?a=$a&b=$b">link</a> -->
?>

Если вам неясна разница этих трех вариантов вывода, если вам неясно, почему во вторых двух вариантах вывод другой, нежели в первом, то вам стоит для начала осилить книжку по PHP (пять раз перечитать раздел по ключевому слову "интерполяция"). Или, на крайний случай, этикет общения на форумах. А лучше и то и другое.

Если вам единовременно нужно решить задачу, наймите уже программиста.

Powered by POEM™ Engine Copyright © 2002-2005