2017-11-20 2 views
0

Ich versuche, URL zu analysieren und Wert daraus zu extrahieren. Mein URL-Wert ist www.mysite.com/register/?referredby=admin. Ich möchte den Wert admin von dieser URL erhalten. Dafür habe ich folgenden Code geschrieben. Es gibt mir Wert referredby=admin, aber ich möchte nur admin als Wert. Wie kann ich das erreichen? Unten ist mein Code:PHP Parse URL von der aktuellen URL

<?php 
    $url = $current_url="//".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
    setcookie('ref_by', parse_url($url, PHP_URL_QUERY)); 
    echo $_COOKIE['ref_by']; 

?> 
+2

http://php.net/manual/en/function.parse-str.php – CBroe

Antwort

-1

Ist das nicht eine wirklich saubere Lösung, aber man kann so etwas wie versuchen:

$url = "MYURL"; 
$parse = parse_url($url); 
parse_str($parse['query']); 

echo $referredby; // same name of the get param (see parse_str doc) 

PHP.net: Warnung

Mit dieser Funktion ohne das Ergebnis Parameter hochgradig DISCOURAGED und DEPRECATED ab PHP 7.2.

Das dynamische Setzen von Variablen im Funktionsumfang hat genau die gleichen Probleme wie register_globals.

Lesen Sie den Abschnitt zur Sicherheit der Verwendung von Globalen Registern, die erklären, warum es gefährlich ist.

+0

thnks funktioniert für mich – Mithu

+1

Das Handbuch legt explizit fest, dass mit ['parse_str'] (https://secure.php.net/manual/function.parse-str.php) Ohne den Parameter result wird ** entmutigt ** und wird ** mit v7.2 ** veraltet. Angabe: * "Dynamisch Variablen im Funktionsumfang zu setzen leidet unter genau den gleichen Problemen wie register_globals." * – Yoshi

+0

Deshalb habe ich gesagt, das ist nicht sauber und zu überprüfen doc –

0
$referred = $_GET['referredby']; 
0
$referred = "referredby=admin"; 
$pieces = explode("=", $referred); 
echo $pieces[1]; // admin 
+3

Während dieser Code die Frage beantworten kann, einen zusätzlichen Kontext zu liefern, warum und/oder wie dieser Code die Frage beantwortet, verbessert seinen langfristigen Wert. – Isma

+0

Ich werde den Grund für diese Antwort das nächste Mal erklären. Prost. –

+1

Sie können diese Antwort bearbeiten und hinzufügen :) – Martijn

1

Sie parse_str() Funktion nutzen zu können.

$url = "www.mysite.com/register/?email=admin"; 
$parts = parse_url($url); 
parse_str($parts['query'], $query); 
echo $query['email']; 
1

diesen Code Versuchen Sie,

$url = "www.mysite.com/register/?referredby=admin"; 
 
$parse = parse_url($url, PHP_URL_QUERY); 
 
parse_str($parse, $output); 
 
echo $output['referredby'];

+0

es funktioniert auch in PHP 7.2. Ich habe eine Lösung für das gleiche –

+0

Sicher. Und dann kannst du niemals updaten, weil das kaputt geht. Wenn Funktionen als veraltet markiert (und nicht empfohlen), sollten Sie sie nicht verwenden und sollten auch versuchen, Ersatz für den aktuellen Code zu finden, wenn Sie auf diese Funktionen stoßen. – Martijn

+0

Überprüfen Sie den aktualisierten Code mit Sitzung für den Wert aus Abfragezeichenfolge –