How to pass URL in URL (as GET parameter) using PHP?

25,386

Solution 1

If you can't get rid of the restriction you can pass the url in 2 parts like this

http://www.linkebuy.com.br/linkebuy/parceiro?protocol=http&url=www.google.com

And then parse it on your code to make the full url for the redirect.

Solution 2

You should use urlencode when you pass anything as URL parameter

Share:
25,386
Ramon K.
Author by

Ramon K.

Updated on August 10, 2022

Comments

  • Ramon K.
    Ramon K. over 1 year

    I'm having some problems passing URL's as GET parameter. When I try to access:

    http://www.linkebuy.com.br/linkebuy/parceiro?url=http%3A%2F%2Fwww.google.com

    I get the following message:

    Unexpected error.

    However, if I go for:

    http://www.linkebuy.com.br/linkebuy/parceiro?url=123

    Everything works just fine (it redirects to an inexistent site - 123 -, of course, but it does the expected). By elimination I can say there's something wrong with the url parameter, but what is it?

    OBS: I'm using rawurlencode() to encode the URL.

    EDIT: Code you asked...

    In the first view, where the link is (http://www.linkebuy.com.br/notebook/detalhe?id=5):

    <!-- url() function just completes the right URL (production or development) -->
    <a href="<?php echo url('linkebuy/parceiro/?url=' . rawurlencode($l->getUrl()), true) ?>" class="<?php echo $leadClass ?> oferta" target="_blank">
        <?php echo $l->getNomeFantasia() ?>
    </a>
    

    When clicked the link redirects to an action (/linkebuy/parceiro), where happens the following (basicly nothing, just keeping in the framework):

    public function execute($request, $response) {
        $response->addParameter('url', rawurldecode($request->getParameter('url', ''))); //This creates $url in the view
        $response->setTemplate('site/linkebuy/lead-parceiro.php'); //Forwards to the view
    }
    

    It includes the view, lead-parceiro.php (above on the question, I link to this page), where the head contains:

    <script type="text/javascript">
        setInterval(function(){ window.location = '<?php echo $url ?>'; },3000);
    </script>
    
  • Ramon K.
    Ramon K. about 11 years
    YEAH! You're right! How can I get this fixed? I mean, fix the apache config.
  • Ateszki
    Ateszki about 11 years
    I'm not sure, this is probably a rewrite rule cheking your querystring. Look at the .htaccess files and the apache conf files to find it.
  • Ateszki
    Ateszki about 11 years
    Have a look at this answer, as your site is at hostgator, the accepted answer must be relevant stackoverflow.com/questions/10992219/…
  • Ramon K.
    Ramon K. about 11 years
    For those who are searching for an alternative answer, you can base64_encode the URL and base64_decode it later.