Zurück   WordPress Deutschland Forum > Support > Plugins und Widgets > Plugin-Entwicklung

Antwort
 
Themen-Optionen Ansicht
Alt 28.05.2008, 16:14   #1 (permalink)
PostRank: 4
 
Registriert seit: 23.01.2007
Ort: Erlangen
Beiträge: 205
Authentifizierung Admin-Session / AJAX / XmlHttpRequest

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:
-----------------------------------------------------------------------
TAGE | WOCHEN | MONATE | JAHRE
-----------------------------------------------------------------------

                   
                  ... hier dann Diagramm und Daten ...
                       für die jeweiligen Menüpunkte

-----------------------------------------------------------------------
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...
cywhale ist offline   Mit Zitat antworten
Alt 28.05.2008, 17:01   #2 (permalink)
WPD-Moderator
 
Benutzerbild von Alphawolf
 
Registriert seit: 31.05.2005
Ort: Gera Ghetto
Beiträge: 2.399
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-Code:
function deine_function( var1, var2 ) {
	var sack = new sack(
	http://www.domain.de/wp-admin/admin-ajax.php);
	sack.execute = 1;
	sack.method = 'POST';
	sack.setVar( "action", "php_funktion" );
	sack.setVar( "var1", var1 );
	sack.setVar( "var2", var2 );
	sack.onError = function() { alert('Ajax error') };
	sack.runAJAX();
}
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-Code:
current_user_can'level_10' 
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...
__________________
FAQ // Doku // Erbreiterungen

Geändert von Alphawolf (28.05.2008 um 17:04 Uhr).
Alphawolf ist offline   Mit Zitat antworten
Alt 28.05.2008, 17:18   #3 (permalink)
PostRank: 4
 
Registriert seit: 23.01.2007
Ort: Erlangen
Beiträge: 205
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
cywhale ist offline   Mit Zitat antworten
Alt 28.05.2008, 19:17   #4 (permalink)
WPD-Moderator
 
Benutzerbild von Alphawolf
 
Registriert seit: 31.05.2005
Ort: Gera Ghetto
Beiträge: 2.399
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-Code:
function deine_php_funktion() {
    if( !
current_user_can'level_10' ) ) {
        
wp_die(_e('Error'));
    }
    global 
$wpdb;
    
$welchertab intval($_POST['var1']);
    
$weitere_var $_POST['var2'];
    
    
$q $wpdb->query("SELECT * FROM $wpdb->posts WHERE lala = " $weitere_var);
}

if( 
function_exists('add_action') ) {
    
add_action('wp_ajax_deine_php_funktion''deine_php_funktion' );

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.
__________________
FAQ // Doku // Erbreiterungen
Alphawolf ist offline   Mit Zitat antworten
Alt 28.05.2008, 20:35   #5 (permalink)
PostRank: 4
 
Registriert seit: 23.01.2007
Ort: Erlangen
Beiträge: 205
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 ?
cywhale ist offline   Mit Zitat antworten
Alt 31.05.2008, 14:57   #6 (permalink)
PostRank: 4
 
Registriert seit: 23.01.2007
Ort: Erlangen
Beiträge: 205
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?
cywhale ist offline   Mit Zitat antworten
Alt 31.05.2008, 15:24   #7 (permalink)
WPD-Moderator
 
Benutzerbild von Alphawolf
 
Registriert seit: 31.05.2005
Ort: Gera Ghetto
Beiträge: 2.399
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?
__________________
FAQ // Doku // Erbreiterungen
Alphawolf ist offline   Mit Zitat antworten
Alt 31.05.2008, 21:58   #8 (permalink)
PostRank: 4
 
Registriert seit: 23.01.2007
Ort: Erlangen
Beiträge: 205
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.
cywhale ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:45 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 | Impressum | Ein Inpsyde.com Projekt