help with variables in header location

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Filth

    help with variables in header location

    Hi

    this is probably very easy to sort but I want to do the following:-

    header( "Location:
    subscribe_form. php?name='.$_GE T['name'].'&email='.$_GE T['email'].'");

    but this pulls up the error:-

    Parse error: parse error, unexpected T_ENCAPSED_AND_ WHITESPACE, expecting
    T_STRING or T_VARIABLE or T_NUM_STRING in
    /home/httpd/vhosts/promotingmusic. co.uk/httpdocs/test/subscribe.php on line
    11

    the above being line 11. How would I go about encoding the URL properly. The
    reason I am doing this is that I am using a form that is being validated via
    another script and if there is a problem I wish to fiorward them back to the
    form with it pre filled in.

    Also is this the correct method for doing this.

    Cheers in advance.


  • Cameron

    #2
    Re: help with variables in header location

    Filth wrote:[color=blue]
    > Hi
    >
    > this is probably very easy to sort but I want to do the following:-
    >
    > header( "Location:
    > subscribe_form. php?name='.$_GE T['name'].'&email='.$_GE T['email'].'");
    >
    > but this pulls up the error:-
    >
    > Parse error: parse error, unexpected T_ENCAPSED_AND_ WHITESPACE, expecting
    > T_STRING or T_VARIABLE or T_NUM_STRING in
    > /home/httpd/vhosts/promotingmusic. co.uk/httpdocs/test/subscribe.php on line
    > 11
    >
    > the above being line 11. How would I go about encoding the URL properly. The
    > reason I am doing this is that I am using a form that is being validated via
    > another script and if there is a problem I wish to fiorward them back to the
    > form with it pre filled in.
    >
    > Also is this the correct method for doing this.
    >
    > Cheers in advance.
    >
    >[/color]

    You aren't closing your quotes


    header("Locatio n: subscribe_form. php?name='" . _GET['name'] . "&email="
    .....etc

    ~Cameron


    Comment

    • Filth

      #3
      Re: help with variables in header location

      > > header( "Location:[color=blue][color=green]
      > > subscribe_form. php?name='.$_GE T['name'].'&email='.$_GE T['email'].'");[/color][/color]
      [color=blue][color=green]
      > >
      > > Parse error: parse error, unexpected T_ENCAPSED_AND_ WHITESPACE,[/color][/color]
      expecting[color=blue][color=green]
      > > T_STRING or T_VARIABLE or T_NUM_STRING in
      > > /home/httpd/vhosts/promotingmusic. co.uk/httpdocs/test/subscribe.php on[/color][/color]
      line[color=blue][color=green]
      > > 11[/color]
      >
      > You aren't closing your quotes
      >
      >
      > header("Locatio n: subscribe_form. php?name='" . _GET['name'] . "&email="
      > ....etc[/color]

      Hi Cameron cheers for the quick response I notice in your example you missed
      off the $ in the get variable was this meant or is it a typo (I presume it
      was a typo) also I am presuming it is another type but you have closed a "
      using a ' followed by a "

      working on my presumptions I tried:-

      header("Locatio n: subscribe_form. php?name=" ". $_GET['name'] . '&email=' .
      $_GET['email'] ." );

      and

      header("Locatio n: subscribe_form. php?name=" ". $_GET['name'] ." '&email=' ".
      $_GET['email'] ." );

      which gave me the following error:-

      Parse error: parse error, unexpected '\"' in
      /home/httpd/vhosts/promotingmusic. co.uk/httpdocs/test/subscribe.php on line
      11

      Can you see what I am doing wrong?


      Comment

      • Shawn Wilson

        #4
        Re: help with variables in header location

        Filth wrote:[color=blue]
        >
        > Hi
        >
        > this is probably very easy to sort but I want to do the following:-
        >
        > header( "Location:
        > subscribe_form. php?name='.$_GE T['name'].'&email='.$_GE T['email'].'");
        >
        > but this pulls up the error:-
        >
        > Parse error: parse error, unexpected T_ENCAPSED_AND_ WHITESPACE, expecting
        > T_STRING or T_VARIABLE or T_NUM_STRING in
        > /home/httpd/vhosts/promotingmusic. co.uk/httpdocs/test/subscribe.php on line
        > 11
        >
        > the above being line 11. How would I go about encoding the URL properly. The
        > reason I am doing this is that I am using a form that is being validated via
        > another script and if there is a problem I wish to fiorward them back to the
        > form with it pre filled in.[/color]

        A few problems:

        Always url_encode your variables when they're in a header. Otherwise, if you
        have a space or another invalid character you'll get an error.
        You should use absolute URLs in the location header. Some browsers do not
        support relative URLs.
        Single and double quotes aren't interchangable (I assume you don't want single
        quotes in the email and name variables).
        Always close your quotes.

        header( "Location:
        http://yourdomain.com/script.php?name =".url_encode($ _GET['name'])."&email=".url encode($_GET['email']));

        Regards,
        Shawn
        --
        Shawn Wilson
        shawn@glassgian t.com

        Comment

        • Filth

          #5
          Re: help with variables in header location

          > header( "Location:[color=blue]
          >[/color]
          http://yourdomain.com/script.php?name =".url_encode($ _GET['name'])."&email=".url encode($_GET['email']));

          Thank you it worked perfectly except for the _ in the first urlencode.

          Just so that I know for future reference why does the first get variable
          have a . on either side but the second only has 1.

          Regarding the urlencode not being there I was thinking wether I should be
          doing that before infact I was looking at using rawurlencode() but wanted to
          get it working first before I started with that

          Cheers again

          Peter


          Comment

          • Shawn Wilson

            #6
            Re: help with variables in header location

            Filth wrote:[color=blue]
            >[color=green]
            > > header( "Location:
            > >[/color]
            > http://yourdomain.com/script.php?name =".url_encode($ _GET['name'])."&email=".url encode($_GET['email']));
            >
            > Thank you it worked perfectly except for the _ in the first urlencode.
            >
            > Just so that I know for future reference why does the first get variable
            > have a . on either side but the second only has 1.
            >
            > Regarding the urlencode not being there I was thinking wether I should be
            > doing that before infact I was looking at using rawurlencode() but wanted to
            > get it working first before I started with that[/color]

            Whoops. My mistake with the underscore.

            The "." means append, add or join. If you had more stuff to tack on the end it
            would be:

            blah...blah...b lah...email=".u rlencode($_GET['email'])."&foo=bar") ;

            But since you didn't, you did not need the dot.

            $string = "A"."B"."C" ; //$string is "ABC"
            $string = "A"."B"; //$string is "AB"
            $string = "A"."B".""; //$string is "AB". Extra dot is not needed

            Regards,
            Shawn
            --
            Shawn Wilson
            shawn@glassgian t.com

            Comment

            • Filth

              #7
              Re: help with variables in header location

              > The "." means append, add or join. If you had more stuff to tack on the
              end it[color=blue]
              > would be:
              >
              > blah...blah...b lah...email=".u rlencode($_GET['email'])."&foo=bar") ;
              >
              > But since you didn't, you did not need the dot.
              >
              > $string = "A"."B"."C" ; //$string is "ABC"
              > $string = "A"."B"; //$string is "AB"
              > $string = "A"."B".""; //$string is "AB". Extra dot is not needed[/color]

              Ahh brilliant explanation I now understand completely CHEERS :>

              Peter


              Comment

              Working...