Ik heb een vraag of iets mogelijk is.

Ik heb de volgde opstelling:

Een server met daar op een php server met eeen file waar php functions op staan. Nu wil ik dit betand inladen op mijn localwebserver en dan de functies aanroepen om te gebruiken.

SERVER:
API.php

<?php

function random_password() {

$alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";

$pass = array(); //remember to declare $pass as an array

$alpha_length = strlen($alphabet) - 1; //put the length -1 in cache

for ($i = 0; $i < 8; $i++) {

$n = rand(0, $alpha_length);

$pass[] = $alphabet[$n];

}

return implode($pass); //turn the array into a string

}

?>

locaal:

test_locaal.php

<?php

include "http://***api.new*******.nl/API.php";

print_r(random_password());
?>

Ik krijg de volgde foutmelding

Fatal error: Call to undefined function random_password() in E:\Webserver\root\API\test_online.php on line 5
nee, zo werkt dat niet.
Als je op die manier een script aanroept dan krijg je gewoon de output van dat script. (waarschijnlijk gewoon een lege string.

Het zou wel kunnen als je het bestand hernoemd naar API.txt

Maar dat is niet hoe een API werkt (of zou moeten werken).

Wat je beter doet:

noem dat bestand gewoon "functions.php".

Maak een bestand api.php aan

roep het aan met http://jouwapiurl.nl/api.php?do=get_random_password


api.php:

<?php

include 'functions.php';

switch(filter_input(INPUT_GET, 'do')) {

case 'get_random_password':
echo random_password();
break;

}
?>

Maar het liefst dan uitbreiden met opties als "verstuur het antwoord als json", "beveilig het gebruik met een password" etc.
Klinkt als een goed oplossing nu zit ik allen nog met het volgde probleem:


Er zijn ook functions met parameters Hoe kan ik die mee geven ?


<?php
function get_date($plus_days = 0) {



date_default_timezone_set('CET');

$date = date("Y-m-d H:i:s", strtotime("+$plus_days day"));



if(!empty($date)){

return $date;

}else{

return false;

}

}

?>
jouwapi.nl/api.php?do=get_a_date&p=5

(de naam van de functie hoeft niet gelijk te zijn aan de inhoud van $_GET['do'])

Maar kijk eens naar "webservice"
Dat is wat je in feite bouwt

Reageren