Подключение к Друпал 7

  • Автор темы qweqwe3
  • 48
  • Обновлено
  • 17, May 2024
  • #1
Всем привет Я пытаюсь подключить стороннее приложение к своей базе данных Drupal 7 с помощью этого кода:
 

// Create connection

$conn = new mysqli($servername, $username, $password);

if (@$_GET["sessionid"])

$_SESSION["sessionid"] = @$_GET["sessionid"];

if (@$_SESSION["sessionid"])

{

//Get the get username/role from the database

$sql="select u.*,s.*,ur.rid, r.name as rolename

from sessions s

inner join users u on s.uid=u.uid

left outer join users_roles ur on u.uid=ur.uid

LEFT OUTER JOIN role r ON r.rid = ur.rid

where u.status=1 and u.uid>0 and s.sid='" . $_SESSION["sessionid"]. "'";

$rs=db_query($sql,$conn);

$data=db_fetch_array($rs);

if($data)

{

$_SESSION["UserID"] = $data["name"];

if (!is_null($data["rolename"]))

{

$_SESSION["GroupID"] = $data["rolename"];

if ($data["rolename"]=='administrator')

$_SESSION["AccessLevel"] = ACCESS_LEVEL_ADMINGROUP;

else

$_SESSION["AccessLevel"] = ACCESS_LEVEL_USER;

}

else

$_SESSION["AccessLevel"] = ACCESS_LEVEL_USER;

}

else

// log out

{

session_unset();}

}

Код (разметка): Но я получаю следующую ошибку: Есть идеи? Строка 475 настроек приложения: $rs=db_query($sql,$conn); из приведенного выше кода. Строка 2311 файла data.inc — это функция db_query($query, array $args = array(), array $options = array())

qweqwe3


Рег
08 Apr, 2013

Тем
1

Постов
2

Баллов
12
  • 18, May 2024
  • #2
Да, подавление ошибок и слепое внесение информации $_GET в строку запроса.

Выбросьте ВЕСЬ этот беспорядок в мусор и начните все сначала.

Это называется подготовка/выполнение, ИСПОЛЬЗУЙТЕ ЭТО! ... и не уверен, зачем кому-то вручную подключаться к новому объекту mysqli, а затем пытаться использовать глупые функции db_ Drupals.

но это лишь часть того, почему Drupal заставляет меня задаваться вопросом, что, черт возьми, в их классная помощь - как и все остальные тупые невежественные «фреймворки».

Вы только что установили отличное соединение с mysqli, ИСПОЛЬЗУЙТЕ ЕГО!!!

Тем более, почему, черт возьми, вы возитесь с идентификатором сеанса, тем более, выкидывая его как getDATA?
 

akimovden


Рег
18 Mar, 2014

Тем
0

Постов
3

Баллов
3
  • 21, May 2024
  • #3
это выглядит очень странно, так как похоже, что вы пытаетесь запустить php-код Drupal из стандартного php-файла. Если вы пытаетесь вызвать функции Drupal, такие как db_query, вам нужно сначала загрузиться в Drupal. Возможно, вам лучше использовать mysql_db_query
http://php.net/manual/en/function.mysql-db-query.php

Кроме того, пытались ли вы выполнить запрос MySQL в phpmyadmin с известными данными и получили положительный результат?

Кроме того, вы не используете какие-либо циклы while или foreach для своих результатов, и не существует ограничения 0,1, чтобы гарантировать, что вы получите только 1 результат, но я думаю, вас должно устроить проверка по SessionID, который должен быть уникальным.
 

tedo92


Рег
01 Jan, 2011

Тем
0

Постов
2

Баллов
2
  • 11, Jun 2024
  • #4
Ну, проблема в том, что ОП использовал команды php из Drupal, когда Drupal не был загружен.

Так что это большая часть проблемы.

Похоже, он был знаком с тем, как выполнить запрос в Drupal, но затем попытался настроить стороннее приложение, но все равно использовал те же команды.

Ничего страшного, но было бы интересно услышать, сможет ли он решить эту проблему с помощью предоставленной информации.

Но да, вся причина, по которой Drupal использует свои собственные функции, заключается в том, чтобы позволить командам подключаться к остальной части Drupal и заранее очищать данные.
 

wini1


Рег
13 Sep, 2010

Тем
0

Постов
3

Баллов
3
Тем
49554
Комментарии
57426
Опыт
552966

Интересно