Wie kann ich parse_url in PHP, wenn es eine URL in eine string-variable?
Ich bin zwar ein PHP-newbie, so brauche ich etwas Hilfe.
Ich Schaffe ein selbst gestaltetes Partnerprogramm für meine Website und haben die Möglichkeit, für ein affiliate-hinzufügen einer SubID, um Ihre link für die Sendungsverfolgung. Ohne die Kontrolle über das, was eingetragen ist, habe ich getestet, verschiedene Szenarien und einen Fehler gefunden, wenn eine vollständige URL eingegeben werden (d.h. "http://example.com").
In meiner PHP, die ich greifen kann, die variable aus dem string kein problem. Mein problem kommt aus, wenn ich die Referrer-URL und analysiert (da muss ich analysieren, die Referrer-URL, um die host-Mähne für andere Verwendungen). Code unter:
$refURL = getenv("HTTP_REFERER");
$parseRefURL = parse_url($refURL);
FUNKTIONIERT, wenn eingehende Links (zum Beispiel):
http://example.com/?ref=REFERRER'S-ID&sid=www.test.com
FEHLER, wenn der eingehende link (beachten Sie den Zusatz "http://" hinter "sid="):
http://example.com/?ref=REFERRER'S-ID&sid=http://www.test.com
Hier ist die Warnung:
Warnung: parse_url(/?ref=REFERRER-ID&sid=http://www.test.com) [function.parse-url]: Unable to parse url in /home4/'Verzeichnis'/public_html/hosterdoodle/header.php auf der Linie 28`
Irgendwelche Ideen auf, wie die parse-url-Funktion wird ausgelöst, wenn jemand beschließen, eine URL in eine variable? (Habe ich tatsächlich getestet, das problem bis zu dem Punkt, es wirft den Fehler mit so wenig wie ":/" in die variable)
Es kann verworfen werden, da ich schon ziehen Sie die Variablen. die Funktion parse_url muss nicht die Zeichenfolge, die Informationen in keiner Weise, da alles, was ich bin, ist, dass die verweisende Hosts root-URL (example.com, test.com).
Warum ist Ihre Warnung verpassen
http://example.com/
aus der Verknüpfung, die den Fehler generiert?..Ich bin nicht sicher, salathe. Ich Frage mich, warum es ziehen JEDER Teil der EINGEHENDEN LINK, wenn ich analysieren, die Referrer-URL.
Ich eliminiert alle
header('Location:')
Elemente aus meinem code um zu verhindern, dass eine looping-Problem werfen den query-string in der parse_url()
Funktion und das problem WEITERHIN besteht! Warum ist parse_url()
sogar einen Blick auf den query-string des eingehenden link-wenn es sein soll-Analyse wird die referrer-url? Es gibt keinen Weg, es sollte noch wissen, was der query-string ist auf der aktuellen Seite...richtig?InformationsquelleAutor Eric O | 2010-04-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den folgenden Teil des Codes :
ist in Ordnung, für mich (PHP 5.3.2), und gibt die folgende Ausgabe :
Sind Sie sicher, dass Sie vorbei sind eine vollständige URL
parse_url
?Wenn ich mit diesem Teil des Codes :
Bekomme ich die gleiche Warnung wie du :
Aber dies ist, wenn nicht die Weitergabe einer vollständigen URL...
Ich bin die Weitergabe der vollständigen URL, referrer, um analysiert zu werden (
http://referrer.com/
), und den link von Ihnen auf MEINER Website isthttp://example.com/?ref=REFERRER'S-ID&sid=http://www.test.com
. Warum ist der eingehende link noch sein als hier?Ahhh...dein Beispiel hat mir die Augen geöffnet, um eine mögliche looping-Ausgabe, die ich haben kann, würde die Schnur ins Spiel. Testen werde...
Es muss ein looping-Problem, da ich ein header('Location:') weiter unten reinigen Sie die URL-Adresse von dem Durcheinander der Variablen strings. Komisch wenn, Sie den test erneut aus, ohne "http://"):
$url = "/?ref=REFERRER'S-ID&sid=www.test.com"; $data = parse_url($url);
wird Es nicht schaffen einen Fehler. Es scheint jedoch, dass ich zu reinigen, den string, bevor Sie ausgeführt header('Location:') weiter unten.Die manual-page ( php.net/parse_url ) besagt, dass Partielle URLs werden auch akzeptiert,
parse_url()
versucht sein bestes, um zu analysieren, Sie korrekt. ;; ohnehttp://
am Anfang der URL, die Sie übergeben haben, umparse_url
ist eine partielle, und Sie tut Ihr bestes, um die Informationen in den mitgelieferten string;;http://
rechts in die Mitte, es muss ein seltsames Gefühl für ihn, nehme ich an ^^InformationsquelleAutor Pascal MARTIN
Warum nicht desinfizieren, die
$refURL
mithilfe str_replace, Streifen aus dem http://?Cool lassen Sie uns wissen, wie es geht.
Erstellt habe ich eine Vielzahl von Versionen von str_replace-Funktionen, aber ich habe festgestellt, dass es bestimmt noch einige Fehler, die anderswo verursacht mein problem. Die
parse_url()
wird immer die URL auch einfach in Ordnung, aber aus irgendeinem Grund ist es auch das greifen des eingehenden link-query-string und erzeugt die Fehlermeldung, wenn eine der Variablen eine URL. Es reagiert nicht auf str_replace. Danke für die Idee!InformationsquelleAutor Mike Keller