Re: Redirect via GET is loosing characters

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ah, i thought to remember that the limit is lower on IIS than on Apache, maybe i've just some memory faults. ;)

GET is meant to define what to GET, not to define content. This sounds a bit academic, but remember that the GET-args are a part of the URI and so will also go into the http-log for example. One don't want to have 2kb per log-line. ;) Additionally, please think of the great talent of users to fuck things up: GET-args will become bookmarks, links etc. and WILL do funny things when overused (session-ids...). ;)


Daniel Brown schrieb:

Beating a dead horse here, since it's been mentioned twice already, but yeah --- $_SESSION's are the way to go with this.

<?
    session_start();

    $_SESSION['error'] = $error;
    $_SESSION['parameter'] = $parameter;

    header("Location:".$data[rurl]);
    exit;
?>

    And wherever you have your error handling, do:
<?
    session_start(); // If not called from a header.php-like start file.

    if($_SESSION['error']) {
        // Do something with $_SESSION['error'] and $_SESSION['parameter']
    }
?>

And for the record, it's not just the HTTP server that trims it, but the browser generally does, as well, to avoid things such as memory leaks, et cetera. Internet Exploder, for example, has had a limit of 2,083 total characters in a GET request, but the actual RFC for HTTP/1.1 has no limit for the protocol (RFC 2616 Section 3.2.1).

And slightly off-topic, but think about how much the web has changed in the last 20 years (well, 17, since the HTTP protocol came about in 1990).... and then think about the fact that it's all still based on nothing higher than version 1.1.

On 5/3/07, *Neo [GC]* <neo@xxxxxxxxxxxxxx <mailto:neo@xxxxxxxxxxxxxx>> wrote:

    Merlin schrieb:
     > Hi there,
     >
     > I am checking plausability inside a php script that receives a POST
     > submit. If an error occures the user should be redirected back, along
     > with his original data filled into the forms.
     >
     > There is a problem with this. As the GET method, which the
    redirect is
     > using, only allows a certain amount of characters, the text is always
     > cut down.
     >
     > I use this:
     > HEADER("Location:".$data[rurl]."?error=".$error.$parameter);
     >
     > Is there a way to redirect the user to the form and fill in large
    text?
     >
     > Thank you for your help,
     >
     > Best regards, Merlin
     >

    This is a normal behaviour. Webservers trim the GET-request at a
    certain
    length.

    You have several options:
    - don't do a redirect but return the form, with most clean frameworks it
    should be no problem to include the action wich generates the form
    - save the variables in a session, then send the redirect-header and
    clean the session after regenerating the form
    - save the variables in a cookie stored at the client and clean the
    cookie afterwards (ugly)


    Greetings,

    --
    Thomas 'Neo' Weber

    Webmaster
    GothNet.eu | Gothic-Chat.de

    --
    PHP General Mailing List (http://www.php.net/)
    To unsubscribe, visit: http://www.php.net/unsub.php




--
Daniel P. Brown
[office] (570-) 587-7080 Ext. 272
[mobile] (570-) 766-8107


--
Thomas 'Neo' Weber

Webmaster
GothNet.eu | Gothic-Chat.de

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux