Intereting Posts

Как установить переменную сеанса при нажатии ссылки <a>

У меня есть следующая проблема … Я хочу установить переменную сеанса при нажатии на обычную ссылку, например:

<a href="home" name="home">home</a> 

Мои исследования, похоже, указывают на то, что PHP не может догнать событие click таким образом, что он установит переменную сеанса.

Я считаю, что это возможно с Ajax, но как? И как будет выглядеть моя ссылка?
Установка переменной сеанса должна выглядеть так:

 $_SESSION['link'] = home; 

Короче говоря: при нажатии на ссылку в HTML должна быть установлена ​​переменная сеанса.
КАК Я собираюсь это сделать?

PS: Я не совсем знаком с Ajax, но я догоню.

EDIT: ссылки будут ссылаться на ту же страницу, также я хочу избежать URL-адресов, таких как «home.php? Link = X».
Если это невозможно сделать иначе, слишком плохо. Но я надеюсь, что есть решение.
Важно: имя ссылки будет значением $_SESSION['link']

Solutions Collecting From Web of "Как установить переменную сеанса при нажатии ссылки <a>"

  session_start(); if(isset($_SESSION['current'])){ $_SESSION['oldlink']=$_SESSION['current']; }else{ $_SESSION['oldlink']='no previous page'; } $_SESSION['current']=$_SERVER['PHP_SELF']; 

Может быть, это то, что вы ищете? Он будет помнить старую ссылку / страницу, с которой вы пришли (на своем веб-сайте).

Поместите эту часть поверх каждой страницы.

Если вы хотите сделать это «refresh proof», вы можете добавить еще одну проверку:

  if(isset($_SESSION['current']) && $_SESSION['current']!=$_SERVER['PHP_SELF']) 

Это сделает страницу не запоминающейся.

UPDATE: почти так же, как @Brandon, хотя … Просто используйте переменную php, я знаю, что это выглядит как риск для безопасности, но когда все сделано правильно, это не так.

  <a href="home.php?a=register">Register Now!</a> 

PHP:

  if(isset($_GET['a']) /*you can validate the link here*/){ $_SESSION['link']=$_GET['a']; } 

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

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

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

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

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

Я попробовал, и он работает. вы можете увидеть exapple здесь 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; } 

В HTML:

 <a href="index.php?link=home" name="home">home</a> 

Затем в PHP:

 if(isset($_GET['link'])){$_SESSION['link'] = $_GET['link'];} 

Ваша ссылка на другую веб-страницу? Если да, возможно, вы могли бы поместить переменную в строку запроса и установить переменную сеанса при загрузке страницы, связанной с ней.

Таким образом, ссылка выглядит так:

 <a href="home.php?variable=value" name="home">home</a> 

И страница homge будет анализировать строку запроса и устанавливать переменную сеанса.