Как установить переменную сеанса PHP из гиперссылки? - PullRequest
0 голосов
/ 24 мая 2010

Мой первый удар по этому, так что, пожалуйста, не смейтесь! Я создал переменную сеанса, чтобы пользователи могли переключаться между контентом в Великобритании и США на одном сайте (по умолчанию в Великобритании).

<?php
session_start();
$_SESSION['territory'] = 'UK';
if (isset($_SESSION['territory'])){
    echo 'Session is set to '.$_SESSION['territory'];
}
else{
    echo 'Session not set yet';
}
?>

Пока все хорошо. Теперь мне нужна пара ссылок для установки этой переменной, когда пользователи нажимают на Великобританию или США. Все, что я могу, Google - это устанавливать переменные с помощью форм, и ничего более полезного в настройке с помощью простого старого href. Кто-нибудь может направить меня в правильном направлении? Очень ценится.

Ответы [ 4 ]

4 голосов
/ 24 мая 2010

Вы можете добавить? Lang = UK к URL, тогда переменная $ _GET ['lang'] будет доступна в вашем коде.Например:

switch($_GET['lang']) {
 case 'UK': case 'US':
   $_SESSION['territory'] = $_GET['lang'];
   break;
 default:
   $_SESSION['territory'] = 'UK';
}
1 голос
/ 24 мая 2010

, если вы хотите установить переменную сеанса с помощью щелчка по ссылке.Вам нужно будет использовать ajax. Когда вы нажимаете на ссылку, вы можете вызвать функцию javascript, и эта функция, в свою очередь, может сделать ajax попаданием в файл php, а затем этот файл php может установить переменную сессии.

0 голосов
/ 03 апреля 2012

У меня была та же проблема - я хотел передать параметр на другую страницу, щелкнув гиперссылку и получить значение для перехода на следующую страницу (без использования GET, поскольку параметр хранится в URL).

для тех, кто не понимает, почему вы хотели бы сделать это, ответ таков: вы не хотите, чтобы пользователь видел конфиденциальную информацию, или вы не хотите, чтобы кто-то редактировал GET.

через некоторое время после поиска в Интернете казалось, что невозможно создать нормальную гиперссылку, используя метод POST.

А потом у меня был момент эврика !!!! почему бы просто не использовать CSS, чтобы кнопка отправки выглядела как обычная гиперссылка ??? ... и поместите значение, которое я хочу передать, в скрытое поле.

Я попробовал, и это работает. Вы можете увидеть пример здесь http://paulyouthed.com/test/css-button-that-looks-like-hyperlink.php

основной код формы:

<form enctype="multipart/form-data" action="page-to-pass-to.php" method="post">
                        <input type="hidden" name="post-variable-name" value="value-you-want-pass" />
                        <input type="submit" name="whatever" value="text-to-display" id="hyperlink-style-button"/>
                </form>

Базовая CSS:

    #hyperlink-style-button{
      background:none;
      border:0;
      color:#666;
      text-decoration:underline;
    }

    #hyperlink-style-button:hover{
      background:none;
      border:0;
      color:#666;
      text-decoration:none;
      cursor:pointer;
      cursor:hand;
    }
#hide{visibility:hidden;width:0px;}
0 голосов
/ 24 мая 2010

Во-первых, вы можете сделать это только с помощью cookie (сеанс не требуется).

При этом просто создайте несколько ссылок на URI, скажем: /set_territory.php?cc=UK и пр.

set_territory.php может затем установить территорию с помощью $_GET['cc'] и перенаправить пользователя на соответствующий контент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...