2017-05-24 1 views
2

Auf this page Ich habe eine Reihe von MP3-Dateien als schön gestylten Boxen angezeigt.PHP: füge Elemente ID als Hash zu Facebook Anteil Link

Jede Box hat einen Facebook-Share-Button. Ich möchte jede Box-ID (mp3jWrap_0, mp3jWrap_1, etc) als Hash zu seinem Facebook teilen Link hinzufügen, so dass jedes Mal, wenn ein geteiltes Element von Facebook besucht wird, die URL Artikel Hash enthält.

Zu diesem Zweck ich den Code geschrieben haben:

<?php 
    $actual_link = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; 
    $actual_link = trim($actual_link, '/'); 
    $actual_link = $actual_link . '#mp3jWrap_' . $id; 
    echo '<li class="fb_share"><a href="http://www.facebook.com/sharer.php?u="' . $actual_link . '" title="Share on Facebook" target="_blank"><i class="fa fa-facebook"></i></a></li>'; 
?> 

Das Problem: die Zeichenfolge nach dem Hash (mit Hash enthalten) ist nicht in der URL, wenn Sie auf die Schaltfläche Aktien klicken. Warum?

+0

entfernen/vor dem Hash und versuchen Sie es. –

+0

Habe es einfach gemacht. Nichts hat sich geändert. –

+0

_ "Warum?" _ - weil Sie es versäumt haben, die richtige URL-Codierung anzuwenden. – CBroe

Antwort

0

Hier finden Sie die $actual_link Trog die urlencode() PHP-Funktion übergeben müssen. Also, sollten Sie den Code wie folgt aussehen:

echo '<li class="fb_share"><a href="http://www.facebook.com/sharer.php?u="' . urlencode($actual_link) . '" title="Share on Facebook" target="_blank"><i class="fa fa-facebook"></i></a></li>'; 

Dies geschieht, weil der Browser denken, dass der Hash für die Aktie Seite vorgesehen ist (der auf fb) nicht auf dem gemeinsam genutzten Link.

Ohne die urlencode würde der Anteil URL sein:

http://www.facebook.com/sharer.php?u=http://example.com/path/#mp3jWrap_id

Mit ihm codiert:

http://www.facebook.com/sharer.php?u=http%3A%2F%2Fexample.com%2Fpath%2F%23mp3jWrap_id

Und schließlich als ok Link interpretiert werden würde.

0

Sie müssen urlencode $ actual_link