1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Authentifizierung Admin-Session / AJAX / XmlHttpRequest

Dieses Thema im Forum "Plugin-Vorstellung" wurde erstellt von cywhale, 28. Mai 2008.

  1. cywhale

    cywhale Well-Known Member

    Registriert seit:
    23. Januar 2007
    Beiträge:
    205
    Zustimmungen:
    0
    Hallo.
    Ich plane gerade die Überarbeitung meines Statistikplugins, die Grundidee ist es statt vieler einzelner Adminseiten alle Satistikausgaben übersichtlich auf einer Seite zu plazieren.

    Beispiel 'Besuche':
    Man stelle sich ein Tab-Menü mit unterhalb gelegenem Datenfenster vor
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Das Ganze jeweils für Besucher, Referer, Suchmaschinen, Suchworte, Browser/-Versionen,Artikel- und Seitenaufrufe, Visit-Rohdaten,...
    Statt nun alle Daten per MySQL komplett auszulesen und zu verarbeiten (Overkill bei grösserer Datenmenge) und in versteckte DIVs zu packen habe ich mir überlegt dass man bei Klick auf einen TAB die Daten per externem Script generieren lassen könnte und dann per XmlHttpRequest in das DIV laden könnte. Benutzt werden soll hierfür Ajax Tabs Content documentation
    sofern Lizenzkompatibel, muss ich noch gucken.

    Zur Frage:
    Wenn die Daten/Diagramme von einem externen Script generiert werden sollen
    - Wie sichere ich das externe Script ab (nur Benutzung durch Admin) ?
    - Wie bekomme ich am günstigsten/schnellsten die Datenbankverbindung (über include() der wp-config) ?


    V.a. die Absicherung ist mein grosses Problem, weiss da jemand Näheres? Ich suche mir einen Wolf und kann absolut nichts finden...
     
  2. Alphawolf

    Alphawolf Well-Known Member
    Ehrenmitglied

    Registriert seit:
    31. Mai 2005
    Beiträge:
    3.315
    Zustimmungen:
    0
    Also ich arbeite da mit WP-Bordmitteln, sprich SACK und jQuery. Die werden eh schon im Admin-Bereich instanziert, von daher kann man die nutzen ohne neue Frameworks dazupacken zu müssen.

    Den Aufruf starte ich z.B. mit:
    HTML:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Damit werden POST-Variablen an eine PHP-Funktion "php_funktion) übergeben, mit der du alle WP-Funktionen (auch den DB-Wrapper $wpdb) zur Abfrage des User-Levels nutzen kannst etc.. zur Abfrage ob jemand Admin ist, z.B.
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    oder was meinst du mit 'absichern'?

    Btw, als Tabs würde ich auch auf jQuery setzen: jQuery UI Tabs / Tabs 3
    Damit hast du die Möglichkeit, mit Callbacks zu arbeiten, um z.B. die DB-Abfrage bei Klick zu starten...
     
    #2 Alphawolf, 28. Mai 2008
    Zuletzt bearbeitet: 28. Mai 2008
  3. cywhale

    cywhale Well-Known Member

    Registriert seit:
    23. Januar 2007
    Beiträge:
    205
    Zustimmungen:
    0
    Hmja, die UI-Tabs sind definitiv interessant, danke.
    Von SACK habe ich bisher noch nicht viel mitbekommen, allgemein orientiert sich mein Wissen eher in Richtung PHP/XHTML/CSS und weniger AJAX/JS.

    AJAX in Plugins « WordPress Codex werde ich mir mal zu Gemüte führen müssen, ich bin mir nach grobem überfliegen aber nicht sicher ob es das ist was ich benötige:

    - User klickt im Adminbereich auf 'CyStats'
    ---> Container mit Tagesbesuchen wird angezeigt
    ------> User klickt auf Tab 'Wochenübersicht'
    ---------> jetzt soll die Seite nicht neu geladen sondern ein XmlHttpRequest an z.B. eine /plugins/cystats/build-graph.php mit Parameter z.B. 'week' abgesetzt werden.
    -------------> die build-graph.php muss jetzt eine DB-Verbindung aufbauen und vorher den Adminstatus prüfen.
    ----------------> Wenn alles ok, Diagramm o.Ä. generieren und zurückschicken, soll im gleichen Container angezeigt werden.

    So soll das Prinzip sein wenn möglich, bin für jede Hilfe dankbar :)

    Grüsse und danke
     
  4. Alphawolf

    Alphawolf Well-Known Member
    Ehrenmitglied

    Registriert seit:
    31. Mai 2005
    Beiträge:
    3.315
    Zustimmungen:
    0
    Ja, dafür ist SACK prädestiniert. Der Vorteil daran ist, dass du zum Verarbeiten der AJAX-Daten nicht eine extra PHP-Datei brauchst, sondern dies dann alles in der http://www.domain.de/wp-admin/admin-ajax.php geschieht. :)

    Ohne deinen Code zu kennen, mal ein Beispiel für deinen Fall.

    - Bei Klick auf ein Tab, wird als Callback die obige JS-Funktion deine_function() ausgeführt. Damit wird die Anfrage gestellt.

    - Die Anfrage bearbeitet eine PHP-Funktion
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Mit der add_action wird der wp-ajax.php gesagt, dass sie deine Funktion "aufnehmen" soll.
    Den Inhalt der Variablen $q kannst du dann in dein Tab/DIV schreiben lassen.

    Ist eigentlich recht einfach und ein mächtiges Feature für Entwickler von WP wie ich finde. :)
     
  5. cywhale

    cywhale Well-Known Member

    Registriert seit:
    23. Januar 2007
    Beiträge:
    205
    Zustimmungen:
    0
    Vielen Dank,mit diesem Ansatz kann ich schonmal arbeiten, werde mich einlesen, testen und mich ggf. hilfeschreiend oder dankend wieder hier melden :)

    Edit: Gibt es da abgesehen von der o.g. WordPress.Org-Seite noch andere Dokumentationen ?
     
  6. cywhale

    cywhale Well-Known Member

    Registriert seit:
    23. Januar 2007
    Beiträge:
    205
    Zustimmungen:
    0
    Hmja, der erste Schritt ist getan, JQuery und UITabs sind eingebaut und funktionieren. Frage: Die Anzeigefunktionen des Statistiksystems sind derzeit in eine eigene Klasse gekapselt die bei is_admin() eingebunden ( include() ) wird. Muss ich diese Klasse im Plugin instant(z?)iieren und an SACK irgendwie übergeben oder wie kann ich die einbinden? Ist evtl. sogar ein komplettes Rewrite des Systems dafür nötig?
     
  7. Alphawolf

    Alphawolf Well-Known Member
    Ehrenmitglied

    Registriert seit:
    31. Mai 2005
    Beiträge:
    3.315
    Zustimmungen:
    0
    Hmm, wenn du die Klasse "inkludiert" hast, ist sie im Admin-Scope vollständig verfügbar. Um sie zu nutzen, musst du die Klassen-Prozeduren nur aufrufen. Oder wie meinst du das?
     
  8. cywhale

    cywhale Well-Known Member

    Registriert seit:
    23. Januar 2007
    Beiträge:
    205
    Zustimmungen:
    0
    Genau so habe ich das gemeint, danke :)
    Versuche imernoch die tieferen Geheimnisse und Beziehungen in der Kombination PHP/jQuery|SACK zu verinnerlichen...
    lange ( jahrelang) habe ich alles was mit Javascript zu tun hat abgelehnt, so langsam fängt es an Spass zu machen... Danke nochmal.
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden