2012-04-05 15 views
2

Ich habe den folgenden Code:Externe Links in CodeIgniter

<div><strong>Name: </strong><?php echo anchor('http://'.$link, $row->Name); ?></div> 

, die für einen Link ($ link) einen Benutzer einer Eingabe nimmt und legt die URL in einen Anker-Tag. Es wird jedoch nicht auf den externen Link umgeleitet, sondern lediglich die Basis-URL für die Site mit der gespeicherten URL geändert. Ich habe versucht, "http: //" an den Anfang des gesendeten Links hinzuzufügen, der funktioniert, wenn der Benutzer http nicht bereits in der Linkeingabe angegeben hat. Irgendein Rat, wie man das überwinden könnte, wäre erstaunlich.

+0

Welche Version von CodeIgniter sind Sie mit? Ich habe das gerade in Version 2.1 versucht und die Funktion 'anchor()' überprüft in der Tat, dass es sich um eine externe URL handelt, bevor anwendungsspezifische erstellt werden. – cchana

Antwort

4

Ja, per the documentation, anchor() erstellt Links basierend auf der URL Ihrer Website.

Wenn die Dinge funktionieren wie erwartet, wenn URLs mit http:// Präfix, aber Sie Probleme mit Benutzern manchmal http:// Hinzufügen und manchmal nicht, man kann einfach überprüfen Sie den Link, um zu bestimmen, ob es in Ordnung ist, oder wenn Sie müssen Voranstellen. Hier ist ein einfaches Beispiel mit strpos:

if(strpos($link, 'http') === FALSE){ 
    // link needs a prefix... 
    $link = 'http://' . link; 
} else { 
    // link is ok! 
} 

... verwenden CodeIgniter die prep_url() Funktion (dank @cchana für mich daran zu erinnern!):

Diese Funktion hinzufügen http: // wenn ein Schema in einer URL fehlt. Übergeben Sie die URL-Zeichenfolge an die Funktion wie folgt aus:

$url = "example.com"; 

$url = prep_url($url); 
+1

Oder Sie könnten die 'prep_url()' -Funktion von CodeIgniter verwenden, die sich darum kümmert – cchana

+0

@cchana: Ah, Sie haben Recht! Ich dachte * es gab eine CI-Funktion dafür, konnte mich aber nicht erinnern, was es war. Ich füge es meiner Antwort hinzu. Vielen Dank. –

Verwandte Themen