Antworten auf deine Fragen:
Neues Thema erstellen

PHP-Schnittstelle

Crackp0t

Aktives Mitglied

Ich arbeite zur Zeit an meiner ersten PHP-Homepage und stehe nun vor folgendem Problem:
Ich binde meine Inhalte mit dem Include() Befehl ein, will jetzt aber eine externe PHP Applikation einbinden die relativ komplex ist. Mir wurde gesagt, dass ich dafür eine Schnittstelle schaffen muss, habe jedoch keine Ahnung wie ich das angehen muss. Kann mir jemand auf die sprünge helfen?

Oder aber, gäbe es auch eine Alternative, außer Frames?
 

Crackp0t

Aktives Mitglied

AW: PHP-Schnittstelle

Es geht um eine, komplett in PHP geschriebene, Aplikation die als Controlpannel für eine SQL-Datenbank dient.
 

r3nt5ch3r

~ Allround pG ~

AW: PHP-Schnittstelle

Puh, ich kenn mich damit zwar nicht aus, aber so wie ich das jetzt gelesen hab (HIER) kannst du dafür einfach ein include() verwenden.

If the target server interprets the target file as PHP code, variables may be passed to the included file using a URL request string as used with HTTP GET. This is not strictly speaking the same thing as including the file and having it inherit the parent file's variable scope; the script is actually being run on the remote server and the result is then being included into the local script.
 

EnricoS

Nicht mehr ganz neu hier

AW: PHP-Schnittstelle

Datei vorhanden? Genügenden Berechtigungen? Wo läuft der Spaß (lokal, extern, Windows, Linux, Apache, ...) ?

Gruß
Enrico
 

Crackp0t

Aktives Mitglied

AW: PHP-Schnittstelle

Ich teste die Homepage auf meinem Homeserver, Windows XP mit Apache.
Berechtigungen habe ich uneingeschränkt, da der Webserver von außen nicht zugänglich ist.
Wenn ich das Controlpannel normal aufrufe, ohne es einzubinden, funktioniert es komplett und einwandfrei.
 

Rakete

Nicht mehr ganz neu hier

AW: PHP-Schnittstelle

Code:
Warning: require_once(cp.php) [function.require-once]: failed to open stream

Seit wann gibt denn ein gescheitertes include() eine Fehlermeldung zurück, die sich auf require_once() bezieht???

Kannst du mal den Teil deines Code zeigen, der die Fehlermeldung auslöst?


Wo liegt das Controlpanel? Bei PHP für Windows Versionen < 4.3.0 kann man keine entfernten Dateien includen.
 
Zuletzt bearbeitet:

Crackp0t

Aktives Mitglied

AW: PHP-Schnittstelle

Also hier mal ein paar mehr Details:

Dies ist ein Ausschnitt aus meiner index.php

Code:
<div id="toolbar">
<center>
        	<a href="index.php?page=main" class="navigation">News</a>
        	<a href="index.php?page=Forum" class="navigation">Forum</a>
        	<a href="index.php?page=download" class="navigation">Downloads</a>
        	<a href="index.php?page=cp" class="navigation">Controlpannel</a>
        	<a href="index.php?page=kontakt" class="navigation">Kontakt</a>
</center>
</div>
        <div id="content">
        <?
			switch ($_GET['page']) {
				case "main": include 'news.php'; break;
				case "forum": include 'forum.php'; break;
				case "download": include 'down.php'; break;
				case "cp": include 'flux/index.php'; break;
				case "kontakt": include 'kontakt.php'; break;


				default: include 'news.php'; break;
			}
		?>
        </div>

Bei dem Controlpannel handelt es sich um das Flux Controlpannel, welches als Interface für die Datenbank des Ragnarok Online Serveremulators eAthena geschrieben wurde. Den kompletten Src findet man hier:

Der Ausschnitt der Datei welcher den Fehler verursacht:

Code:
// Some necessary Flux core libraries.
require_once 'Flux.php';
 

EnricoS

Nicht mehr ganz neu hier

AW: PHP-Schnittstelle

Ich teste die Homepage auf meinem Homeserver, Windows XP mit Apache.
Berechtigungen habe ich uneingeschränkt, da der Webserver von außen nicht zugänglich ist.
Wenn ich das Controlpannel normal aufrufe, ohne es einzubinden, funktioniert es komplett und einwandfrei.

Heißt wenn du die Seite direkt aufrufst localhost/flux/index.php geht es aber über dein include nicht?
 

Rakete

Nicht mehr ganz neu hier

AW: PHP-Schnittstelle

Kann ich mir kaum vorstellen.

Jedenfalls scheint bei dir lokal (oder per include oder wie auch immer) etwas beim setzen des Include Pfades schief zu gehen (Zeile 40, index.php) oder es ist einfach ein Programmfehler.

Jedenfalls wird die Flux.php nicht gefunden. Sie befindet sich im Ordner Flux und nicht auf der selben Ebene wie die index.php und nicht im voreingestellten include Ordner.

Du kannst ja mal ausprobieren was passiert, wenn du Zeile 47 in der index.php von Flux änderst in:

require_once 'Flux/Flux.php';

Das ist nicht sehr elegant und ich garantiere nicht, dass es danach funktioniert, aber so sollte zumindest die Datei Flux.php gefunden werden.
 

Crackp0t

Aktives Mitglied

AW: PHP-Schnittstelle

Heißt wenn du die Seite direkt aufrufst localhost/flux/index.php geht es aber über dein include nicht?

Exakt.

Der Vorschlag von Rakete funktioniert nicht.

Aber ihr scheint was überlesen zu haben:
Mir wurde gesagt, dass ich dafür eine Schnittstelle schaffen muss, soweit ich das verstanden hab also ein Script welches dafür sorgt, dass die Daten richtig übertragen und gehandhabt werden. Jedoch habe ich keine Vorstellung davon, wie dies funktionieren soll.

Mein 2. Anliegen war, ob es nicht noch eine andere Möglichkeit ausser iframes gibt das Controlpannel in den Content-Div einzubinden.
 

r3nt5ch3r

~ Allround pG ~

AW: PHP-Schnittstelle

Mir wurde gesagt, dass ich dafür eine Schnittstelle schaffen muss, soweit ich das verstanden hab also ein Script welches dafür sorgt, dass die Daten richtig übertragen und gehandhabt werden. Jedoch habe ich keine Vorstellung davon, wie dies funktionieren soll.

Mein 2. Anliegen war, ob es nicht noch eine andere Möglichkeit ausser iframes gibt das Controlpannel in den Content-Div einzubinden.

Ich vermute es liegt an falschen relativen Pfadangaben. Wenn du den betroffenen Code postest kann ich dir bestimmt weiter helfen...
 

Crackp0t

Aktives Mitglied

AW: PHP-Schnittstelle

Code:
<?php
if (version_compare(PHP_VERSION, '5.2.1', '<')) {
	echo '<h2>Error</h2>';
	echo '<p>PHP 5.2.1 or higher is required to use Flux Control Panel.</p>';
	echo '<p>You are running '.PHP_VERSION.'</p>';
	exit;
}

// Disable Zend Engine 1 compatibility mode.
// See: http://www.php.net/manual/en/ini.core.php#ini.zend.ze1-compatibility-mode
ini_set('zend.ze1_compatibility_mode', 0);

// Time started.
define('__START__', microtime(true));

error_reporting(E_ALL);
ini_set('display_errors', 1);

define('FLUX_ROOT',       str_replace('\\', '/', dirname(__FILE__)));
define('FLUX_DATA_DIR',   'data');
define('FLUX_CONFIG_DIR', 'config');
define('FLUX_LIB_DIR',    'lib');
define('FLUX_MODULE_DIR', 'modules');
define('FLUX_THEME_DIR',  'themes');
define('FLUX_ADDON_DIR',  'addons');
define('FLUX_LANG_DIR',   'lang');

// Clean GPC arrays in the event magic_quotes_gpc is enabled.
if (ini_get('magic_quotes_gpc')) {
	$gpc = array(&$_GET, &$_POST, &$_REQUEST, &$_COOKIE);
	foreach ($gpc as &$arr) {
		foreach ($arr as $key => $value) {
			if (is_string($value)) {
				$arr[$key] = stripslashes($value);
			}
		}
	}
}

set_include_path(FLUX_LIB_DIR.PATH_SEPARATOR.get_include_path());
//ini_set('session.save_path', 'data/sessions');

// Default account levels.
require_once FLUX_CONFIG_DIR.'/levels.php';

// Some necessary Flux core libraries.
require_once 'Flux.php';
require_once 'Flux/Dispatcher.php';
require_once 'Flux/SessionData.php';
require_once 'Flux/DataObject.php';
require_once 'Flux/Authorization.php';
require_once 'Flux/Installer.php';
require_once 'Flux/PermissionError.php';

// Vendor libraries.
require_once 'markdown/markdown.php';

try {
	if (!extension_loaded('pdo')) {
		throw new Flux_Error('The PDO extension is required to use Flux, please make sure it is installed along with the PDO_MYSQL driver.');
	}
	elseif (!extension_loaded('pdo_mysql')) {
		throw new Flux_Error('The PDO_MYSQL driver for the PDO extension must be installed to use Flux.  Please consult the PHP manual for installation instructions.');
	}
	
	// Initialize Flux.
	Flux::initialize(array(
		'appConfigFile'      => FLUX_CONFIG_DIR.'/application.php',
		'serversConfigFile'  => FLUX_CONFIG_DIR.'/servers.php',
		//'messagesConfigFile' => FLUX_CONFIG_DIR.'/messages.php' // No longer needed (Deprecated)
	));
	
	// Set time limit.
	set_time_limit((int)Flux::config('ScriptTimeLimit'));
	
	// Set default timezone for entire app.
	$timezone = Flux::config('DateDefaultTimezone');
	if ($timezone && !@date_default_timezone_set($timezone)) {
		throw new Flux_Error("'$timezone' is not a valid timezone.  Consult http://php.net/timezones for a list of valid timezones.");
	}
	
	// Create some basic directories.
	$directories = array(
		FLUX_DATA_DIR.'/logs/schemas',
		FLUX_DATA_DIR.'/logs/schemas/logindb',
		FLUX_DATA_DIR.'/logs/schemas/charmapdb',
		FLUX_DATA_DIR.'/logs/transactions',
		FLUX_DATA_DIR.'/logs/mail',
		FLUX_DATA_DIR.'/logs/mysql',
		FLUX_DATA_DIR.'/logs/mysql/errors',
		FLUX_DATA_DIR.'/logs/errors',
		FLUX_DATA_DIR.'/logs/errors/exceptions',
		FLUX_DATA_DIR.'/logs/errors/mail',
	);

	// Schema log directories.
	foreach (Flux::$loginAthenaGroupRegistry as $serverName => $loginAthenaGroup) {
		$directories[] = FLUX_DATA_DIR."/logs/schemas/logindb/$serverName";
		$directories[] = FLUX_DATA_DIR."/logs/schemas/charmapdb/$serverName";
	
		foreach ($loginAthenaGroup->athenaServers as $athenaServer) {
			$directories[] = FLUX_DATA_DIR."/logs/schemas/charmapdb/$serverName/{$athenaServer->serverName}";
		}
	}

	foreach ($directories as $directory) {
		if (is_writable(dirname($directory)) && !is_dir($directory)) {
			mkdir($directory, 0777);
		}
	}
	
	// Installer library.
	$installer = Flux_Installer::getInstance();
	if ($hasUpdates=$installer->updateNeeded()) {
		Flux::config('ThemeName', 'installer');
	}
	
	$sessionKey = Flux::config('SessionKey');
	session_save_path($dir=realpath(FLUX_DATA_DIR.'/sessions'));
	if (!is_writable($dir)) {
		throw new Flux_PermissionError("The session storage directory '$dir' is not writable.  Remedy with `chmod 0707 $dir`");
	}
	elseif (!is_writable($dir=realpath(FLUX_DATA_DIR.'/logs'))) {
		throw new Flux_PermissionError("The log storage directory '$dir' is not writable.  Remedy with `chmod 0707 $dir`");
	}
	elseif (!is_writable($dir=realpath(FLUX_DATA_DIR.'/itemshop'))) {
		throw new Flux_PermissionError("The item shop image directory '$dir' is not writable.  Remedy with `chmod 0707 $dir`");
	}
	elseif (!is_writable($dir=realpath(FLUX_DATA_DIR.'/tmp'))) {
		throw new Flux_PermissionError("The temporary directory '$dir' is not writable.  Remedy with `chmod 0707 $dir`");
	}
	elseif (ini_get('session.use_trans_sid')) {
		throw new Flux_Error("The 'session.use_trans_sid' php.ini configuration must be turned off for Flux to work.");
	}
	else {
		$sessionExpireDuration = Flux::config('SessionCookieExpire') * 60 * 60;
		session_set_cookie_params($sessionExpireDuration, Flux::config('BaseURI'));
		ini_set('session.name', $sessionKey);
		session_start();
	}
	
	if (empty($_SESSION[$sessionKey]) || !is_array($_SESSION[$sessionKey])) {
		$_SESSION[$sessionKey] = array();
	}
	
	// Initialize session data.
	Flux::$sessionData = new Flux_SessionData($_SESSION[$sessionKey], $hasUpdates);
	
	// Initialize authorization component.
	$accessConfig = Flux::parseConfigFile(FLUX_CONFIG_DIR.'/access.php');
		
	// Merge with add-on configs.
	foreach (Flux::$addons as $addon) {
		$accessConfig->merge($addon->accessConfig);
	}
	
	$accessConfig->set('unauthorized.index', AccountLevel::ANYONE);
	$authComponent = Flux_Authorization::getInstance($accessConfig, Flux::$sessionData);
	
	if (!Flux::config('DebugMode')) {
		ini_set('display_errors', 0);
	}

	// Dispatch requests->modules->actions->views.
	$dispatcher = Flux_Dispatcher::getInstance();
	$dispatcher->setDefaultModule(Flux::config('DefaultModule'));
	$dispatcher->dispatch(array(
		'basePath'                  => Flux::config('BaseURI'),
		'useCleanUrls'              => Flux::config('UseCleanUrls'),
		'modulePath'                => FLUX_MODULE_DIR,
		'themePath'                 => FLUX_THEME_DIR.'/'.Flux::config('ThemeName'),
		'missingActionModuleAction' => Flux::config('DebugMode') ? array('errors', 'missing_action') : array('main', 'page_not_found'),
		'missingViewModuleAction'   => Flux::config('DebugMode') ? array('errors', 'missing_view')   : array('main', 'page_not_found')
	));
}
catch (Exception $e) {
	$exceptionDir = FLUX_DATA_DIR.'/logs/errors/exceptions';
	if (is_writable($exceptionDir)) {
		require_once 'Flux/LogFile.php';
		$today = date('Ymd');
		$eLog  = new Flux_LogFile("$exceptionDir/$today.log");
		
		// Log exception.
		$eLog->puts('(%s) Exception %s: %s', get_class($e), get_class($e), $e->getMessage());
		foreach (explode("\n", $e->getTraceAsString()) as $traceLine) {
			$eLog->puts('(%s) **TRACE** %s', get_class($e), $traceLine);
		}
	}
	
	require_once FLUX_CONFIG_DIR.'/error.php';
	define('__ERROR__', 1);
	include $errorFile;
}
?>

Das ist die index.php der Anwendung die eingebunden werden soll.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.616
Beiträge
1.538.358
Mitglieder
67.536
Neuestes Mitglied
QuestionMark
Oben