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

  • Автор темы Elsed
  • Обновлено
  • 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())

Elsed


Рег
27 Dec, 2006

Тем
76

Постов
234

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

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

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

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

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

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

Akimovden


Рег
18 Mar, 2014

Тем
66

Постов
177

Баллов
567
  • 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

Тем
65

Постов
197

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

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

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

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

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

Wini1


Рег
13 Sep, 2010

Тем
66

Постов
205

Баллов
595
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно