مشكلة بارسيورل () عندما يكون أحد المعلمات هو ورل

StackOverflow https://stackoverflow.com/questions/4969058

  •  12-11-2019
  •  | 
  •  

سؤال

أدعو النصي فب http://site.com/process.php أن يأخذ عنوان ورل باعتبارها واحدة من المعلمات. for=

http://site.com/process.php?for=http://www.anotherwebsite.com

ثم أفعل هذا وأحاول parse_url() ولكن بارسيورل () يعطي خطأ تحليل.

$uri = $_SERVER['REQUEST_URI']; // /process.php?for=http://www.anotherwebsite.com
parse_url($uri);

كيف يمكنني ترميز for المعلمة إما على الجانب المرسل (في ورل) أو على الجانب المتلقي (فب) بحيث parse_url() يفهم أنه مجرد المعلمة التي يحدث لتبدو وكأنها رابط?

هل كانت مفيدة؟

المحلول

حسنا ، أولا يجب عليك urlencode() ال for= المعلمة ، ثم في process.php, ، يمكنك ببساطة القيام بما يلي

$url = $_GET["for"];
$url = urldecode($url); // http://www.anotherwebsite.com

وهنا هي وظائف:http://php.net/manual/en/function.urlencode.php http://php.net/manual/en/function.urldecode.php

نصائح أخرى

قبل تضمين عنوان ورل الخاص بك باعتباره get المعلمة ، استخدام urlencode

$full_url = 'http://site.com/process.php?for=' . urlencode('http://www.anotherwebsite.com');

هذه الوظيفة مريحة عندما ترميز سلسلة لاستخدامها في الاستعلام جزء من عنوان ورل ، باعتبارها مريحة طريقة لتمرير المتغيرات إلى التالي الصفحة.


لعكس نتيجة urlencode, ، استخدم urldecode.كما أشار ماريو في تعليق أدناه, $_GET تم بالفعل فك تشفير المعلمات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top