Tienes que usar la función urlencode() aplicada al valor de esa variabel que pueda tener espacios, comillas .. acentos .. etc .. para que sea un URL standar.
Código PHP:
$mensaje=urlencode("paso algo muy feo");
header("Location: error.php?texto=$mensaje");
exit;
Y si trabajas ese tipo de variables de control usando por ejemplo indices que usarás en arrays .. sería más optimo el código y no tendrías problemas por ejemplo con el tamaño de ese texto que vas a propagar a ese scritp que vas a redireccionar.
ejemplo:
Código PHP:
header("Location: error.php?codigo=2");
exit;
y en tu
error.php Código PHP:
// defines el array con los posibles mensajes de error ...
// Este mismo array lo puedes tener en un archivo externo y llamarlo bajo un include() ..
// También puede ser hasta un array bidimensional para trabajar con mensajes de error en vários idiomas .. etc .. etc ...
$errores[1] ="bla bla";
$errores[2] ="ocurrió algo muyy feo";
if (isset($_GET['codigo'])){
$codigo=$_GET['codigo'];
echo $errores[$codigo];
}
Un saludo,