WordPress-plugin
De bedoeling is redelijk simpel. De plugin is bestemd voor mijn klanten (welke gebruikmaken van WordPress uiteraard), die op de beheerpagina van de plugin hun '***** ID' (account) kunnen koppelen, en op die manier op het ***** Dashboard o.a. hun facturen kunnen inzien.
Waar ik alleen rekening mee houd, is dat de klant niet op dezelfde domeinnaam zit. Bestanden moeten daarom van een ander domeinnaam worden geladen, namelijk *****.nl. Het databasebestand zet ik natuurlijk niet in de pluginmap, maar wil ik ook van *****.nl laden.
Op de beheerpagina staat een formulier met 2 invoervelden, ***** ID en toegangscode. De klant moet zijn klantnummer en toegangscode invoeren (welke random aangemaakt is), waarna het systeem verbinding moet maken. Het klantnummer en de toegangscode moeten in mijn database op *****.nl worden geverifieerd, en zodra groen licht is gegeven wordt een 'OK' in dezelfde database opgeslagen waarna op het Dashboard alles geladen wordt.
Ik hoop dat het verhaal een beetje duidelijk is, en ook wat mijn probleem is. Hoe krijg ik die verbinding met de database terwijl deze op een andere website staat? En hebben jullie nog tips etc.?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
define('BlockDirectAccess',true);
global $perms;
$perms='manage_options';
function G_Dashboard(){
global $perms;
if(!current_user_can($perms)){
wp_die(__('<p>Deze pagina is alleen voor beheerders.</p>'));
}
echo '<div class="wrap">';
echo '<h1>Welkom bij de *****.nl WordPress-plugin</h1>';
echo '</div>';
}
function G_Manage(){
global $perms;
if(!current_user_can($perms)){
wp_die(__('<p>Deze pagina is alleen voor beheerders.</p>'));
}
$g_hidden='g_hidden';
$g_id='g_id';
$g_auth='g_auth';
$g_fname='*****id';
$g_maxlength=7;
?>
<div class="wrap">
<h1>Gekoppelde ***** ID</h1>
<form action="http://www.*****.nl/plugin/auth" method="post" name="<?php echo $g_fname; ?>">
<input type="hidden" name="<?php echo $g_hidden; ?>" maxlength=1 value="P">
<p>Uw ***** ID:</p>
<input type="text" name="<?php echo $g_id; ?>" maxlength=<?php echo $g_maxlength; ?>>
<p>Toegangscode:</p>
<input type="text" name="<?php echo $g_auth; ?>" maxlength=<?php echo $g_maxlength; ?>>
<input type="submit" value="Koppelen">
</form>
</div>
<?php
}
function G_ConfigureMainMenu(){
global $perms;
add_menu_page('***** Dashboard','***** Dashboard',$perms,'dashboard','G_Dashboard');
add_submenu_page('dashboard','Beheren','Beheren',$perms,'beheren','G_Manage');
}
add_action('admin_menu','G_ConfigureMainMenu');
?>
define('BlockDirectAccess',true);
global $perms;
$perms='manage_options';
function G_Dashboard(){
global $perms;
if(!current_user_can($perms)){
wp_die(__('<p>Deze pagina is alleen voor beheerders.</p>'));
}
echo '<div class="wrap">';
echo '<h1>Welkom bij de *****.nl WordPress-plugin</h1>';
echo '</div>';
}
function G_Manage(){
global $perms;
if(!current_user_can($perms)){
wp_die(__('<p>Deze pagina is alleen voor beheerders.</p>'));
}
$g_hidden='g_hidden';
$g_id='g_id';
$g_auth='g_auth';
$g_fname='*****id';
$g_maxlength=7;
?>
<div class="wrap">
<h1>Gekoppelde ***** ID</h1>
<form action="http://www.*****.nl/plugin/auth" method="post" name="<?php echo $g_fname; ?>">
<input type="hidden" name="<?php echo $g_hidden; ?>" maxlength=1 value="P">
<p>Uw ***** ID:</p>
<input type="text" name="<?php echo $g_id; ?>" maxlength=<?php echo $g_maxlength; ?>>
<p>Toegangscode:</p>
<input type="text" name="<?php echo $g_auth; ?>" maxlength=<?php echo $g_maxlength; ?>>
<input type="submit" value="Koppelen">
</form>
</div>
<?php
}
function G_ConfigureMainMenu(){
global $perms;
add_menu_page('***** Dashboard','***** Dashboard',$perms,'dashboard','G_Dashboard');
add_submenu_page('dashboard','Beheren','Beheren',$perms,'beheren','G_Manage');
}
add_action('admin_menu','G_ConfigureMainMenu');
?>
Iemand?
Ik zou het op een Wordpress forum proberen als hier geen reactie komt.
heeft niet zo veel met wordpress te maken in dat opzicht. opzetten van een API is de oplossing. je wilt niet poort 3306 openzetten en met een user/pass inloggen op die database en die gegevens ook nog eens in je plugin zetten. gewoon een GET/POST-request naar jouw sterretje.nl/apimap/bestand.php en dat bestand laten verbinden met je lokale database en vervolgens je data eruithalen en teruggeven.
Plus dat ik geprobeerd heb om dit op de server in te schakelen en dit het nog steeds niet deed... Is er geen alternatief?
oftewel, daar moet een tussenstap in zitten. een script op *.nl (Artificial Programming Interface; kortweg API) die op *.nl een verbinding legt met de database. jouw wordpress plugin 'praat' daar mee via bijvoorbeeld cURL (of file_get_contents als cURL uitgeschakeld staat) door bijvoorbeeld een GET of POST-request uit te voeren met de gevraagde gegevens.
Ik denk dat dat voor nu even een stap te ver is. Bedankt voor je reactie, ik kom hier later op terug.