A set of PHP functions for discovering, consuming and verifying the rel-me microformat. This is mainly useful for implementing RelMeAuth.
Install using Composer with ./composer.phar require indieweb/rel-me:dev-master
<?php
// Register the composer autoloader (assumed in future code samples.)
require 'vendor/autoload.php';
// This is a profile URL a user has given you, or you have parsed from a page somewhere.
$givenProfileUrl = 'http://waterpigs.co.uk';
list($resolvedProfileUrl, $isSecure, $redirectChain) = IndieWeb\relMeDocumentUrl($givenProfileUrl);
if ($isSecure) {
// $resolvedProfileUrl is the final resolved profile URL derived from the given one.
} else {
echo 'Your profile URL redirected insecurely (changed protocols)';
// Here you might use the $redirectChain (list of URLs) to present a more useful error message.
}
// This should be derived and checked using relMeDocumentUrl().
$resolvedProfileUrl = 'http://waterpigs.co.uk';
$relMeLinks = IndieWeb\relMeLinks($resolvedProfileUrl);
// A rel=me link from a silo profile page.
$inboundRelMeUrl = 'http://t.co/qhZqdUcTbQ';
// The derived profile document URL to test for matches of.
$meUrl = 'http://waterpigs.co.uk';
list($matches, $secure, $redirectChain) = IndieWeb\backlinkingRelMeUrlMatches($inboundRelMeUrl, $meUrl);
if ($matches) {
if ($secure) {
echo "{$inboundRelMeUrl} is a secure, valid link to {$meUrl}";
} else {
echo "{$inboundRelMeUrl} isn’t a secure link to {$meUrl} because it redirects insecurely (changes protocols)";
// Here you might use the $redirectChain (list of URLs) to present a more useful error message.
}
} else {
echo "None of that silo backlink’s redirect chain match {$meUrl}";
}
string $url = IndieWeb\unparseUrl(array $parsedUrl)
takes the output of coreparse_url()
and makes it into a URL againstring $url = IndieWeb\normaliseUrl($url)
normalises a URL by parsing, then unparsing itlist(string $body, array $headers, array $info) = IndieWeb\httpGet($url)
performs a basic HTTP GET on a URLstring $nextUrl | null = IndieWeb\followOneRedirect($url)
fetches a URL and returns the redirect URL if it’s a redirect, elsenull
bool $match = IndieWeb\urlsMatchOtherThanScheme($url1, $url2)
compares two URLs and returns whether or not they are the same, ignoring differences in their scheme
Run the test suite with ./vendor/bin/phpunit
There’s also an experimental HTML+microformats test suite which can be run with ./tests/html-test-runner.php
- Update dependencies, including php-mf2 v0.5.0
- Update CI to Github Actions
- Initial extraction from indiewebify.me, conversion into a composer package