Согласно RFC2616, раздел 3.2.1 :
Протокол HTTP не размещает
априори ограничение на длину URI.
Серверы ДОЛЖНЫ иметь возможность обрабатывать URI
любого ресурса, которому они служат, и ДОЛЖНЫ
быть в состоянии обрабатывать URI неограниченного
длина, если они предоставляют формы на основе GET
которые могут генерировать такие URI.
Сервер ДОЛЖЕН вернуть 414 (Request-URI
Too Long), если URI длиннее
чем может обработать сервер (см.
раздел 10.4.15).
С учетом вышесказанного многие браузеры не допускают URL-адреса бесконечной длины. Например, Internet Explorer имеет ограничение в 2 083 символа .
В вашем случае я бы предложил использовать переменную сеанса для хранения ошибки, а после ее отображения удалить ее.
Файл, выдающий ошибки:
<?php
$errors = array(
1 => 'Password must have between 6 and 20 characters',
2 => 'User name must contain only A-Z, a-z and 0-9 characters',
3 => 'Captcha code does not match',
);
session_start();
$_SESSION['errors'] = $errors;
header("Location: http://www.example.com/");
die();
Другая страница:
<?php
session_start();
if ( ! empty($_SESSION['errors']) )
{
// Do something with the errors.
// Remove the errors from the session so they don't get displayed again later.
unset($_SESSION['errors']);
}