1. Мы продолжаем публиковать интересные статьи на тему SocialEngine 4. Одна из статей посвящена правильному выбору сервера для вашей социальной сети, а другая содержит советы по увеличению производительности платформы. Также мы добавили большую статью о пользовательских уровнях. Ознакомиться со статьями вы можете в разделе Вопросы и Ответы SocialEngine 4.
  2. Вам кажется, что ваша версия SocialEngine 4, работает медленно?

    Голосуйте. Пишите свою версию системы, железо на чем работает и количество пользователей. Будем увеличивать производительность :-) Подробнее

  3. В связи с участившимися случаями попыток продажи пользователями форума различных "сборок" коммерческих социальных платформ, обычно основанных на SocialEngine 3, вводится новое правило для форума. Запрещается создание тем или размещение в уже созданных предложений о продаже или размещение ссылок на сайты, где происходит продажа "сборок". Пользователи, которые продолжат свою коммерческую деятельность в данном направлении, будут заблокированы. Подробнее.

AJAX call to store string on database

Discussion in 'Прочая Поддержка - Help Requests' started by Gooos, Jan 12, 2011.

Thread Status:
Not open for further replies.
  1. Gooos Thread starter абырвалГ


    Offline
    • Admin
    Message Count:
    2,435
    Likes Received:
    645
    My version of SE:
    3.20
    Как правильно запросить переменную $user_id при входе юзера на сайт (далее она запишется в таблицу БД)
    Вариан, предложенный Spartakus(ом)не катит $user_id=$_GET['user_id'];
    PHP:
    <?php

    header
    ("Cache-Control: no-cache");
    header("Pragma: nocache");


    // User_id -> Should come from a session variable
    $user_id=$_GET['user_id']; // этот вариант не работает


    // DB connect parameters
    $server="localhost";
    $user=" ";
    $password=" ";
    $database=" ";
    $table=" ";
    $field="config";

    // DB connect
    mysql_connect($server,$user,$password);
    @
    mysql_select_db($database);


    if (isset(
    $_REQUEST["value"])) {
      
    // SET value

      
    $value=$_REQUEST["value"];

      
    $rs=mysql_query("SELECT * FROM $table WHERE user_id='$user_id'");
      if (
    mysql_numrows($rs)==0)
        
    mysql_query("INSERT INTO $table($field,user_id) VALUES('$value','$user_id')");
      else
        
    mysql_query("UPDATE $table SET $field='$value' WHERE user_id='$user_id'");
      echo 
    "OK";

    } else {
      
    // GET value

      
    $rs=mysql_query("SELECT $field FROM $table WHERE user_id='$user_id'");
      if (
    $row=mysql_fetch_row($rs))
        echo 
    $row[0];
      else
        echo 
    "";
    }

    mysql_close();

    ?>
  2. Red Rabbit Tough member


    Offline
    Message Count:
    898
    Likes Received:
    193
    В каком месте находится это получение данных? Каким образом оно должно получать данные? Это отдельный скрипт?
  3. Gooos Thread starter абырвалГ


    Offline
    • Admin
    Message Count:
    2,435
    Likes Received:
    645
    My version of SE:
    3.20
    Яваскрипт в своей работе оперирует данными из БД из своей таблицы, запись, выборка и сортировка данных идет по полю user_id, котрое заполняется и выбирается путём подключаемого отдельного пхп файла (не полный листинг выше). Этот файл не от SE, и ясное дело не понимает откуда ему взять $user_id=... Вот и проблемка в том, как ему дать понять где и как получить эту переменную $user_id.
    После загрузки home.php в браузер и аутентификации юзера, подключается яваскриптом этот пхп файл, вот тут и надо ему получить данные для этой переменной - $user_id .
  4. Red Rabbit Tough member


    Offline
    Message Count:
    898
    Likes Received:
    193
    В таком случае здесь способ с $_GET совсем не прокатит, поскольку этому скрипту ничего не передается, а значит и получать ему нечего.
    Думаю, решить можно вот таким несколько сложным путем.
    - Создаем в скрипте SE функцию, единственная задача которой - вывод ID текущего пользователя (о, да - привет API).
    -- В стороннем скрипте используем либо функцию Request из стандартного фреймворка. Варварство, конечно, но как вариант.

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

    ____upd
    Вот ещё - можно вообще таким образом.
    При вызове скрипта делать так - "script.php?id=1", а в самом скрипте просто получать эту переменную.
  5. Gooos Thread starter абырвалГ


    Offline
    • Admin
    Message Count:
    2,435
    Likes Received:
    645
    My version of SE:
    3.20
    Мне бы поконкретнее, на примере, а то я в пхп нуб.

    Все файлы пхп в SE в самом начале инклюдят include "header.php";, может скопировать необходимый код для получения $user_id из header.php, если так вообще можно.

    Яваскрипт обращается к файлу вот так:
    PHP:
    /* AJAX call to store string on database */
            
    $.post("file.php","value="+cookieString);
    Значит надо прописать так?
    PHP:
    /* AJAX call to store string on database */
            
    $.post("file.php?id=1","value="+cookieString);
    и чего дальше про получение нужной переменной, я не догоню.
  6. Red Rabbit Tough member


    Offline
    Message Count:
    898
    Likes Received:
    193
    Общий вопрос - общий ответ. Для уменьшения бесполезных действий думаю всё-же будет лучше выложить часть кода. А именно - сам php файл, и js которым он вызывается. А я на досуге (сейчас времени совсем нет) всё-таки поставлю se, и напишу более конкретно.
  7. Gooos Thread starter абырвалГ


    Offline
    • Admin
    Message Count:
    2,435
    Likes Received:
    645
    My version of SE:
    3.20
    Код скрипта чуть выше, это то что вызывает пхп.
    Код пхп тоже выше, первый пост.
  8. SpartakuS User


    Offline
    • Знаменитый
    Message Count:
    797
    Likes Received:
    82
    $_SESSION['__default']['user_id'] :)
Thread Status:
Not open for further replies.

Share This Page

All rights reserved SocEngine.ru ©