За последние 24 часа нас посетили 53732 программиста и 1646 роботов. Сейчас ищут 1129 программистов ...

Помогите с переменными сесии

Тема в разделе "PHP для новичков", создана пользователем BlackAngel, 13 апр 2008.

  1. BlackAngel

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

    С нами с:
    19 мар 2007
    Сообщения:
    32
    Симпатии:
    0
    Ситуация следущая:

    Предположим мы открываем сессию и у нас есть два скрипта 1.php и 2.php. В скрипте 1 есть переменая $a и две самые обыкновенные ссылки , как сделать так чтоб при нажатии на одну ссылку он переходил на скрипт 2 и приравнивал при этом $a единице, а при нажатии на вторую ссылку переходил на всё тот же скрипт 2 приравнивая ту же переменную $a двум.

    Использовать кнопку формы не вариант.
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    А GET не годиться?
     
  3. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    //В начале каждого скрипта:
    session_start()

    // 1.php
    $_SESSION['a'] = 1;

    // 2.php
    $_SESSION['a'] = 2;


    Мой шаман подсказывает, что Вам просто необходимо прочитать материал для начинающих. Ищите "na_tanke"
     
  4. BlackAngel

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

    С нами с:
    19 мар 2007
    Сообщения:
    32
    Симпатии:
    0
    topas, вы не так поняли точнее невнимательно прочитали. Мне необходимо чтоб переменная обретала то или иноя значение только при нажатии на ссылку, причём обе ссылки находяться в скрипте 1 и обе переходят на скрипт 2.
     
  5. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    BlackAngel
    Смею поправить: это Вы не так поняли, а точнее невнимательно прочитали. Бегом читать "На танке".

    PS> В этой теме, м-р Kreker уже дал Вам ответ
     
  6. BlackAngel

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

    С нами с:
    19 мар 2007
    Сообщения:
    32
    Симпатии:
    0
    topas благодарю вас за данную статью и личное сообщение, хочу так же извениться если был слишком резок в предыдущем посте.

    Постараюсь развееять ваши сомнения. На самом деле истинная ситуация такова:
    Я не являюсь специалистом по вебразработке и программированию, более того не претендовал на это, не претендую и не собираюсь этого делать в дальнейщем. Однако из предложенной статьи я непочерпнул ничего нового и увы тем более полезного. Общие принципы веб вёрстки и программирования мне известны, этим я занимаюсь на любительской основе, в результате чего сложилось так что я создал несколько сайтов для друзей и знакомых... ну и как следствие их поддерживаю.

    Что касаеться моего изначального вопроса то дело в следующем: есть небольшой сайт (интернет магазина автозапчастей) где фактически всегда загружаеться одна и та же страница (скрипт) - index.php, в которой по средством логических функций и оператора инклуде комплектуется из раздробленных на необходимые логические фрагменты страница. Эти логические фрагменты делятся на два типа: оформления страницы и контент страницы, причём нетрудно догадаться, что контент меняеться при нажатье на любую ссылку. Информация о выборе файла содержащего необходимый контент передаёться в переменной в виде некого идентификатора. В данный момент это происходит предложенным Kreker'ом методом GET. На сайте используеться сессия, и в силу определённых технических тонкостей, а так же что бы идентификаторы страниц не светились в адресной строке я хочу просто передовать их по средством переменных сесии. Вот тут то у меня и возникла проблемма - как переменной идентификатора присваивать значение идентифиатора будущей страницы контента только при нажатии сылку и значение напрямую зависящее от конкретной ссылки.
     
  7. Johnatan

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

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Насколько я понимаю, это можно сделать через аякс, но лучше так не делать.
    Да и вообще, в чём проблема передать GET'ом переменную?
    Например передал переменную index.php?a=1
    А в скрипте смотришь:
    PHP:
    1. switch ($_GET['a']) {
    2. case '1': include('file1.php'); break;
    3. case '2': include('file2.php'); break;
    4. default: include('file.php');
    5. }
    Какой смысл скрывать еденичку?
     
  8. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Вот это и есть то, за что я зацепился.

    Благодарю за исчерпывающий вопрос, теперь он понятен.

    Смею огорчить Вас: после того как скрипт отработал и apache отдал клиенту html мы не можем ничего записать в сессию.
    Но не отчаивайтесь! Есть возможность записать на стороне клиента свои куки. Т.е. если по простому, при клике на ссылку мы запускаем JavaScript, который выставляет нужные нам куки и только после этого отправляет нас на указанную страничку. Эврика! В адресной строке ничего кроме index.php нет!

    Не торопитесь идти по этому пути. Он не так хорош как может показаться на первый взгляд. Если посмотреть глубже, то мы сразу найдем в нем недостатки:
    1. Пользователь не сможет поделиться ссылкой с другом
    2. Поисковые роботы не смогут индексировать Ваши страницы

    Это основные минусы данного подхода. Уверен, что подключив фантазию можно найти еще больше, но поверьте, описанного выше уже достаточно чтобы отказаться от этой идеи.

    Как же поступить? Я посоветую уже ставшее стандартным решение! Например, у нас есть страница с книгами и страница с статьями. Раньше мы делали как?
    Предлагаю с помощью магического файла .htaccess исправить это дело:
    Это называется ЧПУ, и поверьте, это действительно удобно с любой стороны.

    Выбор за Вами!
     
  9. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    BlackAngel
    За пару часов сна мне приснился еще один тупой способ:
    Пользователи переходят по ссылкам ввида: index.php?page=books
    PHP:
    1. <?php
    2. //в index.php:
    3. if (isset($_GET['page']))
    4. {
    5.     $_SESSION['page'] = $_GET['page'];
    6.     header('Location: ' . $_SESSION['page'])
    7. }
    8. ?>
     
  10. Anonymous

    Anonymous Guest

    Все ваши эпические рассуждения разбиваются о простой вопрос: «Зачем?»
     
  11. topas

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

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Горбунов Олег
    Я, в свое время, занимался подобной х... подобными вещами: у меня каждый тэг <a href> "превращался" в "магический". При наведении мыши на <a>, я заполнял форму. При клике по <a> - я отправлял форму. Осознание того что это глупость пришло значительно позже :)
     
  12. BlackAngel

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

    С нами с:
    19 мар 2007
    Сообщения:
    32
    Симпатии:
    0
    Да... пожалуй вы все правы, наверное я зря замарочился. Меня несколько раздражал идентификатор в командной строке (сугубо эстетический аспект) да тут же на форуме подлили масло в огонь мол выдет 6 версия пхп и поддержку передачи переменных в в адресной строке прикроют (может я что то не так понял)... ну и потянуло изобретать велосипед...
    В любом случае всем спасибо, особенно topas'у.