Wie über externes PHP-Script in Drupal einloggen und Session erstellen?
am 23.11.2013 - 20:22 Uhr in
Hallo,
ich möchte mich über ein externes Php Script in Drupal einloggen. Mein Drupal 7 ist unter http://develop.dev erreichbar, das PHP-Script liegt unter http://develop.dev/tools/testlogin.php.
Hintergrund: in /tools liegt ein NIcht-Drupal-System, das selbst den Login der User verwaltet. Ich möchte aber nach einem erfolgreichen Login dort zusätzliche Daten aus der Drupal-Datenbank zur Verfügung stellen. Deshalb soll nach dem erfolgreichen Login unter Tools automatisiert ein Login bei Drupal erfolgen.
So habe ich es probiert:
/*
* testlogin.php
*
*/
define('DRUPAL_ROOT', '/Applications/XAMPP/xamppfiles/htdocs_develop');
include_once '../includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
global $user;
//nur zum test -> login als admin
$uid = 1;
$user = user_load($uid);
$login_array = array ('name' => $user->name);
user_login_finalize($login_array);
echo "user is logged in? ".user_is_logged_in();
Das funktioniert, d.h. der user nr 1 wird eingelogged. Anschließend kann ich Drupal Funktionen ausführen.
Aber wenn ich tatsächlich http://develop.dev im selben Browser aufrufe, dann sieht es so aus, als ob ich doch nicht in Drupal eingelogged wäre. Hängt das vielleicht mit der Drupal Session zusammen?
Ich möchte in jedem Fall nach Login in Tools, dem automatischen Login in Drupal und dem Wechsel im Browser nach develop.dev tatsächlich auch in Drupal eingelogged sein.
Hat jemand einen Tipp für mich?
Danke & Grüße
Rhodes
- Anmelden oder Registrieren um Kommentare zu schreiben
drupal_session_regenerate() fehlt
am 24.11.2013 - 14:15 Uhr
Moin Rhodes,
so klappts (bei mir jedenfalls):
<?php
define('DRUPAL_ROOT', '/Applications/XAMPP/xamppfiles/htdocs_develop');
include_once '../includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
//Name und Password aus form
$uname = 'einname';
$upass = 'einpasswort';
global $user;
$account = user_authenticate($uname, $upass);
$user = user_load($account, TRUE);
drupal_session_regenerate();
//vielleicht noch ein redirect....
?>
Vielen Dank
am 07.12.2013 - 18:32 Uhr
für die Unterstützung.
Bei mir lag der Fehler an der fehlenden
$base_url='http://'.$_SERVER['HTTP_HOST'];
Wenn ich die angebe klappt das obige Script.
Viele Grüße
Rhodes
Dann setze den Thread doch
am 08.12.2013 - 00:40 Uhr
Dann setze den Thread doch noch auf gelöst....