DRUPAL USER in mit externem php script verknüpfen
am 28.10.2009 - 17:08 Uhr in
hallo,
ich versuche gerade folgendes:
in einem externen php script soll man in einem formular tipps abegeben können. funktioniert auch soweit.
nun möchte ich dieses formular eingeloggten usern meiner drupalseite zugänglich machen. jedoch soll jeder user das formular nur einmal ausfüllen können. wie kann ich aus dem script auf die user tabelle in derdatenbank zugreifen und sagen: wenn der schon das formular ausgefüllt hat, darf er nicht mehr.
das script wird später in drupal intergriert...
hat jemand ne idee wie ich daran gehen kann??
also das formular und die einleseng der eingegeben daten in die datenbank funktioniert bereits.
jetz soll das ganze mit den usern von drupal verknüpft werden, sodass jeder nur einmal darf...
- Anmelden oder Registrieren um Kommentare zu schreiben
drupal_bootstrap
am 28.10.2009 - 17:30 Uhr
Füge folgendes am Anfang deines Umfragescriptes ein:
<?php
set_include_path(
get_include_path() . PATH_SEPARATOR . '/dateisystempfad/zur/drupal/installation'
);
require_once 'includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
?>
Jetzt kannst du über die globale Variable
$user
auf den aktuell angemeldeten Benutzer zugreifen. Damit kannst du dann in der Ergebnisstabelle deiner Umfrage nachschauen ob der Benutzer an der Umfrage bereits teilgenommen hat.--
vielen dank für die
am 28.10.2009 - 17:42 Uhr
vielen dank für die schnelle antwort.
habs leider noch net hinbekommen.
habe eine datei index.html - fürs formular (html)
config.php - für die datenbank daten
datei.php - für die datenübertragung
muss ich das in die config.php noch reinschreiben?
welchen pfad muss ich eintragen? den genauen pfad zu meiner drupalseite? oder zb. "../webprojekte/drupal"
meine config.php:
<?php
error_reporting(E_ALL); //Damit sagen wir PHP das es uns die Fehler
//Berichten soll, die auftreten, falls etwas nicht
// Klapt
set_include_path
(
get_include_path() . PATH_SEPARATOR . 'drupal'
);
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
define('MYSQL_HOST', 'db4free.net'); // Der host, standartmaessig
// immer Localhost
define('MYSQL_USER', 'max'); //Der Benutzername, bei z.b. ohost
// waere es der Angegebene
//Benutzername
define('MYSQL_PASS', '123445556'); //Das normale mysql PAsswort
define('MYSQL_DATABASE', 'datenbank'); //Der Name der Datenbank
?>
ich weiß is blöd gemacht mit so vielen datein aber kanns noch nicht besser. bin noch anfänger..
variable
am 29.10.2009 - 10:10 Uhr
wo muss ich die users variable denn enfügen. wenn das funktioniert bin ich echt ein großes stück weiter.
wer kann mir die letzten tipps geben? siehe eintrag vorher
danke und gruß
In der Tabelle mit den
am 29.10.2009 - 11:55 Uhr
habe eine datei index.html - fürs formular (html)
Das ist schlecht. Das heißt du kannst erst dann prüfen ob der Benutzer an der Umfrage schon teilgenommen hat, wenn er das Formular absendet. Benenne die Datei um in
index.php
und füge PHP-Quelltext ein, der bereits bei der Anzeige des Formulares prüft.Außerdem solltest nu nochmals prüfen, wenn du die Formulardaten entgegennimmst. Soweit ich das erkennen kann ist das die
datei.php
, auch wenn man diesen Schritt eher Formularverarbeitung nennt.welchen pfad muss ich eintragen? den genauen pfad zu meiner drupalseite? oder zb. "../webprojekte/drupal"
Füge in die
index.php
von Drupal folgendes am Anfang ein:<?php
echo dirname(__FILE__); exit;
?>
Rufe deine Drupal-Seite im Browser auf. Der Pfad der dort steht ist der Dateisystempfad zur Drupal-Installation. Entferne obigen Quelltext aus der
index.php
wieder.wo muss ich die users variable denn enfügen
In der Tabelle mit den Umfrageergebnissen brauchst du eine Spalte
uid
. In dieser Spalte speicherst du, welcher Benutzer dieses Ergebnis produziert hat. An dieuid
des Benutzers kommst du über$user->uid
heran. Wenn ein Benutzer an der Umfrage teilnehmen will prüfst du anhand von$user->uid
und der Spalteuid
in der Ergebnistabelle, ob der Benutzer an der Umfrage schon teilgenommen hat.--
Zwischenfrage: Offenbar
am 29.10.2009 - 12:23 Uhr
Zwischenfrage:
Offenbar beherrscht du ja schon PHP und HTML. Was spricht dann eigentlich dagegen ein Modul für dein Problem zu schreiben anstatt das ganze extern zu entwickeln und dann einzubinden?
Gibt ja reichlich Tutorials zum Erstellen von Modulen. Ich vermute mal, dass du auch ein Tippsystem für die nächste WM basteln willst, wie so viele andere in letzter Zeit :-)
Meines Erachtens nach ist ein Modul, dass dieser Aufgabe gerecht wird, nicht allzu kompliziert und recht einfach selbst zu bauen.
du schätzt mich etwas
am 29.10.2009 - 12:42 Uhr
du schätzt mich etwas falsch ein. ich kann html, jedoch kaum php und habe vor 2 wochen mit drupal angefangen. das tippspiel dient zum üben und natürlich später zum einsetzen in kleinem kreis.
ich muss erstmal die sache auf die beine stellen damit alles richtig funktioniert. davon bin ich leider noch weit entfernt.
falls alles irgendwann super hinhaut kann ich mich an die modulentwicklung ranmachen.
ich weiß nur wie ich es theoretisch umsetzen kann, leider...
immer noch
am 29.10.2009 - 14:19 Uhr
immer noch unklarheiten:
Warning: require_once(includes/bootstrap.inc) [function.require-once]: failed to open stream: No such file or directory in /mnt/web8/43/72/51757072/htdocs/roedsneu/wmtippspiel/ergebniseingabe/index.php on line 8
Fatal error: require_once() [function.require]: Failed opening required 'includes/bootstrap.inc' (include_path='.:/opt/RZphp5/includes:http://www.roeds-rock.de/wmtippspiel') in /mnt/web8/43/72/51757072/htdocs/roedsneu/wmtippspiel/ergebniseingabe/index.php on line 8
diese fehlermeldung kommt wenn ich den code aus dem 2ten eintrag oben in die index.php einfüge. (habe den dateipfad angegeben.)
und wo und wie in meinem script muss ich sagen schick auch die user id an die datenbank??
danke soweit und gruß
nickajack schrieb wenn ich
am 29.10.2009 - 14:12 Uhr
wenn ich den pfad zur drupal seite angeb, dann weiß mein php doch nicht wo die bootstrap liegt oder?
Nein, das weiß dein Script nicht und braucht es auch nicht zu wissen.
Durch
require_once 'include/bootstrap.inc'
bittest du PHP, ein Verzeichnis namensinclude
zu suchen, zu prüfen ob dort eine Datei namensbootstrap.inc
ist, und nötigenfalls einzubinden.Wo sucht nun PHP nach dem Verzeichnis namens
include
?In den Verzeichnissen, die in der Konfigurationseinstellung
include_path
angegeben sind. Zu dieser Konfigurationseinstellung hast du aber mittelsset_include_path
das Verzeichnis deiner Drupal-Installation hinzugefügt. PHP schaut also auch in diesem Verzeichnis nach, ob es dort eineinclude/bootstrap.inc
gibt.und wo und wie in meinem script muss ich sagen schick auch die user id an die datenbank??
Genau so wie du auch die restlichen Umfrageergebnisse an die Datenbank sendest.
--
habe gerade meinen eintrag
am 29.10.2009 - 14:22 Uhr
habe gerade meinen eintrag editiert. wenn ich es so mache mit dem pfad kommen die oben angegebenen fehlermeldungen.
was mache ich falsch?
danke für deine geduld. meine leided auch...:-)
nickajack
am 29.10.2009 - 14:35 Uhr
include_path='.:/opt/RZphp5/includes:http://www.roeds-rock.de/wmtippspiel'
Du hast eine URL im
include_path
stehen. Da gehört aber der Dateisystempfad hin. Wie du diesen ermittelst steht in meiner zweiten Antwort.--