Aligatro
@Aligatro
Turn food and coffee into software...

Как реализовать изменения значения функции при клике на ссылку php?

Добрый день, уважаемые тостеровцы. Давеча столкнулся с проблемой в реализации функции на php или php+js.

Суть такова... Мне необходимо создать функцию, которая меняла бы свое значение (на true или false) при клике по определенной ссылке на сайте. Дабы в дальнейшем создать на основе этого условие типа:
if(my_function()) {echo 'Ты жмякнул на эту ссылку'} else { echo 'Ты не жмякнул на ссылку'}

или
if(my_function(true)) {echo 'Ты жмякнул на эту ссылку'} else { echo 'Ты не жмякнул на ссылку'}


Будет просто шикарно, если это можно сделать на чистом php без примеси js. Например что бы отлавливался адрес страницы: mysite.ru/function.php?linkon=1, после чего страница рефрешится и функция принимает другое значение.

Задача вроде тривиальна и проста, но из-за малого опыта в разработке на php, я не понимаю как передать те самые данные о клике по ссылке. Буду крайне признателен тем, кто сможет показать мне готовый (похожий) пример или скинуть линк на таковой.

Всем откликнувшимся, заранее выражаю огромную благодарность за помощь и уделенное мне время.
  • Вопрос задан
  • 3438 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
На странице
<a href="mysite.ru/?version=mobile">На мобильную версию</a>

В php
<?php
session_start();
if (isset($_REQUEST['version'])) {
        $_SESSION['version'] = $_REQUEST['version'];
// Общий код сайта
if ($_SESSION['version'] == 'mobile') {
    //Код мобильной версии
    echo '<a href="mysite.ru/?version=desktop">На десктопную версию</a>';
} else {
   //Код десктопной версии
    echo '<a href="mysite.ru/?version=mobile">На мобильную версию</a>';
}
?>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Cobalt
@Cobalt
Программист - этим все сказано
Не совсем понял вопроса. Есть разные способы решения:

1. Сделать ссылку просто ссылкой которая будет вести на туже страницу но с параметром ?click=true а в скрипте ты стало быть смотришь передан тебе такой параметр или нет: if($_GET['click']=='true'){

2. Сделать скрытую форму с input type=hidden и по id джаваскриптом пихать туда нужное значение и вызывать сабмит

3. Вызывать через ajax нужный скрипт при клике по ссылке

Это если на вскидку так
Ответ написан
Комментировать
Aligatro
@Aligatro Автор вопроса
Turn food and coffee into software...
То есть если я Вас правильно понял, можно просто создать ссылку вида:
<a href="mysite.ru/?link=true">Кликай</a>
И внутри цикла (использую wordpress) создать условие которое я описал выше
if($_GET['link']=='true'){ echo 'Кто-то кликнул по ссылке'}

Или необходимы дополнительные танцы с бубном?

Что-бы более точно донести мысль, я хочу сделать механику переключения с мобильной версии сайта на десктопную, но без использования зеркала вида m.mysite.ru . При помощи "условия" мне необходимо обрезать некий функционал внутри цикла wordpress, убрать/пережать изображения, отключить некоторые стили и скрипты =)

Спасибо.
Ответ написан
Комментировать
Aligatro
@Aligatro Автор вопроса
Turn food and coffee into software...
Решение участника @Rsa97 помогло (спасибо Вам). Тех, кто возможно забредет сюда из поиска, хочу предупредить, session_start() должен располагаться в хедере страницы (перед доктайпом). Пробелы, отступы, комментарии перед <?php вызовут краш wp. Все файлы сохраняйте в кодировке UTF-8 (без BOM). На странице может существовать только одна сессия. Для параллельных сессий, используйте session_id(). В последнем могу ошибаться )

Вот так выглядит мой рабочий вариант:
<?php session_start(); 
 if (isset($_REQUEST['version'])) {
        $_SESSION['version'] = $_REQUEST['version'];
}
function mobileview($on){
$on=$_SESSION['version'] == 'mobile';
return $on;
}
?>


P.s Поправочка, что бы не мучатся с header и заморачиваться с пробелами, достаточно поместить вышеуказанный код в functions.php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы