Zum Inhalt springen

Kleines eID Problem, DB connect in Skript

Erstellt am 21. Oktober 2013 · 2 Antworten · letzte Antwort am 22. Oktober 2013

Tags: TYPO3 4.x, Frage

Lycanthropy ·

Hey zusammen,

vielleicht kann mir jemand einen Tipp oder Denkanstoß geben, habe schon ziemlich viel Kaffee und Google bis jetzt investiert 😉

Ich realisiere gerade einen Dateiupload innerhalb einer Extension, dessen weitere Verarbeitung über ajax XMLHttpRequest läuft. Ich rufe darin ein php Skript auf, das Infos zum Upload (Dateiname, Checkboxwerte etc.) in eine TYPO3 Tabelle schreiben soll.

Das Skript wird auch aufgerufen aber die Verbindung zur DB wird nicht hergestellt. Habe es daher mit eID probiert (und den Hinweisen zum eID Mechanismus auf http://www.typo3-tutorials.org/cms/eid-mechanismus.html). Dann kommt allerdings im Log der Fehler, dass die tslib_eidtools nicht gefunden werden kann. Vielleicht kann mir jemand einen Tipp geben, ob ich da vielleicht irgendwo einen Denkfehler drin habe, wäre wirklich dankbar. In allen anderen Dateien der Extension habe ich keine Probleme mit dem DB Zugriff.

ext_localconf.php

$TYPO3_CONF_VARS['FE']['eID_include']['fupload'] = 'EXT:mm_exchange/pi1/exchange_upload.php';

pi1/exchange_upload.php (mit ajax)

$GLOBALS['TSFE']->additionalFooterData[$this->prefixId] = '
...
var formdata = new FormData();
formdata.append("file1", file);	
...
var ajax = new XMLHttpRequest();
ajax.open("POST", "http://www.t3umgebung.com/typo3conf/ext/mm_exchange/pi1/file_upload_parser.php?eID=fupload");
ajax.send(formdata);
...
';

pi1/file_upload_parser.php (hier keine DB Verbindung)

tslib_eidtools::connectDB(); //Connect to database
...
//in db schreiben
$eintrag = "INSERT INTO tx_mmexchange_content (...)";
$eintragen = mysql_query($eintrag);
Lycanthropy ·

Problem gelöst, mit folgendem Code hat es dann funktioniert... vielleicht hilft es ja auch noch wem anders:

define('PATH_base', "Pfad zu TYPO3");
define('PATH_t3lib', PATH_base.'/t3lib/');
define('PATH_typo3conf', PATH_base.'/typo3conf/');
require_once(PATH_typo3conf.'localconf.php');
require_once(PATH_t3lib.'class.t3lib_db.php');
require_once(PATH_t3lib.'class.t3lib_div.php');
$GLOBALS['TYPO3_DB'] = t3lib_div::makeInstance('t3lib_DB');
$GLOBALS['TYPO3_DB']->connectDB($typo_db_host, $typo_db_username, $typo_db_password, $typo_db);
jenses ·
Lycanthropy schrieb

Das Skript wird auch aufgerufen aber die Verbindung zur DB wird nicht hergestellt. Habe es daher mit eID probiert (und den Hinweisen zum eID Mechanismus auf http://www.typo3-tutorials.org/cms/eid-mechanismus.html). Dann kommt allerdings im Log der Fehler, dass die tslib_eidtools nicht gefunden werden kann. Vielleicht kann mir jemand einen Tipp geben, ob ich da vielleicht irgendwo einen Denkfehler drin habe, wäre wirklich dankbar. In allen anderen Dateien der Extension habe ich keine Probleme mit dem DB Zugriff.

Du brauchst einfach nur ein require_once(PATH_tslib . 'class.tslib_pibase.php'), dann funktioniert auch tslib_eidtools::connectDB():

require_once(PATH_tslib . 'class.tslib_pibase.php');
class tx_myclass_eid extends tslib_pibase {
  function eid_main() {
    $GLOBALS['TSFE']->fe_user = tslib_eidtools::initFeUser();
    tslib_eidtools::connectDB();
    ...
  }
}

Ist so übrigens auch auf http://www.typo3-tutorials.org/cms/eid-mechanismus.html beschrieben, wie ich gerade sehe 🙂