If I were trying to implement a page for an ErrorDocument directive for a 500 error, and I wanted to get the post data from the users request that caused the error, how could I get this information back from Apache or Embperl? I am under the impression that using $req_rec->content() will not work, nor will $req_rec->prev()->content(), am I right? It seems that the data is consumed already by the time I get the request object and %fdat is empty.
This what i do:
1. in httpd.conf PerlSetEnv EMBPERL_OPTIONS 262144 # For optReturnError (see perldoc HTML::Embperl) ErrorDocument 500 /errors/500.ego
2. If you are using EmbperlObject put this in your template file, replacing the usual Execute('*'):
[-
my @errors;
Execute({inputfile => '*', errors => [EMAIL PROTECTED]);
if (@errors) {
Execute('Erro_notificar.epr', [EMAIL PROTECTED]);
}
-]
3. In the file "Erro_notificar.epr": [- $req = shift; $errors = shift @param;
# Do something with the errors, dump, mail... -]
4. When an error occurs your visitors will be redirected to the ErrorDocument file but not all errors will be trapped by the template file so in your "/errors/500.epo" you should also capture other errors with "pnotes". In /errors/500.epo:
<html> ... Sorry for the error ... </html>
[- # This is needed to catch other errors not trapped by the template file. if ($req_rec && ($prev = $req_rec->prev)) { $errors = $prev->pnotes('EMBPERL_ERRORS'); if ($errors && @$errors) { unshift @$errors, 'Capturado via pnotes!'; Execute('Erro_notificar.epr', $erros); } } -]
With this technique you can dump %ENV, %fdat and %udat in a debug mail.
I hope this is clear. I use EmbperlObject so my solution fits best with it.
-- Luiz Fernando B. Ribeiro Engenho Soluções para a Internet
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]