summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
a180f0b)
- Detection of SSL encrypted HTTP (HTTPS) by checking the HTTPS environment
variable
- Check if the server listens on the default port or not
- Support for query string parameters with multiple values - thanks a lot to
Andre Malo (n.d. parker)!
- Encode non-ASCII-chars and special chars in the query string
- Using virtual_host() from the CGI module (has some advantages)
# Some shared sub routines
#
# Author: Patrick Canterino <patshaping@gmx.net>
# Some shared sub routines
#
# Author: Patrick Canterino <patshaping@gmx.net>
-# Last modified: 2004-02-24
+# Last modified: 2004-07-12
#
use strict;
use vars qw(@EXPORT);
#
use strict;
use vars qw(@EXPORT);
+use CGI qw(redirect
+ escape
+ virtual_host
+ https);
+
use Cwd qw(abs_path);
use File::Spec;
use Cwd qw(abs_path);
use File::Spec;
devedit_reload
equal_url
file_name
devedit_reload
equal_url
file_name
upper_path);
# check_path()
upper_path);
# check_path()
sub devedit_reload($)
{
my $params = shift;
sub devedit_reload($)
{
my $params = shift;
- while(my ($param,$value) = each(%$params))
+ # Detect the protocol (simple HTTP or SSL encrypted HTTP)
+ # and check if the server listens on the default port
+
+ my $protocol = "";
+ my $port = "";
+
+ if(https)
- push(@list,$param."=".$value);
+ # SSL encrypted HTTP (HTTPS)
+
+ $protocol = "https";
+ $port = ($ENV{'SERVER_PORT'} == 443) ? "" : ":".$ENV{'SERVER_PORT'};
+ else
+ {
+ # Simple HTTP
+
+ $protocol = "http";
+ $port = ($ENV{'SERVER_PORT'} == 80) ? "" : ":".$ENV{'SERVER_PORT'};
+ }
+
+ # The following code is grabbed from Template::_query of
+ # Andre Malo's selfforum (http://sourceforge.net/projects/selfforum/)
+ # and modified by Patrick Canterino
+
+ my $query = '?'.join ('&' =>
+ map {
+ (ref)
+ ? map{escape ($_).'='.escape ($params -> {$_})} @{$params -> {$_}}
+ : escape ($_).'='.escape ($params -> {$_})
+ } keys %$params
+ );
+
+ # Create the redirection header
- my $query = join("&",@list);
- my $header = redirect("http://$ENV{'HTTP_HOST'}$ENV{'SCRIPT_NAME'}?$query");
+ my $header = redirect($protocol."://".virtual_host.$port.$ENV{'SCRIPT_NAME'}.$query);