Мне нужен скрипт, который создает QR-код с использованием пользовательских данных, хранящихся в базе данных MySQL. Он должен быть загружен каждый раз, когда пользователь обращается к своим данным. Я провел некоторые исследования и нашел библиотеку, которая может удовлетворить мои потребности: http://phpqrcode.sourceforge.net/. Я взял пример, чтобы проверить его на моем сайте (http://phpqrcode.sourceforge.net/examples/index.php?example=025) и адаптировал код:
<?php
include('../libraries/phpqrcode/qrlib.php');
include('configuration.php');
// how to build raw content - QRCode with simple Business Card (VCard)
$tempDir = EXAMPLE_TMP_SERVERPATH;
// here our data
$name = 'John Doe';
$phone = '(049)012-345-678';
// we building raw data
$codeContents = 'BEGIN:VCARD'."\n";
$codeContents .= 'FN:'.$name."\n";
$codeContents .= 'TEL;WORK;VOICE:'.$phone."\n";
$codeContents .= 'END:VCARD';
// generating
QRcode::png($codeContents, $tempDir.'025.png', QR_ECLEVEL_L, 3);
// displaying
echo '<img src="'.EXAMPLE_TMP_URLRELPATH.'025.png" />';
?>
Тем не менее, это дает мне эту ошибку:
Предупреждение: include (../ library / phpqrcode / qrlib.php): не удалось открыть
поток: нет такого файла или каталога в
/home/u909072349/public_html/plugins/system/sourcerer/helper.php(632)
: созданная во время выполнения функция в строке 7 Предупреждение:
include (../ library / phpqrcode / qrlib.php): не удалось открыть поток: нет
такой файл или каталог в
/home/u909072349/public_html/plugins/system/sourcerer/helper.php(632)
: созданная во время выполнения функция в строке 7 Предупреждение: include (): ошибка
открытие «../libraries/phpqrcode/qrlib.php» для включения
(include_path = ‘.: / usr / lib / php’) в
/home/u909072349/public_html/plugins/system/sourcerer/helper.php(632)
: созданная во время выполнения функция в строке 7 Неустранимая ошибка: невозможно переопределить
Класс JConfig в /home/u909072349/public_html/configuration.php на
строка 2
Я проверил файл qrlib.php, и это содержание:
<?php
/*
* PHP QR Code encoder
*
* Root library file, prepares environment and includes dependencies
*
* Based on libqrencode C library distributed under LGPL 2.1
* Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi <[email protected]>
*
* PHP QR Code is distributed under LGPL 3
* Copyright (C) 2010 Dominik Dzienia <deltalab at poczta dot fm>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
$QR_BASEDIR = dirname(__FILE__).DIRECTORY_SEPARATOR;
// Required libs
include $QR_BASEDIR."qrconst.php";
include $QR_BASEDIR."qrconfig.php";
include $QR_BASEDIR."qrtools.php";
include $QR_BASEDIR."qrspec.php";
include $QR_BASEDIR."qrimage.php";
include $QR_BASEDIR."qrinput.php";
include $QR_BASEDIR."qrbitstream.php";
include $QR_BASEDIR."qrsplit.php";
include $QR_BASEDIR."qrrscode.php";
include $QR_BASEDIR."qrmask.php";
include $QR_BASEDIR."qrencode.php";
Я проверил библиотеки, и все они находятся в одной папке / public_html / library / phpqrcode. Кроме того, файл configuration.php находится в / public_html /. Итак, кто-нибудь может указать мне на проблему? Как только решу, я пойду вперед.
Спасибо!
Дани
Вы не определили базовый путь при включении ваших файлов.
Попробуйте использовать следующее:
include(JPATH_LIBRARIES . '/phpqrcode/qrlib.php');
include('configuration.php');
Я не уверен, почему вам нужно включить файл configuration.php, однако это не очень хорошая идея. Если вам нужно получить какие-либо значения из этого файла, Joomla имеет собственный API для этого.
Вы не определили свои пути правильно. Используйте следующее:
<?php
include(JPATH_LIBRARIES . '/phpqrcode/qrlib.php');
$tempDir = JPATH_SITE . '/images/';
$codeContents = 'This Goes From File';
$fileName = 'qr_'.md5($codeContents).'.png';
$pngAbsoluteFilePath = $tempDir.$fileName;
$urlRelativeFilePath = JUri::root() .'images/' . $fileName;
if (!file_exists($pngAbsoluteFilePath)) {
QRcode::png($codeContents, $pngAbsoluteFilePath);
}
else {
echo "Not working!";
}
echo '<img src="'.$urlRelativeFilePath.'" />';
?>
Надеюсь это поможет
Других решений пока нет …